Сесии и форми во PHP
Нека имаме две PHP датотеки. Да ја поставиме во
датотеката test1.php формата што ги прашува
корисникот два броја:
<form method="GET">
<input name="num1">
<input name="num2">
<input type="submit">
</form>
Во истата датотека ќе го поставиме кодот за обработка на формата. Во овој код ќе ги запишеме податоците од инпутите во сесијата:
<?php
session_start();
if (!empty($_GET)) {
$_SESSION['num1'] = $_GET['num1'];
$_SESSION['num2'] = $_GET['num2'];
}
?>
Важен детал: во датотеката кодот за обработка на формата мора да стои пред самата форма. Зошто: затоа што во овој код ние работиме со сесија, а тоа значи дека не смее да има никаков извод на екран пред тоа.
Сега да ја најдеме во датотеката test2.php
сумата на броевите зачувани во сесијата:
<?php
if (!empty($_SESSION)) {
echo $_SESSION['num1'] + $_SESSION['num2'];
}
?>
Во која последователност треба сето ова да
работи? Прво корисникот влегува на
страницата test1.php, ја пополнува формата
и кликнува на копчето. После тоа повторно се наоѓа
на test1.php, но веќе со испратени
податоци од формата. При тоа тој навлегува во условот,
во кој ние ги запишуваме податоците од формата во сесијата.
Потоа корисникот мора рачно да влезе на
страницата test2.php - и таму тој ќе ја види
сумата на внесените броеви.
Може да прашате: зошто толку да се комплицира? Бидејќи
можевме веднаш да ја испратиме формата на страницата
test2.php. Работата е во тоа што во овој
случај погодноста е во тоа што самата форма и кодот
за нејзина обработка се наоѓаат на иста страница.
Таквото нешто, се разбира, не е секогаш погодно, но понекогаш
потребно.
На една страница со помош на форма прашајте го корисникот за презиме, име и возраст. Запишете ги овие податоци во сесија. При влез на друга страница прикажете ги овие податоци на екран.