перенаправить пользователей на страницу входа - PullRequest
0 голосов
/ 21 июля 2010

У меня есть следующий скрипт входа в систему ..

<?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 ]

4 голосов
/ 21 июля 2010

в menu.php?

session_start();
if (!isset($_SESSION['access']) || $_SESSION['access'] != "granted") {
  header("Location: ./login.html");
  exit();
}
2 голосов
/ 21 июля 2010

Вы должны поместить что-то вроде этого вверху 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

1 голос
/ 21 июля 2010

Проверьте значение $_SESSION["access"] в верхней части вашего menu.php.Также вы пропускаете звонок на session_start.Это может не понадобиться, если у вас включен метод session.auto_start, но полезно вызывать его явно.

0 голосов
/ 21 июля 2010

Отметьте $_SESSION["access"] в меню, чтобы увидеть, вошел ли пользователь в систему. Кстати, вы должны прочитать SQL-инъекцию и переписать этот SQL-запрос, используя экранирование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...