Doberman
Новичок
Не удаляются переменные сессий
есть такой скрипт регистрации (я все из него повыкидывал чтобы максимально упростить, главное структура осталась)
пользователь вызывает файл wizard.html
<?
session_start();
$_SESSION['action']='registration';
require $_SESSION['action'].".html";
?>
это типа главная страница, где инициализируется сессия, проводится соединение с базой данных (это я выкинул) ну и т.п.
он вызывает файл registration.html
<?
if (!isset($_SESSION['step']))
{
$_SESSION['step']=1;
}
if (isset($_GET['step']))
{
$_SESSION['step']=$_GET['step'];
}
require("./includes/step_".$_SESSION['step'].".inc");
?>
который в зависимости от значения переменной $_SESSION['step'] вызывает опеределенный шаг регистрации. Т.е. если пользователь только зашел то шаг=1, и подключается файл
step_1.inc
<?
if (isset($_GET['test']))
{
if ($_GET['test']==0)
{
$ERRORS[]="No entries found";
$_SESSION['errors']=$ERRORS;
header('Location: http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?'.SID);
exit;
}
$_SESSION['test2']='test';
unset($_SESSION['test2']);
$_SESSION['test']=$_GET['test'];
$_SESSION['step']=2;
header('Location: http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?'.SID);
exit;
}
else
{
echo('<a href="wizard.html?test=1">next</a><hr>');
echo('Errors:'.$_SESSION['errors'].'<br>');
unset($_SESSION['errors']);
}
?>
если пользователь только зашел, то сработает второе условие, и ему выведутся формы для заполнения, здесь я просто поставил ссылку на себя же с параметром test
когда пользователь нажмет на нее, то вызовется опять же этот скрипт, если все правильно увеличит шаг на 1 и запустит скрипт step_2.inc
<?
echo($_SESSION['errors'].'<br>');
echo($_SESSION['action'].'<br>');
echo($_SESSION['step'].'<br>');
echo($_SESSION['test'].'<br>');
echo($_SESSION['test2']);
?>
где ему предложат ввести что-нибудь еще, в данном случае, просто выводит данные.
так вот на первом шаге, если данные введены неправильно (к примеру test==0) шаг ее увеличивается, запускается снова этот скрипт, и выводится список ошибок(хранятся в массиве $_SESSION['errors']), которые мы формируем на стадии обработки, чтобы пользователь видел что надо исправить.
и удаляю этот массив чтобы ишибки не накапливались,
а он не удаляется.
и т.е. я ввожу wizard.html?test=0
мне выводит ссылку и ошибку, я нажимаю на ссылку и в файле step_2.inc вижу что массив с ошибками никак не удален.
там в файле step_1.inc я для теста инициализировал переменную $_SESSION['test2'] и тут же ее удалил, вот она прекрасно удалилась
никак не пойму в чем дело
php 4.2.3
есть такой скрипт регистрации (я все из него повыкидывал чтобы максимально упростить, главное структура осталась)
пользователь вызывает файл wizard.html
<?
session_start();
$_SESSION['action']='registration';
require $_SESSION['action'].".html";
?>
это типа главная страница, где инициализируется сессия, проводится соединение с базой данных (это я выкинул) ну и т.п.
он вызывает файл registration.html
<?
if (!isset($_SESSION['step']))
{
$_SESSION['step']=1;
}
if (isset($_GET['step']))
{
$_SESSION['step']=$_GET['step'];
}
require("./includes/step_".$_SESSION['step'].".inc");
?>
который в зависимости от значения переменной $_SESSION['step'] вызывает опеределенный шаг регистрации. Т.е. если пользователь только зашел то шаг=1, и подключается файл
step_1.inc
<?
if (isset($_GET['test']))
{
if ($_GET['test']==0)
{
$ERRORS[]="No entries found";
$_SESSION['errors']=$ERRORS;
header('Location: http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?'.SID);
exit;
}
$_SESSION['test2']='test';
unset($_SESSION['test2']);
$_SESSION['test']=$_GET['test'];
$_SESSION['step']=2;
header('Location: http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?'.SID);
exit;
}
else
{
echo('<a href="wizard.html?test=1">next</a><hr>');
echo('Errors:'.$_SESSION['errors'].'<br>');
unset($_SESSION['errors']);
}
?>
если пользователь только зашел, то сработает второе условие, и ему выведутся формы для заполнения, здесь я просто поставил ссылку на себя же с параметром test
когда пользователь нажмет на нее, то вызовется опять же этот скрипт, если все правильно увеличит шаг на 1 и запустит скрипт step_2.inc
<?
echo($_SESSION['errors'].'<br>');
echo($_SESSION['action'].'<br>');
echo($_SESSION['step'].'<br>');
echo($_SESSION['test'].'<br>');
echo($_SESSION['test2']);
?>
где ему предложат ввести что-нибудь еще, в данном случае, просто выводит данные.
так вот на первом шаге, если данные введены неправильно (к примеру test==0) шаг ее увеличивается, запускается снова этот скрипт, и выводится список ошибок(хранятся в массиве $_SESSION['errors']), которые мы формируем на стадии обработки, чтобы пользователь видел что надо исправить.
и удаляю этот массив чтобы ишибки не накапливались,
а он не удаляется.
и т.е. я ввожу wizard.html?test=0
мне выводит ссылку и ошибку, я нажимаю на ссылку и в файле step_2.inc вижу что массив с ошибками никак не удален.
там в файле step_1.inc я для теста инициализировал переменную $_SESSION['test2'] и тут же ее удалил, вот она прекрасно удалилась
никак не пойму в чем дело
php 4.2.3