我有以下登录脚本..
<?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();
?>
但是我现在需要“菜单”来重定向未登录到登录页面的用户?防止直接访问?
感谢。
答案 0 :(得分:4)
?
session_start();
if (!isset($_SESSION['access']) || $_SESSION['access'] != "granted") {
header("Location: ./login.html");
exit();
}
答案 1 :(得分:2)
你必须把这样的东西放在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
答案 2 :(得分:1)
检查menu.php顶部的$_SESSION["access"]
的值。此外,您错过了对session_start
的通话。如果启用了session.auto_start,则可能不需要它,但显式调用它是个好习惯。
答案 3 :(得分:0)
检查菜单中的$_SESSION["access"]
以查看用户是否已登录。顺便说一句,您应该阅读SQL注入并使用转义重写该SQL查询。