Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Завершение сессии
 
 автор: Santa7   (19.04.2011 в 16:59)   письмо автору
 
 

Здравствуйте, не могу завершить сессию

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($nme0);  
       
// Сравниваем пароль из базы данных и введённый посетителем  
       
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 то свободно попадаешь на нее без явок и паролей))!
Подскажите пожалуйста что я делаю не правильно?
Спасибо!

  Ответить  
 
 автор: parczynski   (19.04.2011 в 17:34)   письмо автору
 
   для: Santa7   (19.04.2011 в 16:59)
 

в index_vip.php тоже надо делать проверку if(isset($_SESSION['user'])), и что-то не могу догнать у вас в logout_vip.php и в authorize.php используется $_SESSION['name'] а в handler.php она не задается

  Ответить  
 
 автор: tvv123456   (19.04.2011 в 19:41)   письмо автору
 
   для: 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 ?

  Ответить  
 
 автор: cheops   (19.04.2011 в 20:27)   письмо автору
 
   для: Santa7   (19.04.2011 в 16:59)
 

А какая проверка авторизации на index_vip.php? Что происходит если пользователь попадает на неё через поисковую систему в обход формы аутентификации?

  Ответить  
 
 автор: Santa7   (22.04.2011 в 13:09)   письмо автору
 
   для: cheops   (19.04.2011 в 20:27)
 

спасибо, а как сделать чтобы со страницы index_vip.php можно ходить по другим секретным страницам раздела, а то меня при нажатии на любую ссылку скидывает на index_vip.php

  Ответить  
 
 автор: cheops   (22.04.2011 в 14:00)   письмо автору
 
   для: Santa7   (22.04.2011 в 13:09)
 

А вы проверяйте есть что-либо в $_SESSION['user'] или нет, если есть - показывайте страницу, если нет - делайте переадресацию.

  Ответить  
 
 автор: Santa7   (22.04.2011 в 14:02)   письмо автору
 
   для: cheops   (22.04.2011 в 14:00)
 

если не сложно можно код проверки, а то я совсем запутался?!

  Ответить  
 
 автор: cheops   (22.04.2011 в 15:07)   письмо автору
 
   для: Santa7   (22.04.2011 в 14:02)
 

Можно отталкиваться от следующего скрипта
<?php
  
if(empty($_SESSION['user']))
  {
    
// Переадресация
  
}
  else
  {
    
// Содержимое страницы
  
}
?>

  Ответить  
 
 автор: Santa7   (22.04.2011 в 15:30)   письмо автору
 
   для: cheops   (22.04.2011 в 15:07)
 

Спасибо! все работает!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования