我正在構建一個會員網站...我剛剛通過登錄頁面,我現在可以登錄和註銷。但是,這並不能保護我的所有頁面。我該如何解決這個問題? 我想在瀏覽器未登錄時設置它,打開的頁面會顯示「登錄第一個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. 讓瀏覽器登錄
- 4. 如何讓瀏覽器知道文件已更新? ASP.NET MVC
- 5. 如何知道gecko瀏覽器是否完成加載網頁?
- 6. 瀏覽器如何知道網頁已更改?
- 7. 如何知道用戶是否已登錄?
- 8. 如何知道用戶是否已登錄Facebook? Django
- 9. REST API如何知道用戶是否已登錄?
- 10. Openid,如何知道用戶是否已登錄
- 11. 如何知道twitter用戶是否已登錄?
- 12. 是否有任何cookie指示用戶是否已登錄Google Chrome瀏覽器?
- 13. 我如何知道頁面在瀏覽器中運行?
- 14. 如何知道瀏覽器是否具有AJAX(Django)
- 15. 瀏覽器如何知道網站是否支持HTTP/2?
- 16. 如何知道瀏覽器是否打開?
- 17. 瀏覽器如何知道腳本是否完成加載?
- 18. 我如何知道我的瀏覽器是否支持SVG 2.0?
- 19. 我如何知道粉絲頁面是否已被刪除?
- 20. 如何知道WebBrowser是否已完成加載頁面?
- 21. 谷歌瀏覽器擴展程序:如何確定用戶是否已登錄Chrome瀏覽器?
- 22. magento如何檢查用戶是否已登錄訂購頁面
- 23. 如何確定登錄頁面上是否有某個用戶已經登錄?
- 24. 我如何知道您已登錄Sharepoint網頁?
- 25. 瀏覽器如何知道scss文件?
- 26. 獲取網頁瀏覽器cookies登錄
- 27. VB.Net網頁與IE瀏覽器登錄
- 28. 如何從服務器端的iframed頁面知道瀏覽器URL?
- 29. 如何讓用戶通過瀏覽器登錄
- 30. 知道用戶何時瀏覽網頁
我試過這個,但頁面似乎並不知道會話是否已經開始...... :( – Joann 2010-05-08 08:39:49
在@session_start()中拋出;在頁面的頂部,這將開始一個新的會話如果不存在,請確保在所有頁面中包含會話開始,以便它可以持續 – 2010-05-10 08:15:44