我真的想在发送会话时使用我的jquery ajax post调用,这里是我的代码的简化示例。jquery post ajax调用会话不工作
文件FOM该请求被发送:
<?php
session_start();
$token = md5(rand(1000,9999));
$_SESSION['contactToken'] = $token;
?>
<script type="text/javascript">
$.post(ContactUrl,{req:"contact_sub",tok:"<?php echo $token; ?>"},function(contactAns){
alert(contactAns); return false;
});
</script>
文件请求被发送到:
<?php
if(@isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER']=="url"){
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && ($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest')){
session_start();
$token = $_POST['tok'];
$sess_token = $_SESSION['contactToken'];
if($token == $sess_token){
echo "sessions match"; exit();
}
else{
echo "sessions does not match"; exit();
}
}
else{echo "error"; exit();}
}
else{echo "error"; exit();}
?>
起初,会议没有得到认可,我做了所有的检查 - 确定它是安装在第一个地方确保它被张贴,声明会话开始在两页上,从来没有更少,如果我试图做第二个文件:
<?php
session_start();
$token = $_POST['tok'];
$sess_token = $_SESSION['contactToken'];
print_r($_SESSION['contactToken']); exit();
?>
我会得到一个空警报。然后我转移会话开始我的第二页上脚本的顶部,并开始得到的数值作为会话:
<?php
session_start();
$sess_token = $_SESSION['contactToken'];
if(@isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER']=="url"){
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && ($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest')){
$token = $_POST['tok'];
echo "$token, $sess_token"; exit();
}
else{echo "error"; exit();}
}
else{echo "error"; exit();}
?>
什么,现在我得到的是,贴变量每个I刷新时间而改变页面,但$ sess_token总是给我相同的值:0589dd536fd043ff3865f8223fef3030
我真的不明白这个奇怪的行为,有人可以帮助我吗?
你在你的第一个代码中混合使用PHP和jQuery吗? o.0 session_start(); $ .post(ContactUrl,{req:“contact_sub”,to ~~ – hanshenrik
no ofourse当然不是我刚给了一个没有包装它的代码的例子 –
@AlbertKuzmin请在'' and '?>'之间包装PHP代码。 –