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

Форум MySQL

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

 

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

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

тема: авторизация mysql
 
 автор: t3ma   (02.08.2009 в 11:12)   письмо автору
 
 

непойму в чем проблема... все ввожу правильно реконектит на index.php и все равно не выводится что echo "Здравствуйте, ".$_SESSION['user']."!";

дамп


-- 
-- Структура таблицы `users` 
-- 

CREATE TABLE IF NOT EXISTS `users` ( 
  `id` int(11) NOT NULL auto_increment, 
  `login` varchar(20) NOT NULL default '', 
  `password` varchar(20) NOT NULL default '', 
  `email` varchar(20) NOT NULL default '', 
  `status` int(1) NOT NULL default '0', 
  `unique_id` varchar(50) NOT NULL, 
  PRIMARY KEY  (`id`) 
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=39 ; 

-- 
-- Дамп данных таблицы `users` 
-- 

INSERT INTO `users` (`id`, `login`, `password`, `email`, `status`, `unique_id`) VALUES 
(38, 'qwe', 'd41d8cd98f00b204e980', 'bbbb@mail.ru', 0, 'b04ca5a28595fac77230dd0b21294e6b');



форма для входа

<?php
 session_start
();
?>
<form action="auth_user.php" method="post">
 <input type="text" name="login" style=" width:60px;  color:#fff;" value="<?php echo $_SESSION['user']; ?>"/> &nbsp;
 <input type="password" name="pass" style=" width:60px;  color:#fff;"  value="<?php echo $_SESSION['password']; ?>" />
        <b><input type="submit" value="Авторизоваться"></b></p>
</form>
<?php
  
// Если посетитель "вошёл" - приветствуем его 
  
if(isset($_SESSION['user'])) echo "Здравствуйте, ".$_SESSION['user']."!";

  
?>


обработчик

<?php

  
require("config.php");

  
$login addslashes(strip_tags($_POST["login"]));
  
$password addslashes(strip_tags($_POST["pass"]));

  
$query = @mysql_query("SELECT password FROM users WHERE login='".$login."'");

  if (!
$query
  {
      exit (
"Ошибка выполнения запроса" .mysql_error());  
  }

  if (@
mysql_num_rows($query) > 0)  
    { 

// Получаем пароль  

       
$password_db = @mysql_result($query0); 

       if (
md5($password) == $password_db
       {
            if(
session_start()) 
         {
           
$_SESSION['user'] = $login
                              
$_SESSION['password'] = $_POST['password'];
                              
$_SESSION["time"] = time();


           echo 
"<HTML><HEAD> 
                 <META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'> 
                 </HEAD><body>"
;
         } 
       }

       else  
       {  
         exit (
"Ошибка идентификации: неправильный пароль");  
       }  
    } 

 else  
    {  
      exit (
"Ошибка идентификации: посетитель не зарегистрирован");  
        
    } 

?>

  Ответить  
 
 автор: Trianon   (02.08.2009 в 11:49)   письмо автору
 
   для: t3ma   (02.08.2009 в 11:12)
 

Внимание! Очередной товарищ пытается положить в сессию пароль.
Не делайте так.

Отдельного внимания стоит шедевр md5(addslashes(strip_tags(пароль)))
Такого сюрра, по-моему, здесь еще не наблюдалось.

  Ответить  
 
 автор: t3ma   (02.08.2009 в 11:51)   письмо автору
 
   для: Trianon   (02.08.2009 в 11:49)
 

ну никто непоможет с моей проблемой ... в итоге $_SESSION['user'] почемуто пустая

fixed


<?php

  
require("config.php");

  
$login addslashes(strip_tags($_POST["login"]));
  
$password addslashes(strip_tags($_POST["pass"]));

  
$query = @mysql_query("SELECT password FROM users WHERE login='".$login."'");

  if (!
$query
  {
      exit (
"Ошибка выполнения запроса" .mysql_error());  
  }

  if (@
mysql_num_rows($query) > 0)  
    { 

// Получаем пароль  

       
$password_db = @mysql_result($query0); 

       if (
md5($password) == $password_db
       {
           
session_id(md5($login rand(0,100)));

            if(
session_start()) 
         {
           
$_SESSION['user'] = $login
           
$_SESSION["time"] = time();

           echo 
"<HTML><HEAD> 
                 <META HTTP-EQUIV='Refresh' CONTENT='0; URL=menu.php'> 
                 </HEAD><body>"
;
         } 
       }

       else  
       {  
         exit (
"Ошибка идентификации: неправильный пароль");  
       }  
    } 

 else  
    {  
      exit (
"Ошибка идентификации: посетитель не зарегистрирован");  
        
    } 

?>

  Ответить  
 
 автор: Trianon   (02.08.2009 в 11:53)   письмо автору
 
   для: t3ma   (02.08.2009 в 11:51)
 

>ну никто непоможет с моей проблемой ... в итоге $_SESSION['user'] почемуто пустая

А я вот считаю, что проблема в том, что Вы где-то нашли похабный код, и теперь его здесь показываете.
Выкиньте каку.

  Ответить  
 
 автор: t3ma   (02.08.2009 в 12:17)   письмо автору
 
   для: Trianon   (02.08.2009 в 11:53)
 

щас сам написал с нуля

в итоге невыдает никакой ошибки и рекннектит на menu.php где $_SESSION["login"] пустая
ничего понять не могу

форма для входа

<?php
if (empty($_SESSION["login"]))
  {
?>
<form action="auth_user.php" method="post">
        <input type="text" name="login" value=""/> 
        <input type="password" name="pass" value="" />
        <input type="submit" value="Авторизоваться">
</form>
<?php
     
}
  else
    echo 
"Здравствуйте, ".$_SESSION['login']."!";

  
?>



обработчик

<?php

  
require("config.php");

  
$login addslashes(strip_tags($_POST["login"]));
  
$password addslashes(strip_tags($_POST["pass"]));

  
$get_user = @mysql_query("SELECT password FROM users WHERE login='$login'");

  if (
mysql_num_rows($get_user) != 1)
  {
    exit(
"Неверное имя пользователя или пароль!");
  }

  
$user_pass = @mysql_result($get_user0);

  if (
md5($password) != $user_pass)
  {
    exit(
"Неверное имя пользователя или пароль!");
  }

  
session_id(md5($login rand(0,100)));

  
session_start();

  
$_SESSION["login"] = $login;
  
$_SESSION["time"] = time();

  echo 
"<HTML><HEAD>
          <META HTTP-EQUIV='Refresh' CONTENT='0; URL=menu.php'>
          </HEAD></HTML>"
;

?>

  Ответить  
 
 автор: Рома   (02.08.2009 в 12:32)   письмо автору
 
   для: t3ma   (02.08.2009 в 12:17)
 

А как я буду регистрироваться на вашем сайте, если мой любимый пароль <h1>Рома</h1> ?

  Ответить  
 
 автор: t3ma   (02.08.2009 в 14:19)   письмо автору
 
   для: t3ma   (02.08.2009 в 12:17)
 

разобрался.. надо было в menu.php в начале файла поставить session_start();

есть предложения и замечания по коду ? с удовольствием выслушаю

  Ответить  
 
 автор: Trianon   (02.08.2009 в 14:41)   письмо автору
 
   для: t3ma   (02.08.2009 в 14:19)
 

Ответ неверный.
Надо было в начале файла поставить error_reporting(E_ALL | E_NOTICE);

Замечания стандартные.
Перехват кукисов отдает аутентифицированный сеанс на сторону.
А если пользователь, отключив кукисы (сессионный механизм стал работать, передавая идентификатор сессии в GET-параметре), передал/отправил кому-то ссылку на ресурс, то с этой ссылкой он отдает и сеанс.

  Ответить  
 
 автор: t3ma   (02.08.2009 в 15:57)   письмо автору
 
   для: Trianon   (02.08.2009 в 14:41)
 

если Вам не сложно то как должно быть ?

  Ответить  
 
 автор: Ringo   (02.08.2009 в 22:35)   письмо автору
 
   для: t3ma   (02.08.2009 в 15:57)
 

Замечание по коду:
вместо этого
$password = addslashes(strip_tags($_POST["pass"]));

используй

$password = md5(md5($_POST["pass"])));

то есть двойное хэширование. И сверяй с базой. В базу тоже придется записывать двойное хэширование.
А потом сравнивай. if($password == $db_password){}
В результате. Даже если уведут пароль из базы. злоумышленник не сможет им воспользоваться. тк попросту не сможет расшифровать.

  Ответить  
 
 автор: Trianon   (02.08.2009 в 22:38)   письмо автору
 
   для: Ringo   (02.08.2009 в 22:35)
 

Двойное хеширование увеличивает сложность подбора пароля всего в два раза по сравнению с простым однократным.

  Ответить  
 
 автор: Trianon   (02.08.2009 в 22:42)   письмо автору
 
   для: t3ma   (02.08.2009 в 15:57)
 

Как должно быть что?

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

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