2011-01-25 51 views
0

當用戶在另一個窗口/選項卡上打開另一個頁面時,會導致衝突。那麼如何防止這些衝突呢?一種方法是爲每個頁面設置相同的會話。每次用戶註銷/登錄會話都將被重新生成。更改每個頁面請求的會話是否很重要?

<?php 
//every page sets its own session if its not ajax so that it dont expire 
if(is_ajax()){ 
$_SESSION['token'] = md5(rand()); 
} 

echo '<div id="token">'.$_SESSION['token'].'</div>'; 
?> 

令牌將從div.token傳遞給jQuery執行ajax請求。但是當用戶打開另一個選項卡時,新會話被設置,然後另一頁返回'無效請求'錯誤。

+0

你的意思改變會話ID?爲什麼你需要爲每個頁面加載重新生成一個新的?爲什麼它會在新選項卡上導致問題 - 所有網址都有令牌? – alex 2011-01-25 00:46:37

+0

是的所有頁面都有令牌,將用於ajax請求和表單提交 – kornesh 2011-01-25 00:56:33

回答

1

打開多個頁面或選項卡不應干擾會話。如果確實如此,那麼您可能會在會議中投入太多。

你在會議中存儲什麼?這聽起來像你可能在URL中的會話中存儲了一些東西。

編輯:看到你的編輯後,您可能想看看在這個問題上的回答:

PHP - CSRF - How to make it works in all tabs?

相關問題