PHP:在多步骤注册表单中正确使用会话

我做了一个 3 步(3 个不同的页面)注册过程:


第一步:用户提供基本信息(姓名、密码、性别、生日等)


第二步:用户提供额外信息(关于、职业、兴趣等),提交数据并获得验证链接


第三步:显示注册状态(成功或失败)


我使用会话主要存储信息。像这样的会话变量$_SESSION["step_one_complete"]告诉我上一步已完成,这是必需的。我在signup.php页面开头使用了以下代码,以便每次signup.php加载前一个会话数据时都会被清除:


<?php //signup.php(step one)


session_start();


//Clear previous session data

$_SESSION = array();


//I'm not sure about the two lines bellow

session_destroy();

//Restart session

session_start();


...

我需要我在代码中提到的两行吗?我是否正确使用了会话?还是有更好的方法来处理多步骤表单?谢谢!


元芳怎么了
浏览 178回答 1
1回答

慕标5832272

你只需要start_session,你不需要覆盖或销毁它。也许我没有正确理解这个问题,但是当您执行start_session() 时,您可以通过启动新会话或恢复现有会话来启用当前 php 脚本中的会话。我认为就您而言,这就是您所需要的。参考:PHP - session_start另外,我认为覆盖会话是不好的做法,您也可以删除您不打算删除的内容。如果你想重置你的变量,我建议你将它们存储到一个数组中,比如$_SESSION['form']['email']然后如果你想重置 make$_SESSION['form'] = array();我认为如果你制作这样的结构,你可以做得更好:function is_first_step_completed() // checks if the first step fields are filled or notfunction is_second_step_completed() // checks if the second step has all fields completedif (!is_first_step_completed()) {// show first step}而不是存储变量 is_first_step_completed。如果您使用这样的变量,则需要始终将其设为真或假。
打开App,查看更多内容
随时随地看视频慕课网APP