Проблема с многошаговой формой php с использованием сессий - PullRequest
0 голосов
/ 31 мая 2011

У меня проблема с многошаговой формой php. Мне нужно выполнить переключение между различными формами только на одной странице. На этой странице я переключаю следующие случаи:

 $_SESSION["profilo"]= $_POST["profilo"];
 $_SESSION["periodic"]=$_POST["periodic"];      
 $_SESSION["from"]=$_POST["from"];
 $_SESSION["to"]=$_POST["to"];
 $_SESSION["weekdays"]=$_POST["weekdays"];
 $_SESSION["start"]=$_POST["start"];
 $_SESSION["expire"]=$_POST["expire"];
$step = 1;

if(!isset($_SESSION["profilo"]))
{

    $step = 1;
}
elseif(isset($_SESSION["profilo"]) && !isset($_SESSION["periodic"]))
{

    $step = 2;
}
elseif(isset($_SESSION["periodic"]) && !isset($_SESSION["start"]))
{

    $step = 3;

}
else
{

    $step = 4;
}

тогда я выполняю инструкцию

WriteForm($step);

- это функция, которая переключает различные формы в зависимости от значения $ step. Проблема в том, что после второго шага он возвращает меня к первой форме, переходящей к шагу 3. Я думаю, проблема в том, что когда я нажимаю «Отправить» во второй раз, во второй форме у меня нет «profilo». "field: следующее выполнение моей страницы перезаписывает $ _SESSION [" profilo "] со значением NULL, возвращаясь к шагу 1 по причине цикла if. Как я могу решить эту проблему?

EDIT: для информации: у form1 есть только поле "profile", у form2 есть "period", "from", "to", "daysdays", form3 имеет "start", "expire".

1 Ответ

1 голос
/ 31 мая 2011
 if(isset($_POST["profilo"])) $_SESSION["profilo"]= $_POST["profilo"];
 if(isset($_POST["periodic"])) $_SESSION["periodic"]=$_POST["periodic"];      
 if(isset($_POST["from"])) $_SESSION["from"]=$_POST["from"];
 if(isset($_POST["to"])) $_SESSION["to"]=$_POST["to"];
 if(isset($_POST["weekdays"])) $_SESSION["weekdays"]=$_POST["weekdays"];
 if(isset($_POST["start"])) $_SESSION["start"]=$_POST["start"];
 if(isset($_POST["expire"])) $_SESSION["expire"]=$_POST["expire"];
$step = 1;

if(!isset($_SESSION["profilo"]))
{

    $step = 1;
}
elseif(isset($_SESSION["profilo"]) && !isset($_SESSION["periodic"]))
{

    $step = 2;
}
elseif(isset($_SESSION["periodic"]) && !isset($_SESSION["start"]))
{

    $step = 3;

}
else
{

    $step = 4;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...