将用户重定向到登录页面

时间:2010-07-21 15:46:49

标签: php authentication

我有以下登录脚本..

<?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 &#8211; redirect back to login */
  header("Location: ./login.html");
  ?>
  mysql_close();
  ?>

但是我现在需要“菜单”来重定向未登录到登录页面的用户?防止直接访问?

感谢。

4 个答案:

答案 0 :(得分:4)

在menu.php中

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查询。