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

Форум PHP

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

 

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

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

тема: снова и снова авторизация (аутентификация) cookie и сессии
 
 автор: afdm   (14.01.2008 в 21:07)   письмо автору
 
 


<?php
  
// соединение с базой данных
  
include "config.php";
  
// сравниваем переданный идентификатор из формы с
  // текущим идентификатором сессии
  
if($_POST['session_id'] != session_id()) exit();
  
// если переданный параметр чекбокса = yes 
  //то устанавливаем время жизни куки 2 недели, иначе кук:))) живет до конца сессии
  
if($_POST['twoweeks'] == "yes"$time_cookie time()+336*3600;

  
// запрос для посетителя с именем $_POST['Username']
  
$query "SELECT pass FROM users WHERE name='".$_POST['Username']."'";
  
$nme mysql_query($query);
  if(!
$nme) exit("Ошибка выполнения запроса");

  
// если запрос вернул результат - производим дальнейшую обработку
  
if(mysql_num_rows($nme) > 0)
  {
    
// получаем пароль
    
$pass mysql_result($nme0);
    
// сравниваем пароль из базы данных и введённый посетителем
    
if (md5($_POST['Password']) == $pass)
    {
      
//if(session_start()) {
        // записываем имя пользователя
        // и хэш его пароля в сессию
        //$_SESSION['user'] = $_POST['Username'];
        //$_SESSION['password'] = md5($_POST['Password']);

        
if(isset($_POST['Password']) && isset($_POST['Username']))
        {
                
// запись переданных параметров пара логин-пароль в cookie
                
$_COOKIE['Password'] = $_POST['Password'];
                
$_COOKIE['Username'] = $_POST['Username'];
        }
        
setcookie("log_in_pass"$_COOKIE['Password'], $time_cookie);
        
setcookie("log_in_name"$_COOKIE['Username'], $time_cookie);

        
// осуществляем переход на главную страницу админки
        
echo "<html><head>
              <meta http-equiv='refresh' content='0; url=index.php'>
              </head>"
;
     
// }
    
} else exit("Неверный пароль");
  }
  
// если в результате запроса не получено ни одной
  // строки - значит посетитель с таким именем не зарегистрирован
  
else exit("Пользователь не зарегистрирован");
?>

вопроса собственно всего два:
1) Что здесь не так и как исправить?
2) Почему при проверке в другом скрипте

if(isset($_COOKIE['Username']) && isset($_COOKIE['Password']) ) {

чуда авторизации (или аутентификации) не происходит??? (вроде как параметры $_COOKIE['Username'] или $_COOKIE['Password'] не существуют и равны "") :(((

Благодарю за внимание!

   
 
 автор: Unkind   (14.01.2008 в 21:14)   письмо автору
 
   для: afdm   (14.01.2008 в 21:07)
 

Вы почему-то устанавливаете cookies с именами "log_in_name" и "log_in_pass", а проверяете $_COOKIE['Username'] и $_COOKIE['Password'].

> // запись переданных параметров пара логин-пароль в cookie
> $_COOKIE['Password'] = $_POST['Password'];
> $_COOKIE['Username'] = $_POST['Username'];
Тут в cookies ничего не записывается. Очевидно, Вы перепутали с $_SESSION.

   
 
 автор: afdm   (14.01.2008 в 22:14)   письмо автору
 
   для: Unkind   (14.01.2008 в 21:14)
 

да возможно... просто прочитал очень много тем по этому вопросу... возможно запутался... :(((
а как надо? подскажите...
заранее спасибо!

   
 
 автор: Unkind   (14.01.2008 в 22:31)   письмо автору
 
   для: afdm   (14.01.2008 в 22:14)
 

Наверное, сменить имена "log_in_*" на Ваши, как считаете?

setcookie("Password", $_COOKIE['Password'], $time_cookie);
setcookie("Username", $_COOKIE['Username'], $time_cookie);

   
 
 автор: afdm   (14.01.2008 в 22:49)   письмо автору
 
   для: Unkind   (14.01.2008 в 22:31)
 

И только? или ещё есть баги?

   
 
 автор: Unkind   (14.01.2008 в 22:58)   письмо автору
 
   для: afdm   (14.01.2008 в 22:49)
 

Ну есть SQL Injection. Поищите сами - запрос вроде и так всего один.

   
 
 автор: afdm   (14.01.2008 в 23:08)   письмо автору
 
   для: Unkind   (14.01.2008 в 22:58)
 

да про инъекции я знаю. это обязательно предусмотрю. а где можно ещё почитать про куки, сессии и т.д. и т.п.

   
 
 автор: Unkind   (14.01.2008 в 23:13)   письмо автору
 
   для: afdm   (14.01.2008 в 23:08)
 

На php.net, наверное.

http://php.net/manual/ru/features.cookies.php
http://php.net/manual/ru/features.sessions.php

   
Rambler's Top100
вверх

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