答案可能真的很簡單,但我一直想弄清楚,但我做不到。
我已經為每個擁有注冊賬戶的 "當前 "登錄用戶創建了一個個人資料頁面,但問題是任何人都可以使用鏈接訪問對方的個人資料并對其進行編輯。例如:
https://localhost/profile.php?username=Msprite 可以很容易地訪問 https://localhost/profile.php?username=Msprite2,通過調整鏈接,輸入他們的用戶名。
當訪問一個組態檔時,用戶點擊下面的代碼,會被重定向到他們的組態檔,使用$_SESSION來存盤他們的用戶名。
`echo '<td><a href="file.php?username=' . $_SESSION['loggedin'] 。'">' . '' . ' ' . $_SESSION['loggedin'] 。' </a></td> ';
我是否嘗試了錯誤的方法?是否有其他方法來單獨顯示每個用戶的設定。我怎樣才能阻止一個用戶訪問其他用戶的資訊。
session_start(); if (!isset($_SESSION['username']) {
header('Location: admin/index.php')。
exit。
}
一個if陳述句檢查一個用戶是否登錄,是否有辦法檢查一個用戶是否是真正的合法用戶,試圖訪問他們的帳戶資訊?
uj5u.com熱心網友回復:
你應該使用POST方法來發送該資訊,并識別該用戶是否是試圖訪問修改他們的個人資料/資訊的用戶。
然后在你做的驗證中,如果會話被設定,它是正確的,但你必須放一個第二個條件,驗證會話具有訪問用戶的值。
我不知道你的用戶資訊在哪里,但假設你允許一個特定的用戶,它將會是這樣的:
<?
if(isset($_SESSION['username'/span>]) & & $_SESSION['username'] == 'Msprite'){
echo 'access granted'。
}else{
echo 'U dont have perms';
}
?>/span>
如果你從資料庫獲取資料,進行查詢,然后在條件中比較會話 "用戶名 "的值是否屬于在同一資料庫中注冊的用戶。
uj5u.com熱心網友回復:
因為你在鏈接中顯示了名字Msprite,并且鏈接的代碼使用了$_SESSION['loggedin'],所以我認為那就是登錄的用戶名。
你不需要鏈接中的用戶名,只需要在profile.php上使用它:
session_start();
if(isset($_SESSION['loggedin'/span>])) {
// SELECT info1, info2 FROM user_table WHERE username = $_SESSION['loggedin']
//做組態檔的事情。
} else {
header('Location: admin/index.php') 。
exit;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/319165.html
標籤:
