перенаправить пользователей на страницу входа в систему

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

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

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

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