【问题标题】:Ajax request and SESSIONAjax 请求和会话
【发布时间】:2016-05-05 02:54:54
【问题描述】:

我有一个用户填写的表格,然后按“提交”按钮进行注册。

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

【问题讨论】:

  • 唯一想到的是 cookie 可能会被禁用,我猜这会导致会话完全丢失。
  • verify.php 代码顶部是否有session_start()
  • 更有可能是用户在 ajax 请求启动后的某个时间关闭浏览器,但在它完成之前,因此永远不会进行重定向。为什么不发送电子邮件至registrationAJAX.php
  • 另外,请确保在处理 ajax 请求时显示一些视觉反馈(例如微调器微调器)
  • @Steve 这需要以下之一:慢速服务器、慢速互联网连接或非常精确的时间。

标签: javascript php jquery ajax session


【解决方案1】:

您应该考虑转向 OAuth 身份验证以避免 cookie 被禁用的问题:

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

问候,

【讨论】:

    猜你喜欢
    • 2011-03-20
    • 1970-01-01
    • 2014-05-13
    • 1970-01-01
    • 2015-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多