2009-08-20 91 views
1

當某人在我的網站上註冊或登錄時,它們會發送到「thanks.php」。對未登錄的用戶確保「謝謝」頁面

頁面檢查是否已經登錄,如果是,告訴你你可以做什麼,如果沒有,給你一個鏈接到register.php頁面。

但是,任何人都可以製作自己的cookie並欺騙這樣的腳本。

我該如何保護自己?

我想到的一件事是檢查數據庫中是否存在$_SESSION['session_id']。據我所知,你不能自己產生,即使你可以,你需要數據庫訪問來找出一個。

但我不太確定,有沒有人對這種「感謝」頁面有一些建議或經驗?

回答

5

如果不訪問服務器,則無法生成任何會話數據或數據庫數據。所以,一個安全的方法來做到這一點將要麼設置一個SESSION cookie,與一些變量,並檢查。

session_start(); 
$_SESSION['logged_in'] = true; 


session_start(); 
if(!isset($_SESSION['logged_in'])) 
{ 
    header("Location: youarentsupposetobehere.com"); 
} 
+0

那屆沒有理由id變量必須是唯一的餅乾的照顧。正如你所說,SESSION中的任何東西都在服務器上 – Eli 2009-08-20 16:53:47

+0

Ooops ..我們走了。 – 2009-08-20 16:55:07

2

嗯,是的,當人們登錄,您不應該設定一個cookie,說loggedin=true或一些這樣的。

而應該設置$_SESSION['loggedin'] = TRUE PHP一般需要保證的是管理自動

+0

事實上,當您關閉瀏覽器時會話cookie過期。甚至不必關閉計算機,只需瀏覽器即可。在php.ini文件中搜索這個變量:session.cookie_lifetime。它的含義解釋了它上面的一行。 – KdgDev 2009-08-20 17:00:01

+0

是的,默認情況下會話數據只能持續一段會話:) – Eli 2009-08-20 17:40:01