Работа с cookies

Тема в разделе "PHP", создана пользователем coolaj, 1 мар 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. coolaj

    coolaj Создатель

    Регистр.:
    9 дек 2008
    Сообщения:
    46
    Симпатии:
    12
    Пытаюсь кое-что сделать в PHP на тему cookies.

    Что мне нужно: мне нужно, чтобы информация запоминалась в cookies на компе пользователя. Чтобы когда он снова заходил на сайт, то он автоматически ауторизовался на сайте

    Что я смог сделал: пока я смог сделать только так: если у меня открыты несколько окон броузера, то если я закрываю и открываю сайт, тогда я авторизуюсь. Но когда я закрываю все броузеры, то вся информация теряется.

    Помогите, кто знает как.
     
  2. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    590
    Выставлять время жизни куки.
    В мануале достаточно примеров.
     
  3. alexz15

    alexz15

    Регистр.:
    3 окт 2008
    Сообщения:
    394
    Симпатии:
    190
    PHP:
    setcookie ("name""name"time()+3600*24); // записываем cookies на сутки
    setcookie ("name""name"time()+3600*24*365); // записываем cookies на год
     
  4. coolaj

    coolaj Создатель

    Регистр.:
    9 дек 2008
    Сообщения:
    46
    Симпатии:
    12
    Огромное спасибо, я почему-то просто напутал cookies с session

    Было:
    PHP:
    session_start();
    if (
    $userid && $password)
    {
        
    // если пользователь как раз пытается зарегистрироваться
        
    if ($userid=="***" and $password=="***")
        {
            
    // если пользователь найден в базе данных,
            // зарегистрировать его идентификатор
            
    $valid_user $userid;
            
    session_register("valid_user") ;
        }
    }
    Стало:

    PHP:
    session_start();
    if (!isset(
    $_COOKIE["userid"]) or !isset($_COOKIE["password"]) or ($_COOKIE["userid"] <> "" and $_COOKIE["password"] <> ""))
    {
        
    // если пользователь как раз пытается зарегистрироваться
        
    if ($userid=="***" and $password=="***")
        {
            
    // если пользователь найден в базе данных,
            // зарегистрировать его идентификатор
            
    setcookie("userid"$useridtime()+3600*24*14);
            
    setcookie("password"$passwordtime()+3600*24*14);
            
    $valid_user $userid;
            
    session_register("valid_user") ;
        }
    }
     
  5. Kirillik

    Kirillik Создатель

    Регистр.:
    22 фев 2009
    Сообщения:
    32
    Симпатии:
    7
    какой ужас! ты же хранишь логин и пароль прямо в куках в чистом виде! :eek:

    храни все переменные авторизации только в сессии, таким образом в куках у пользователя будет только ID сессии; а в начале каждой страницы проверяй наличие $_SESSION['userid'] и $_SESSION['password'], а не $_COOKIE

    время жизни сессионной куки установи через функцию session_set_cookie_params
     
  6. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    590
    Забудь про session_register() - это каменный век.
    Используй $_SESSION = .
     
  7. PapaJoe

    PapaJoe

    Регистр.:
    4 авг 2008
    Сообщения:
    620
    Симпатии:
    311
    с $_SESSION тоже не мало проблем.
    если к такому скрипту:
    PHP:
    <?php
    if(isset($_SESSION['id'])){
      echo 
    $_SESSION['id'];
    }
    ?>
    обратиться через запрос script.php?_SESSION[id]=1
    то выведется единица. Тот же результат при проверке _SESSION[userid] и _SESSION[password]
     
  8. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    590
    Проблемы есть со всем, если маны не читать и учится не хочется: session_register - устаревший вариант и убирается из языка.
    А что ты хотел показать своим примером, я не осилил.
     
  9. PapaJoe

    PapaJoe

    Регистр.:
    4 авг 2008
    Сообщения:
    620
    Симпатии:
    311
    Каюсь, не учел некоторые условия для удачной эксплуатации.. =/
     
  10. Murdok

    Murdok

    Регистр.:
    1 окт 2006
    Сообщения:
    236
    Симпатии:
    84
    А если включить session_start();?
    В твоем случае это помоему не сессия
     
Статус темы:
Закрыта.