Проверка установки Cookie php

Discussion in 'PHP' started by xpxp, 10 Oct 2011.

  1. xpxp

    xpxp New Member

    Joined:
    18 Jul 2011
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Каким образом можно проверить средствами php установились ли куки юзеру при первом же посещении страницы или нет.
     
  2. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    PHP:
    if (isset ($_COOKIE['admin'])) {
      
    // do something
    }
     
  3. xpxp

    xpxp New Member

    Joined:
    18 Jul 2011
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Я наверное немножко не так выразился))
    Допусти юзер зашел на сайт site.ru и ему сразу же появилось уведомления (Куки установлены) либо (куки не удалось установить).
    А данным способом это уведомления появится только тогда, когда юзер перейдет на вторую страницу и тогда уже переменная $_COOKIE['admin'] определит есть ли куки или нету. И в данном способе всегда при первом открытии сайта будет выводится (куки не удалось установить)
     
  4. AnGeI

    AnGeI Elder - Старейшина

    Joined:
    8 Dec 2008
    Messages:
    396
    Likes Received:
    79
    Reputations:
    16
    xpxp, за один запрос установить и считать - никак нельзя.
     
  5. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    937
    Likes Received:
    162
    Reputations:
    27
    xpxp, смотрите в сторону работы с куками в JavaScript.
     
  6. Drug121

    Drug121 Banned

    Joined:
    20 Mar 2011
    Messages:
    25
    Likes Received:
    1
    Reputations:
    0
    icq: 475098348
    отпишись.кажется я разобрался
     
    #6 Drug121, 15 Oct 2011
    Last edited: 15 Oct 2011
  7. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Drug121 пользователь находится на странице w.php и вы его редиректите туда же? Тогда ничего странного - после редиректа пользователь попадает на новую страницу, для которой не существует предыдущего состояния вашего цикла.

    Вторая ошибка у вас - даже если пользователю можно установить куку - первый раз скрипт определит ошибку, и если вы сделаете какую-то дополнительную логику (например занесение в БД результата проверки) - то у вас будет 100% пользователей, для которых кука "не устанавливается", хотя это не так.

    Обе проблемы можно (вроде как) решить проверкой заголовка Referer
     
    _________________________
  8. Drug121

    Drug121 Banned

    Joined:
    20 Mar 2011
    Messages:
    25
    Likes Received:
    1
    Reputations:
    0

    я уже и удалил тот скрипт.понял ошибки)

    А как на счет вот такого варианта :

    if(!$cookie AND $c<0) {

    function schet($c) {
    static $c;
    global $c;
    $c++;

    }



    $a=0;
    $b=1;
    while ($a<=$b) {
    header ("location: w.php");
    }
    }

    elseif(!$cookie) {
    echo " Куки не установлены"; }

    else {
    echo " Куки установлено";
    }
     
    #8 Drug121, 15 Oct 2011
    Last edited: 15 Oct 2011
  9. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Drug121 то же самое - переменные после редиректа перестают существовать. Вообще. Все. Исключений нет.

    Разумного способа идентификации пользователя в отсутствие кукисов - не существует. Единственное - вы можете подставлять в адрес уникальный текст/отправлять данные пост-запросом - но это будет уже некрасиво.
     
    _________________________
  10. Drug121

    Drug121 Banned

    Joined:
    20 Mar 2011
    Messages:
    25
    Likes Received:
    1
    Reputations:
    0
    Но почему у меня все работает?
    Если Возможность записи куки включена то выводится сообщение:"Куки установлено"
    Если же я в браузере отключаю возможность записи куки то выдает сообщение:"" Куки не установлены"

    Все понял) Я не тер старые куки.только отключал возможность их чтения.
    Извиняюсь.
     
    #10 Drug121, 15 Oct 2011
    Last edited: 15 Oct 2011