我的用于取消设置会话变量的PHP脚本无效。
我需要调用一个PHP文件destroy.php
,其中包含从ajax取消设置会话变量的代码,除了会话清除外,一切正常。
我发布了清除会话变量的代码,请指出我的错误。
jQuery代码:
$.ajax
({
type: "POST",
url: "SubmitReview.php",
data: dataString,
cache: false,
success: function(response)
{
$.fn.destroySession();
$('body').animate({scrollTop:0}, 500);
$('body').children(':not(div.ErrorMessageContainer)').fadeTo(500, 0.1);
$('div.ErrorMessageContainer').html(response).fadeIn(500).delay(5000).fadeOut(500);
setTimeout(function()
{
$('body').children(':not(div.ErrorMessageContainer)').fadeTo(500, 1);
}, 5400);
setTimeout(function()
{
window.location.href = "Thanks.php";
}, 5600);
}
});
$.fn.destroySession = function()
{
$.post("Destroy.php");
}
destroy.php
:
<?php
if(isset($_SESSION['MN']))
{
$_SESSION['MN'] = array();
unset($_SESSION['MN']);
}
?>
答案 0 :(得分:1)
如评论中所述,您没有启动会话,并且需要使用会话在所有文件中。
因此,在开头PHP标记的顶部和下方添加session_start();
。
参考:
将error reporting添加到文件的顶部,这有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Then the rest of your code
旁注:只应在暂存时进行显示错误,而不是生产。
“为什么要再次启动会话” - 因为,
session_start();
需要驻留在文件中,即使您想要取消它(这就是他们在PHP.net上构建它的方式) )。
<?php
session_start();
if(isset($_SESSION['MN']))
{
$_SESSION['MN'] = array();
unset($_SESSION['MN']);
}
答案 1 :(得分:0)
将session_start()放在第一行。
<?php
session_start();
if(isset($_SESSION['MN']))
{
$_SESSION['MN'] = array();
unset($_SESSION['MN']);
}