Neuling in Sessions

AHBL

Grünschnabel
Hallo ich beschäftige mich zum erstenmal mit den sessions und habe ein kleines Problem wo ich nicht weiß, wie ich das lösen kann.

Ich habe folgenden Code:
PHP:
session_start();

if($_POST['gesendet']){
	$vorname = $_POST['vorname'];
    $fehler_msg = array();
    
    if(empty($vorname)){ $fehler_msg[] = "Bitte geben Sie ihren Vornamen an!";}
    
    $_SESSION["vorname"] = $vorname;
	
    if(empty($fehler_msg)){
    	header('Location: seite2.php');
        	return;
    }

    $vorname = $_SESSION["vorname"];
}

HTML:
<table>
                	<tr>
                    	<td>Vorname:</td>
                        <td><input name="vorname" type="text" size="20" id="vorname" value="<?php echo $vorname ?>" /></td>
                    </tr>
                </table>

			<div align="right"><input class="button" type="submit" name="gesendet" value="Weiter" /></form></div>
            <div align="left"><form method="POST" action="agbs.php"><input class="button" type="submit" value="zur&uuml;ck" /></form></div>

Wenn ich jetzt was in dem Feld Vorname eintrage und auf weiter gehe gelange ich auf die zweite Seite aber wenn ich dann zurück möchte über den Link zurück dann ist das Feld leer und ich weiß jetzt nicht ob das Feld noch bearbeitet werden muss für eine Session? Ich muss auch sagen, dass ich noch nicht lange mit PHP arbeite.

Liebe Grüße
 
(in einen eigenen Thread ausgelagert)

Hmm, ich sehe drei logische Fehler:
(1) Sessionvariablen werden nur geholt, wenn POST-Daten existieren. (zeile9 innerhalb der if-clause)
(2) Wenn POST-Daten existieren, werden die Sessionvariablen pauschal überschrieben (zeile3), obwohl da welche sein könnten.(zeile8)
(3) Weiterleitung funktioniert nur, weil POST-Daten da sind, nicht weil Session-Daten vorhanden sind.

Dein Code, Auszüge (mit logischen Anmerkungen)
PHP:
if($_POST['gesendet']){
    $vorname = $_POST['vorname'];
    $_SESSION["vorname"] = $vorname;
    
    if(empty($fehler_msg)){
        header('Location: seite2.php');
        return;
    }
    $vorname = $_SESSION["vorname"];
}
Ich würde grundsätzlich eine Funktion schreiben, die überprüft, ob Sessiondaten abrufbar sind und diesen Vorrang geben. Schau mal Hier: http://www.schattenbaum.net/php/sessions.php

mfg chmee
 
Es wäre auch gut, wenn du im HTML-Code die Session-Variable einliest:

PHP:
<td><input name="vorname" type="text" size="20" id="vorname" value="<?php echo isset($_SESSION['vorname']) ? $_SESSION['vorname'] : ''; ?>" /></td>
 
Zurück