Sesje i formularze w PHP
Załóżmy, że mamy dwa pliki PHP. W pliku
test1.php umieśćmy formularz pytający
użytkownika o dwie liczby:
<form method="GET">
<input name="num1">
<input name="num2">
<input type="submit">
</form>
W tym samym pliku umieśćmy kod przetwarzania formularza. W tym kodzie zapiszemy dane pól formularza do sesji:
<?php
session_start();
if (!empty($_GET)) {
$_SESSION['num1'] = $_GET['num1'];
$_SESSION['num2'] = $_GET['num2'];
}
?>
Waży niuans: w pliku kod przetwarzania formularza powinien znajdować się przed samym formularzem. Dlaczego: ponieważ w tym kodzie pracujemy z sesją, a więc nie powinno być żadnego wyjścia na ekran przed tym.
Teraz w pliku test2.php znajdźmy
sumę liczb zapisanych w sesji:
<?php
if (!empty($_SESSION)) {
echo $_SESSION['num1'] + $_SESSION['num2'];
}
?>
W jakiej kolejności to wszystko powinno
działać? Najpierw użytkownik wchodzi na
stronę test1.php, wypełnia formularz
i klika przycisk. Potem ponownie trafia
na test1.php, ale już z wysłanymi
danymi formularza. Przy tym trafia do warunku,
w którym zapisujemy dane formularza do sesji.
Następnie użytkownik powinien ręcznie wejść na
stronę test2.php - i tam zobaczy
sumę wprowadzonych liczb.
Możesz zapytać: po co tak kombinować? W końcu
można było od razu wysłać formularz na stronę
test2.php. Rzecz w tym, że w tym
przypadku wygoda polega na tym, że sam formularz i kod
jego przetwarzania znajdują się na jednej stronie.
Oczywiście, nie zawsze jest to wygodne, ale czasami
bywa potrzebne.
Na jednej stronie za pomocą formularza zapytaj użytkownika o nazwisko, imię i wiek. Zapisz te dane w sesji. Przy wejściu na inną stronę wyświetl te dane na ekranie.