Php Can';销毁和会话启动后的t地址$\会话数组()
我正在使用Php Can';销毁和会话启动后的t地址$\会话数组(),php,session,session-management,Php,Session,Session Management,我正在使用$\u SESSION存储多页表单中的数据。在我完成提交并结束会话之前,一切都进行得非常顺利,以防止在用户尝试重新输入表单时复制相同的表单数据。表单完成并提交后,终止会话并删除会话数据: $_SESSION = array(); setcookie(session_name(), '', time() - 42000); session_destroy(); 以下是: <?php session_start(); include "connect-moo.php"; $l
$\u SESSION
存储多页表单中的数据。在我完成提交并结束会话之前,一切都进行得非常顺利,以防止在用户尝试重新输入表单时复制相同的表单数据。表单完成并提交后,终止会话并删除会话数据:
$_SESSION = array();
setcookie(session_name(), '', time() - 42000);
session_destroy();
以下是:
<?php
session_start();
include "connect-moo.php";
$learning = true;
//get any post variables and save them to the session
foreach ($_POST as $key => $val) {
$_SESSION[$key] = $val;
}
sessionDump(); //dumps session to db
//check to see if step is set (in the post eg ?step=getaquote). If not, set it to current session step
if(!isset($_POST["step"])) {
if(isset($_SESSION['step'])) {
$_POST['step'] = $_SESSION['step'];
}
}
//show the page appropriate to the current step
if ($_SESSION['mode'] == 'edit' && $_SESSION['lastpage'] != "review" && $_SESSION['step'] != "session") {
$_SESSION['lastpage'] = 'review';
getReview();
}
else {
if($_SESSION['step'] != 'session') $_SESSION['lastpage'] = $_SESSION['step'];
switch ($_POST["step"])
{
case "session":
foreach($_SESSION as $key => $val){
echo $key.": ".$val."<br>";
//phpinfo();
}
echo "Post Data<br>";
foreach($_POST as $key => $val) {
$sval = mysql_real_escape_string($val);
$skey = mysql_real_escape_string($key);
echo $skey.": ".$sval."<br>";
}
break;
case "getaquote":
getAQuote();
break;
// and so on...
default:
start();
}
}
... (all of the abovementioned functions)
?>
你做错了
session\u destroy()
销毁与当前会话关联的所有数据。它不会取消设置与会话关联的任何全局变量,也不会取消设置会话cookie。要再次使用会话变量,必须调用session\u start()
为了完全终止会话(如注销用户),还必须取消设置会话id。如果使用cookie传播会话id(默认行为),则必须删除会话cookie<代码>设置cookie()可用于此
解决方案:
session_start();
session_unset();
session_destroy();
session_write_close();
setcookie(session_name(),'',0,'/');
session_regenerate_id(true);
它们是空的还是空的?我是唯一一个被这句话弄糊涂的人吗?需要看更多的代码,更具体地说,是那些不起作用的部分。@ColinMorelli我认为“什么都没有”不应该在那里。@user2091830:这里,我更新了我的答案。
0
的Cookie过期意味着“直到浏览器关闭”。谢谢-所以,$\u会话被整理出来了,我可以存储数据。但是$\u POST仍然不接受任何内容。b这可能与此有关吗?
session_start();
session_unset();
session_destroy();
session_write_close();
setcookie(session_name(),'',0,'/');
session_regenerate_id(true);