session_start(); $login=$_POST['login']; $password=$_POST['password']; if($login and $password){ $rand=rand(); include 'basdan.php'; $result=mysql_query("SELECT * FROM admin WHERE login='".$login."' AND password='".$password."'"); $myrow=mysql_fetch_array($result); if(isset($myrow['login'])){ $_SESSION['random']=$rand; setcookie('rand',$rand,time()+900); echo 1; } } else{ header("HTTP/1.0 404 Not Found"); } выше написан обработчик для входа в админ панель. Если указаны логин и пароль, то создается сессия и кук с неким рандомным числом. все работает прекрасно, но! при попытки зайти еще раз(например после закрытия браузера и повторном открытии) - кук не перезаписывается, а остается старый. То есть надо либо ждать 15 минут, чтобы он "умер", либо чистить самому в браузере - тогда все ок: заново записываетс число в сессию и кук. Как быть? почему не перезаисывается кук?
почитай доку по setcookie, может дело в пути или в субдомене. может быть 100500 кук с одинаковым названием, но рассованные по разным нычкам )))
Код (PHP): $sessUsr = md5(rand()); setcookie('SESSUSR', $sessUsr); Добавлено спустя 4 минуты 27 секунд: там будет написано "куки будут удалены после закрытия браузера"
А что мне даст хеширование значения? Как я понял, кук второй раз не пишется, так как параметр жизни у него уже другой. Эта проблема не нова. При одноименных куках, но с разными параметрами второй кук не будет записан(а может он записывается иначе). Собственно я продвинуля в решении этой проблемы. Спасибо artoodetoo за подсказку.
Не пробовали делать при авторизации: Код (PHP): unset($_COOKIE['rand']); А потом: Код (PHP): setcookie('rand',$rand,time()+900); Только вот зачем делать запись и в сессии и в куки, не понятно.
Защита. Зашел - записалось в кук и сессию одинаковое значение. Спер кук - ноль от него пользы, так как сессия должна существовать и совпадать с куком. И кук я даю 15 минут жизни для того,чтобы если админ забыл закрыть страницу- через 15 минут нельзя было зайти без подтверждения логина и пароля.
smitt спасибо, очень полезную вещь узнал. Огромное спасибо. С иньекцией решу вопрос фильтрацией вводимого пароля и логина. Но вопрос все же с куками остается открыт. Предложение Your о удаление не дало результатов - то есть не удаляется кук просто так. И перезаписать на пустой(само собой не получится).