Вот скрипт аутентификации пользователя, выдает ошибку включите cookies, хотя они включены: login Код (Text): <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head> <body> <?php // Страница авторизации # Функция для генерации случайной строки function generateCode($length=6) { $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHI JKLMNOPRQSTUVWXYZ0123456789"; $code = ""; $clen = strlen($chars) - 1; while (strlen($code) < $length) { $code .= $chars[mt_rand(0,$clen)]; } return $code; } # Соединямся с БД mysql_connect("localhost", "root", ""); mysql_select_db("agent"); if(isset($_POST['submit'])) { # Вытаскиваем из БД запись, у которой логин равняеться введенному $query = mysql_query("SELECT user_id, user_password FROM users WHERE user_login='".mysql_real_escape_string($_POST['login'])."' LIMIT 1"); $data = mysql_fetch_assoc($query); # Соавниваем пароли if($data['user_password'] === md5(md5($_POST['password']))) { # Генерируем случайное число и шифруем его $hash = md5(generateCode(10)); if(!@$_POST['not_attach_ip']) { # Если пользователя выбрал привязку к IP # Переводим IP в строку $insip = ", user_ip=INET_ATON('".$_SERVER['REMOTE_ADDR']."')"; } # Записываем в БД новый хеш авторизации и IP mysql_query("UPDATE users SET user_hash='".$hash."' ".$insip." WHERE user_id='".$data['user_id']."'"); # Ставим куки // setcookie("id", $data['user_id'], time()+60*60*24*30); // setcookie("hash", $hash, time()+60*60*24*30); # Переадресовываем браузер на страницу проверки нашего скрипта header("Location: check.php"); exit(); } else { print "Вы ввели неправильный логин/пароль"; } } ?> <form method="POST"> Логин <input name="login" type="text"><br> Пароль <input name="password" type="password"><br> Не прикреплять к IP(не безопасно) <input type="checkbox" name="not_attach_ip"><br> <input name="submit" type="submit" value="Войти"> <a href="logout.php">logout </a> </form> </body> </html> regiser Код (Text): <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head> <body> <?php // Страница авторизации # Функция для генерации случайной строки function generateCode($length=6) { $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHI JKLMNOPRQSTUVWXYZ0123456789"; $code = ""; $clen = strlen($chars) - 1; while (strlen($code) < $length) { $code .= $chars[mt_rand(0,$clen)]; } return $code; } # Соединямся с БД mysql_connect("localhost", "root", "myhost"); mysql_select_db("agent"); if(isset($_POST['submit'])) { # Вытаскиваем из БД запись, у которой логин равняеться введенному $query = mysql_query("SELECT user_id, user_password FROM users WHERE user_login='".mysql_real_escape_string($_POST['login'])."' LIMIT 1"); $data = mysql_fetch_assoc($query); # Соавниваем пароли if($data['user_password'] === md5(md5($_POST['password']))) { # Генерируем случайное число и шифруем его $hash = md5(generateCode(10)); if(!@$_POST['not_attach_ip']) { # Если пользователя выбрал привязку к IP # Переводим IP в строку $insip = ", user_ip=INET_ATON('".$_SERVER['REMOTE_ADDR']."')"; } # Записываем в БД новый хеш авторизации и IP mysql_query("UPDATE users SET user_hash='".$hash."' ".$insip." WHERE user_id='".$data['user_id']."'"); # Ставим куки setcookie("id", $data['user_id'], time()+60*60*24*30); setcookie("hash", $hash, time()+60*60*24*30); # Переадресовываем браузер на страницу проверки нашего скрипта header("Location: check.php"); exit(); } else { print "Вы ввели неправильный логин/пароль"; } } ?> <form method="POST"> Логин <input name="login" type="text"><br> Пароль <input name="password" type="password"><br> Не прикреплять к IP(не безопасно) <input type="checkbox" name="not_attach_ip"><br> <input name="submit" type="submit" value="Войти"> </form> </body> </html> check Код (Text): <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head> <body> <?php // Скрипт проверки # Соединямся с БД mysql_connect("localhost", "root", ""); mysql_select_db("agent"); if (isset($_COOKIE['id']) and isset($_COOKIE['hash'])) { $query = mysql_query("SELECT *,INET_NTOA(user_ip) FROM users WHERE user_id = '".intval($_COOKIE['id'])."' LIMIT 1"); $userdata = mysql_fetch_assoc($query); if(($userdata['user_hash'] !== $_COOKIE['hash']) or ($userdata['user_id'] !== $_COOKIE['id']) or (($userdata['user_ip'] !== $_SERVER['REMOTE_ADDR']) and ($userdata['user_ip'] !== "0"))) { setcookie("id", "", time() - 3600*24*30*12, "/"); setcookie("hash", "", time() - 3600*24*30*12, "/"); print "Хм, что-то не получилось"; } else { print "Привет, ".$userdata['user_login'].". Всё работает!"; } } else { print "Включите куки"; } ?> </body> </html> print "Включите куки"; сначало выдавал что что то не получилось, а теперь пишет включите куки
А ошибка на страницы login? Там ты закомментировал // setcookie("id", $data['user_id'], time()+60*60*24*30); // setcookie("hash", $hash, time()+60*60*24*30); И зачем 2 раза md5? md5(md5($_POST['password']
а закоментировал случайно, сейчас пишет "Хм, что-то не получилось" вот, источник инфо вот http://habrahabr.ru/post/13726/ у меня ошибка выходит Добавлено спустя 16 минут 50 секунд: // print "Хм, что-то не получилось"; print "Привет, ".$userdata['user_login'].". Всё работает!"; показывет логин при входе, это прикол.......)))) Добавлено спустя 9 минут 1 секунду: вопрос как написать logout и прочитать логин на других страницах?
эмм... во-первых куки ставим ДО вывода текста, а не так как это сделано в 1-м скрипте а чтоб сделать логаут достаточно обнулить куки и обновить страницу что касаемо того, как прочитать логин на других страницах, вот тут ваще непонятно что имелось ввиду ух ты, а в базе и в куках лежит один и тот же хэш?? красота тогда лучше 3 раза по md5 для надёжности ))