PHP无法通过AJAX清空$ _SESSION

时间:2013-09-03 07:45:07

标签: php

我有3页;

第1页:包含AJAX文件上传器的主页

第2页(第1页的AJAX请求)处理文件上传器,启动会话并将文件名存储在会话中,如果上传的文件超过1个,则此页面会被调用一次以上

第3页(第1页的AJAX请求)当第2页上传所有文件时,第1页向此页面发送请求,以便此页面发送一封电子邮件,其中包含2个存储在会话,之后它会尝试清除整个会话,以便为第1页的页面刷新上的任何新上传做好准备。

现在我遇到的问题是,在第3页中会话没有被清除,所以每次我得到的会话数组大两倍,因为它有之前的文件名,以及刚刚放入的文件名在那里。

以下是我正在使用的代码:

第1页:正常的JS& Ajax请求

第2页:

这个实际上在会话中设置了数组

session_start();
send_nosniff_header();
nocache_headers();
//BLA BLA BLA - here is where the actual file uploader code is suppose to be

//Here is the session im setting and storing
if (!isset($_SESSION['arraystuff'])) {
$_SESSION['arraystuff'] = array();
}
$_SESSION['arraystuff'][] =  $uploads_dir.'/'.$filename;

第3页:

这个发送一封电子邮件,其中包含会话中存储的每个文件名

if(isset($_GET['uploadComplete'])){
session_start();
//Get foreach filenames inside session and send email
$_SESSION = array();
session_destroy(); 
}

然而,会话未被清除以使下一个正常工作,因为每次发送电子邮件时,之前会话中的先前文件名也会被发送并且不会被清除。

2 个答案:

答案 0 :(得分:3)

unset($_SESSION['arraystuff']);

session_unset();
session_destroy();

在你发送邮件的最后..把它写成电子邮件成功msg / varible ..

答案 1 :(得分:1)

确保您也在第3页上开始会话。然后尝试以下操作清空会话。

unset($_SESSION);