[英]redirect users to the login page
我有以下登錄腳本。
<?php
$name = $_POST["name"];
$password = $_POST["password"];
$query = "SELECT * FROM users WHERE username = '$name'
AND password = '$password'";
$q=mysql_query($query) or die(mysql_error());
$result = mysql_query($query);
if (mysql_fetch_row($result)) {
/* access granted */
session_start();
header("Cache-control: private");
$_SESSION["access"] = "granted";
header("Location: ./menu.php");
} else
/* access denied – redirect back to login */
header("Location: ./login.html");
?>
mysql_close();
?>
但是,現在我需要“菜單”將未登錄的用戶重定向到登錄頁面嗎? 防止直接訪問?
謝謝。
在menu.php中?
session_start();
if (!isset($_SESSION['access']) || $_SESSION['access'] != "granted") {
header("Location: ./login.html");
exit();
}
您必須在menu.php的頂部放置以下內容:
<?php
session_start();
if(!isset($_SESSION['access']) || $_SESSION['access'] != 'granted'){
header("Location: ./login.html');
}
?>
並且不要忘記清理您的查詢輸入:
$name = mysql_real_escape_string(stripslashes($_POST["name"]));
$password = mysql_real_escape_string(stripslashes($_POST["password"]));
並且不要忘了調用session_start();
在每個使用$_SESSION
腳本的開頭
檢查menu.php頂部$_SESSION["access"]
的值。 另外,您錯過了對session_start
的呼叫。 如果啟用了session.auto_start,則可能不需要它,但是顯式調用它是一個好習慣。
檢查菜單中的$_SESSION["access"]
以查看用戶是否已登錄。順便說一句,您應該閱讀SQL注入並使用轉義重寫該SQL查詢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.