我真的想在發送會話時使用我的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代碼。 –