Ajax请求和SESSION

时间:2016-01-27 22:38:26

标签: javascript php jquery ajax session

我有一个用户完成的表单,然后按"提交"按钮注册。

我想在提交表单之前向用户预览数据,所以我使用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()命令是否会导致问题?

1 个答案:

答案 0 :(得分:1)

您应该考虑转移到OAuth身份验证,以避免禁用Cookie的问题:

http://www.sitepoint.com/creating-a-php-oauth-server/

此致