Javascript Ajax请求和会话

Javascript Ajax请求和会话,javascript,php,jquery,ajax,session,Javascript,Php,Jquery,Ajax,Session,我有一个表单,用户填写后按“提交”按钮注册 我想在提交表单之前向用户预览数据,所以我使用AJAX来实现这一点。程序如下: 1) 用户单击“提交”按钮(例如registration.php) 2) JS脚本,阻止默认操作(即提交),并通过AJAX调用另一个PHP脚本(registrationAJAX.PHP),即: a) 执行一些数据库更改 b) 将一些变量存储在$\u会话数组中 $_SESSION['userID'] = $uID; $_SESSION['userEmailAddress'] =

我有一个表单,用户填写后按“提交”按钮注册

我想在提交表单之前向用户预览数据,所以我使用AJAX来实现这一点。程序如下:

1) 用户单击“提交”按钮(例如registration.php)

2) JS脚本,阻止默认操作(即提交),并通过AJAX调用另一个PHP脚本(registrationAJAX.PHP),即:

a) 执行一些数据库更改

b) 将一些变量存储在$\u会话数组中

$_SESSION['userID'] = $uID;
$_SESSION['userEmailAddress'] = $email;
$_SESSION['hash'] = $hash;
c) json_对以下数组进行编码:

$results = array(

                   'result'  => 'success',
                   'message' => 'registration was successful' 

                );

echo json_encode($results);
d) 然后退出

exit();
3) 回到JS脚本,在AJAXsuccess上,我检查结果是否为“success”,然后将用户重定向到一个脚本,该脚本发送一封自动电子邮件进行帐户验证:

$.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脚本必须能够访问要正确执行的$\u会话变量

 //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期间存储的$\u会话变量,然后失败(如上面的代码所示),就会发生这种情况

问题:

1) 变量是否有可能延迟存储在$\u会话中,并且在没有$\u会话变量的情况下执行重定向到verify.php


2)Ext()命令会引起问题吗?

< P>您应该考虑移动到OAuthAudio认证,以避免禁用Cookie的问题:


关于,

我想到的唯一一件事是Cookie可能会被禁用,我想这会导致会话完全丢失。verify.php是否在代码顶部有
session\u start()
?更可能的情况是用户在ajax请求启动后的某个时间关闭浏览器,但在它完成之前,因此,重定向永远不会被遵循。为什么不在
registrationAJAX.php
中发送电子邮件呢?另外,确保在ajax请求发出时显示一些视觉反馈(例如微调器微调器)processing@Steve这将需要一个:慢ass服务器,慢ass互联网连接,或非常精确的时间。