Javascript Ajax请求和会话
我有一个表单,用户填写后按“提交”按钮注册 我想在提交表单之前向用户预览数据,所以我使用AJAX来实现这一点。程序如下: 1) 用户单击“提交”按钮(例如registration.php) 2) JS脚本,阻止默认操作(即提交),并通过AJAX调用另一个PHP脚本(registrationAJAX.PHP),即: a) 执行一些数据库更改 b) 将一些变量存储在$\u会话数组中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'] =
$_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互联网连接,或非常精确的时间。