AW: PHP Formular, dass man weiterblättern kann
Hi,
um es mal präzieser auszudrücken:
dein
PHP:
$_SESSION['var'] = $_REQUEST['var'];
macht bei jedem Seitenaufruf folgendes:
Code:
- existiert $_GET['var']?
- wenn ja, übergebe den Inhalt von $_GET['var'] an $_SESSION['var'] und weiter im Script
- wenn nein, existiert $_POST['var']?
- wenn ja, übergebe den Inhalt von $_POST['var'] an $_SESSION['var'] und weiter im Script
- wenn nein, existiert $_COOKIE['var']?
- wenn ja, übergebe den Inhalt von $_COOKIE['var'] an $_SESSION['var'] und weiter im Script
- wenn nein, existiert $...['var']?
.
.
.
(die Reihenfolge, welche Superglobalen durchsucht werden, hängt von den Einstellungen in der php.ini ab)
Verwendest du nun bei jedem Seitenaufruf
PHP:
$_SESSION['var'] = $_POST['var'];
wirst du, sollte $_POST['var'] nicht gesetzt (und dein error_reporting eingestellt) eine Fehlermeldung vom Typ "Warning: Undefined variable ..." und $_SESSION['var'] wird nicht übergeben, die Variable ist also leer. Bleibt also immernoch das Problem, dass die Variable überschrieben wird. Um das zu vermeiden, überprüfen wir, ob $_POST['var'] gesetzt ist:
PHP:
if (isset($_POST['var']))
{
$_SESSION['var'] = $_POST['var'];
}
alternativ dazu kann man auch folgende Schreibweise verwenden (wer es bevorzugt...):
Code:
var = (Bedingung ? wenn true : wenn false);
Dann müsste die Zuweisung allerdings etwas erweitert werden:
PHP:
$_SESSION['var'] = (isset($_POST['var']) ? $_POST['var'] : (isset($_SESSION['var']) ? $_SESSION['var'] : ""));
Erst wird geprüft, ob $_POST['var'] existiert, wenn ja, diesen Wert übernehmen, wenn nein, prüfen, ob $_SESSION['var'] gesetzt wurde, wenn ja, diesen Wert zuweisen, wenn nein, leeren String zuweisen.
Hoffe, ich konnte ein wenig helfen, wenn nicht, dann, weiß ich auch nicht weiter
(ist ja schon spät und der Sauerländer mal in die Haia
)
Schöne Grüße aus dem Sauerland!
Chriss