使用会话的php多步骤表单的问题

时间:2011-05-31 19:11:38

标签: php forms session multi-step

我的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” “字段:以下执行我的页面覆盖$ _SESSION [”profilo“],其值为NULL,返回步骤1的if循环原因。 我该如何解决这个问题?

编辑: 为了便于获取信息:form1只有“profile”字段,form2有“periodic”,“from”,“to”,“weekdays”,form3有“start”,“expire”。

1 个答案:

答案 0 :(得分:1)

 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;
}