За последние 24 часа нас посетил 17361 программист и 1618 роботов. Сейчас ищут 1114 программистов ...

Что не так делаю?

Тема в разделе "PHP для новичков", создана пользователем Sleven, 8 ноя 2007.

  1. Sleven

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

    С нами с:
    18 июл 2006
    Сообщения:
    99
    Симпатии:
    0
    Адрес:
    Сургут
    Вообщем сначала парился с удалением Куки, не удалялись они, но поискав по форуму темки, нашел ответ. Теперь другой вопрос, на который ответ не нашел.
    У меня на сайте гостевая. При авторизации как обычно можно поставить галочку "запомнить меня" - в этом случае устанавливаются куки следующим образом:

    login.php:
    Код (Text):
    1. session_register('id');
    2. session_register('status');
    3. $_SESSION['id']=$arr['id'];
    4. $_SESSION['status']==$arr['status'];
    5. if(isset($_POST['remember'])) { //если отмечен чекбокс "запомнить меня"
    6.  if($_POST['remember']=='1') {
    7.   setcookie('id_missmanager',$arr['id'],time()+2592000); // удаление Куки через 30 дней
    8.  }
    9. }
    Затем в коде самой гостевой, есть кусок, проверяющий есть ли компе соответствующие куки:

    guestbook.php:
    Код (Text):
    1. if(isset($_COOKIE['id_missmanager'])) {
    2.  if(!session_is_registered('id')) {
    3.   session_register('id');
    4.   $_SESSION['id']=$_COOKIE['id_missmanager'];
    5.   $request=mysql_query("SELECT `status` FROM `users` WHERE `id`='".$_SESSION['id']."';");
    6.   $arr=mysql_fetch_array($request);
    7.   $_SESSION['status']=$arr['status'];
    8.  }
    9. }
    Но вот эта зараза почему-то не работает. Т.е. когда закрываю браузер и снова открываю гостевую - я не залогинен (получается куки удалились). Время expire вроде ставлю правильно...
     
  2. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Эти два файла в одной папке?
    PS забудь про session_register, времена register_globals On. Юзай просто session_start и массив $_SESSION.
     
  3. Sleven

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

    С нами с:
    18 июл 2006
    Сообщения:
    99
    Симпатии:
    0
    Адрес:
    Сургут
    да, оба файла в одной папке. session_start и массив $_SESSION я и так всегда использую, тока не понимаю, почему надо забыть про session_register?
     
  4. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
     
  5. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.557
    Симпатии:
    631
    ИМХО проблема в этом. Чекбокс передаёт значения on а не 1.
    Замени на
    Код (Text):
    1.  
    2. if($_POST['remember']=='on'
     
  6. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Чекбокс передаёт то, что указано в value.
    HTML:
    1. <input type="checkbox" value="1" />
    или On, если ничего не указано.
     
  7. Sleven

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

    С нами с:
    18 июл 2006
    Сообщения:
    99
    Симпатии:
    0
    Адрес:
    Сургут
    Sergey89 все верно, у меня в чекбоксе в value указано 1. А если чекбокс не отмечен, то переменная вообще не инициируется насколько я знаю, поэтому сначала проверяю ее наличие:
    Код (Text):
    1. if(isset($_POST['remember'])) { ... }