За последние 24 часа нас посетили 21689 программистов и 1690 роботов. Сейчас ищут 2024 программиста ...

Проблема с куками

Тема в разделе "Прочие вопросы по PHP", создана пользователем literator, 1 ноя 2013.

  1. literator

    literator Активный пользователь

    С нами с:
    29 янв 2013
    Сообщения:
    18
    Симпатии:
    0
    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 минут, чтобы он "умер", либо чистить самому в браузере - тогда все ок: заново записываетс число в сессию и кук. Как быть? почему не перезаисывается кук?
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.114
    Симпатии:
    1.244
    Адрес:
    там-сям
    почитай доку по setcookie, может дело в пути или в субдомене. может быть 100500 кук с одинаковым названием, но рассованные по разным нычкам )))
     
  3. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.331
    Адрес:
    Лень
    Код (PHP):
    1. $sessUsr = md5(rand());
    2. setcookie('SESSUSR', $sessUsr);
    Добавлено спустя 4 минуты 27 секунд:
    там будет написано "куки будут удалены после закрытия браузера"
     
  4. literator

    literator Активный пользователь

    С нами с:
    29 янв 2013
    Сообщения:
    18
    Симпатии:
    0
    А что мне даст хеширование значения?
    Как я понял, кук второй раз не пишется, так как параметр жизни у него уже другой. Эта проблема не нова. При одноименных куках, но с разными параметрами второй кук не будет записан(а может он записывается иначе). Собственно я продвинуля в решении этой проблемы. Спасибо artoodetoo
    за подсказку.
     
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.331
    Адрес:
    Лень
    я тебе пример дал, к чему именно к md обратил внимание, мне это не понятно.
     
  6. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Не пробовали делать при авторизации:
    Код (PHP):
    1. unset($_COOKIE['rand']); 
    А потом:
    Код (PHP):
    1. setcookie('rand',$rand,time()+900); 
    Только вот зачем делать запись и в сессии и в куки, не понятно.
     
  7. literator

    literator Активный пользователь

    С нами с:
    29 янв 2013
    Сообщения:
    18
    Симпатии:
    0
    Защита. Зашел - записалось в кук и сессию одинаковое значение. Спер кук - ноль от него пользы, так как сессия должна существовать и совпадать с куком. И кук я даю 15 минут жизни для того,чтобы если админ забыл закрыть страницу- через 15 минут нельзя было зайти без подтверждения логина и пароля.
     
  8. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    У тебя sql Injection в коде.Всем будет наплевать на твою защиту.
     
  9. literator

    literator Активный пользователь

    С нами с:
    29 янв 2013
    Сообщения:
    18
    Симпатии:
    0
    smitt спасибо, очень полезную вещь узнал. Огромное спасибо. С иньекцией решу вопрос фильтрацией вводимого пароля и логина.
    Но вопрос все же с куками остается открыт. Предложение Your о удаление не дало результатов - то есть не удаляется кук просто так. И перезаписать на пустой(само собой не получится).