|
|
|
| Здравствуйте, не могу завершить сессию
authorize.php
<?php
// Это файл index.php
session_start();
?>
<form action=handler.php method=post>
Имя посетителя : <input type=text name=name value=<?php echo $_SESSION['name']; ?>><br>
Пароль : <input type=password name=password value=<?php echo $_SESSION['password']; ?>><br>
<input type=submit value=Отправить>
</form>
<?php
// Если посетитель "вошёл" - приветствуем его
if(isset($_SESSION['user'])) echo "Здравствуйте, ".$_SESSION['user']."!";
?>
|
обработчик handler.php и перенаправление на страницу index_vip.php
<?php
$dblocation = "localhost";
$dbname = "test";
$dbuser = "root";
$dbpasswd = "test";
// Соединяемся с сервером базы данных
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
if (!$dbcnx) {
echo( "<P>В настоящий момент сервер базы данных не
доступен, поэтому корректное отображение
страницы невозможно.</P>" );
exit();
}
// Выбираем базу данных
if (! @mysql_select_db($dbname,$dbcnx) ) {
echo( "<P>В настоящий момент база данных не доступна,
поэтому корректное отображение страницы
невозможно.</P>" );
exit();
}
// Формируем и выполняем SQL-запрос для посетителя с
// именем $_POST['name']
$query = "SELECT password FROM users WHERE name='".$_POST['name']."'";
$nme = mysql_query($query);
if(!$nme)
{
echo mysql_error();
echo "Ошибка выполнения запроса";
exit();
}
// Если запрос вернул результат - производим дальнейшую обработку
if(mysql_num_rows($nme) > 0)
{
// Получаем пароль
$password = mysql_result($nme, 0);
// Сравниваем пароль из базы данных и введённый посетителем
if ($_POST['password'] == $password)
{
// Идентификация прошла успешно - осуществляем
// "вход" посетителя. Для того, чтобы в течении текущей
// сесси посетитель не вводил своё имя пароль повторно -
// передаём их через сессию
if(session_start())
{
$_SESSION['user'] = $_POST['name'];
$_SESSION['password'] = $_POST['password'];
// Осуществляем автоматический переход на
// страницу index.php чтобы убедится, что
// посетитель "вошёл"
echo "<HTML><HEAD>
<META HTTP-EQUIV='Refresh' CONTENT='0; URL=index_vip.php'>
</HEAD><body>";
}
}
else
{
echo "Ошибка идентификации: неправильный пароль";
exit();
}
}
// Если в результате запроса не получено ни одной
// строки - посетитель с таким именем не зарегистрирован
else
{
echo "Ошибка идентификации: посетитель не зарегистрирован";
exit();
}
?>
|
выход из секретного раздел с завершением сессии logout_vip.php
session_start();
session_unregister('password');
// уничтожаем пароль
unset($_SESSION['name']);
session_destroy(); // разрушаем сессию
Header("Location: http://test.ru");
|
Проблема в том что если после выхода из сессии просто набрать страничку index_vip.php то свободно попадаешь на нее без явок и паролей))!
Подскажите пожалуйста что я делаю не правильно?
Спасибо! | |
|
|
|
|
|
|
|
для: Santa7
(19.04.2011 в 16:59)
| | в index_vip.php тоже надо делать проверку if(isset($_SESSION['user'])), и что-то не могу догнать у вас в logout_vip.php и в authorize.php используется $_SESSION['name'] а в handler.php она не задается | |
|
|
|
|
|
|
|
для: Santa7
(19.04.2011 в 16:59)
| | Вот так делать нельзя:
<?
$query = "SELECT password FROM users WHERE name='".$_POST['name']."'";
$nme = mysql_query($query);
|
Причина:http://ru.wikipedia.org/wiki/SQL-%D0%B8%D0%BD%D1%8A%D0%B5%D0%BA%D1%86%D0%B8%D1%8F
А вы в файле index_vip.php проверяете наличие и правильность соответствующих $_SESSION ? файлик можете показать index_vip.php ? | |
|
|
|
|
|
|
|
для: Santa7
(19.04.2011 в 16:59)
| | А какая проверка авторизации на index_vip.php? Что происходит если пользователь попадает на неё через поисковую систему в обход формы аутентификации? | |
|
|
|
|
|
|
|
для: cheops
(19.04.2011 в 20:27)
| | спасибо, а как сделать чтобы со страницы index_vip.php можно ходить по другим секретным страницам раздела, а то меня при нажатии на любую ссылку скидывает на index_vip.php | |
|
|
|
|
|
|
|
для: Santa7
(22.04.2011 в 13:09)
| | А вы проверяйте есть что-либо в $_SESSION['user'] или нет, если есть - показывайте страницу, если нет - делайте переадресацию. | |
|
|
|
|
|
|
|
для: cheops
(22.04.2011 в 14:00)
| | если не сложно можно код проверки, а то я совсем запутался?! | |
|
|
|
|
|
|
|
для: Santa7
(22.04.2011 в 14:02)
| | Можно отталкиваться от следующего скрипта
<?php
if(empty($_SESSION['user']))
{
// Переадресация
}
else
{
// Содержимое страницы
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(22.04.2011 в 15:07)
| | Спасибо! все работает! | |
|
|
|