我正在構建一個會員網站...我剛剛通過登錄頁面,我現在可以登錄和註銷。但是,這並不能保護我的所有頁面。我該如何解決這個問題? 我想在瀏覽器未登錄時設置它,打開的頁面會顯示「登錄第一個blah3x」...任何幫助pls ??? :-(如何讓頁面知道瀏覽器是否已登錄?
0
A
回答
3
我想,當用戶登錄,創建一個會話對象和存儲的一些信息在裏面。一些東西,識別用戶。
$_SESSION['User']['logged_in'] = true;
然後,在我的頁面的頂部,我倒是可能扔在一個檢查。
if(!isset($_SESSION['User']['logged_in']){
header('Location: login.php');
}
這將重定向未登錄任何人,你的登錄頁面。請想想如何更好地保護您的應用程序,因爲這是非常簡陋並不會真的適用於任何生產環境ronments。
1
您需要做的下一件事是建立您的訪問控制列表(ACL)。該列表可能是僅在經過身份驗證時才能查看的頁面列表。接下來的事情是通過SESSION或COOKIE持久化身份驗證令牌(可能是用戶名),然後查找您的ACL,如果當前用戶請求的頁面需要身份驗證然後將其路由到某個位置,則可能是主頁(如果它在列表中)。您的ACL可以存儲到數據庫,SESSION或COOKIE。確保o加密保存在COOKIE上的所有信息。
以下面的例子。您可以簡單地將它作爲包含文件添加到每個頁面的頂部。
<?php
//this could be acl.php
//this could be saved to $_SESSION, $_COOKIE or database
$acl = array("members"=> 1,
"comment"=> 1);
//assuming that you have saved the username authenticated into a $_SESSION for persistence
if (!isset($_SESSION["username"]) && isset($acl[$page]) {
//user is not logged in
die("Please log-in");
}
?>
使用範例,
<?php
//this could members.php
$page = "members"; //or you can leverage $_SERVER["SCRIPT_NAME"] to get the pagename automatically
include_once("acl.php");
?>
在訪問控制列表的更高級的用法,源經常使用的角色或用戶自己來定義它。當你將它加載到頁面時,它總是用戶特定的。
相關問題
- 1. 如何知道來自瀏覽器歷史記錄的頁面
- 2. 讓瀏覽器登錄
- 3. 如何讓瀏覽器知道文件已更新? ASP.NET MVC
- 4. 如何知道gecko瀏覽器是否完成加載網頁?
- 5. 如何知道用戶是否已登錄?
- 6. 如何知道twitter用戶是否已登錄?
- 7. 是否有任何cookie指示用戶是否已登錄Google Chrome瀏覽器?
- 8. 如何知道瀏覽器選項卡是否已經使用Javascript打開?
- 9. 瀏覽器如何知道網站是否支持HTTP/2?
- 10. 如何知道瀏覽器是否具有AJAX(Django)
- 11. 我如何知道我的瀏覽器是否支持SVG 2.0?
- 12. 如何知道WebBrowser是否已完成加載頁面?
- 13. 谷歌瀏覽器擴展程序:如何確定用戶是否已登錄Chrome瀏覽器?
- 14. 如何確定登錄頁面上是否有某個用戶已經登錄?
- 15. 我如何知道您已登錄Sharepoint網頁?
- 16. 瀏覽器如何知道scss文件?
- 17. 獲取網頁瀏覽器cookies登錄
- 18. 知道用戶何時瀏覽網頁
- 19. 如何檢測瀏覽器是否正在加載新頁面
- 20. 如何通過Wget瀏覽登錄頁面?
- 21. Magento - 多瀏覽器登錄前登錄
- 22. 如何知道網站如何確定瀏覽器是否啓用了JS?
- 23. 如何知道MediaScanner是否已啓用?
- 24. 如何知道AVAudioPlayer是否已暫停?
- 25. 如何知道行是否已更新
- 26. 如何確定頁面是否爲登錄頁面?
- 27. C#Web瀏覽器Instagram登錄頁面未加載
- 28. 我的登錄頁面被瀏覽器驗證框取代
- 29. 跨瀏覽器登錄?
- 30. 檢查瀏覽器是否已關閉
我試過這個,但頁面似乎並不知道會話是否已經開始...... :( – Joann 2010-05-08 08:39:49
在@session_start()中拋出;在頁面的頂部,這將開始一個新的會話如果不存在,請確保在所有頁面中包含會話開始,以便它可以持續 – 2010-05-10 08:15:44