我有一个用户完成的表单,然后按"提交"按钮注册。
我想在提交表单之前向用户预览数据,所以我使用AJAX来执行此操作。程序如下:
1)用户点击"提交"按钮(例如registration.php)
2)JS脚本,阻止默认操作(提交它)并通过AJAX( registrationAJAX.php )调用另一个PHP脚本:
a)执行一些数据库更改
b)将一些变量存储在 $ _ SESSION 数组
中$_SESSION['userID'] = $uID;
$_SESSION['userEmailAddress'] = $email;
$_SESSION['hash'] = $hash;
c)json_encodes以下数组:
$results = array(
'result' => 'success',
'message' => 'registration was successful'
);
echo json_encode($results);
d)然后退出
exit();
3)回到JS脚本和AJAX 成功,我检查结果是否是"成功"然后将用户重定向到发送自动电子邮件以进行帐户验证的脚本:
$.ajax({
type: "POST",
url: "js/ajax/registrationAJAX.php",
data: {form data...},
cache: false,
success: function(output){
var outputJSON = $.parseJSON(output);
var status = outputJSON.result;
if(status == 'success')
{
location.href = "https://domain.com/verify.php";
}
}
});
verify.php 脚本必须能够访问要正确执行的$ _SESSION变量。
//the code will only executed if the $_SESSION['hash'] is set:
if(isset($_SESSION['hash']))
{
//SEND EMAIL ACTIVATION EMAIL TO USER
//INFORM THE DATABASE THAT THE EMAIL IS SENT
}
有时候,我发现有些用户没有收到激活邮件。如果 verify.php 脚本在registrationAJAX.php期间没有存储$ _SESSION变量然后失败(如上面的代码所示),则会发生这种情况。
问题:
1)变量是否有可能延迟存储在$ _SESSION中,并且重定向到 verify.php 是在没有$ _SESSION变量的情况下执行的?
2)exit()命令是否会导致问题?
答案 0 :(得分:1)