我有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();
}
然而,会话未被清除以使下一个正常工作,因为每次发送电子邮件时,之前会话中的先前文件名也会被发送并且不会被清除。
答案 0 :(得分:3)
写unset($_SESSION['arraystuff']);
或
session_unset();
session_destroy();
在你发送邮件的最后..把它写成电子邮件成功msg / varible ..
答案 1 :(得分:1)
确保您也在第3页上开始会话。然后尝试以下操作清空会话。
unset($_SESSION);