2010-07-08 62 views
1

在我的PHP應用程序中,我使用了UserName & Pwd並檢查數據庫中的用戶表以檢查用戶的有效性。登錄成功後,我存儲在證書中,如下所示服務器會話:php5中的無Cookie驗證

$_SESSION['username'] = $username; 
$_SESSION['pwd'] = $pwd; 

我查了會議,以確保用戶已經登錄你可以看到下面的代碼:

if (empty($_SESSION['userId'])) 
    header("Location: login.php"); 

問題是,如果我在瀏覽器中禁用cookie,即使登錄成功,我也無法進入其他頁面。我發現PHP會話使用cookie在瀏覽器中存儲一些值。無論如何在PHP5中使用無Cookie會話?

回答

0

是的,但你不想。實際上,您應該只使用使用基於cookie的會話。這是PHP 5.3的默認配置。請閱讀session fixation瞭解更多信息。

你有什麼情況迫使你要求用戶無需cookies即可使用你的網站?

0

是的,您可以通過啓用session.use_trans_sid。但是,這樣做存在安全隱患。

人們普遍認爲,要登錄,需要接受cookie。

另一種選擇是使用http授權,而不是會話,雖然這也有它的缺點。

請參閱session id passing

0

您可以生成一個會話ID,並把它添加到你的鏈接像這樣

<?php 
session_start(); 
$session_id = session_id(); 
header('Location: http://www.test.com/?sess_id='. $session_id); 
?> 
+0

你必須處理這個在你的login.php這樣 如果(!空($ _ GET [「sess_id」] )) { //代碼是管理員? } – streetparade 2010-07-08 23:08:38