Проблема с удалением COOKIE

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

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

    1Dreamweaver1

    Регистр.:
    5 янв 2008
    Сообщения:
    417
    Симпатии:
    44
    В зависимости от того откуда пришел человек устанавливается Cookie.

    Если человек пришел на сайт с урл: http://www.google.com/search?hl=en&q=
    то устанавливаются 2 Cookie.
    HTML:
    setcookie("refferer","$ref",time() + 60 * 60 * 24 * 30,"/"); - gogle
    setcookie("urlref","$location",time() + 60 * 60 * 24 * 30,"/"); страница на которую попал.
    Затем он идет на страницу с формой и cookie передается и инсертится в базу.

    Если человек пришел на сайт с урл:
    http://mydomain.com/?pid=Adf15987&kw=some keyword&mt=b&ad=789435
    то устанавливается cookie
    HTML:
    setcookie ("param", $queryString, time() + 60 * 60 * 24 * 30);
    Если я перехожу по ссылке http://www.google.com/search?hl=en&q=
    на сайт, за тем на форму то мне выводятся 2 cookie

    Далее если я сразу, не закрывая броузер, перехожу по ссылке http://mydomain.com/?pid=Adf15987&kw=some keyword&mt=b&ad=789435
    на сайт, затем на форму, то уже выводится 3 Cookie

    Как сделать так:
    Пример:
    Если захожу по ссылке http://www.google.com/search?hl=en&q=, затем на форму, выводилось 2 cookie (refferer , urlref)

    Если захожу по ссылке http://mydomain.com/?pid=Adf15987&kw=some keyword&mt=b&ad=789435 затем на форму, выводилось 1 cookie (param)
     
  2. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    590
    Вопрос не совсем понятен.
    Если тебе нужны только конкретные куки, то и используй их (и пофигу сколько их установилось вообще).

    Если вопрос в том как удалить куку, то просто задаёшь ей время в прошлом
    PHP:
    setcookie ('mycookie'''time() - 3600);
     
    1Dreamweaver1 нравится это.
  3. Brevis

    Brevis Создатель

    Регистр.:
    6 окт 2007
    Сообщения:
    16
    Симпатии:
    7
    Можно попробовать устанавливать всего одну куку в любом случае (с гугла пришли или нет). А различаться они будут по формату: напрмер, если пришли с гугла, то кука будет иметь такой формат #google#$ref||$location, а если не с гугла -- то просто $queryString.
    А при выводе куки проверяем ее формат (на наличие #google# в ней), и распарсиваем в случае с гуглом или просто выводим в другом случае.
    Таким образом не будут накапливатся куки (создаваться по 3 штуки).
     
    1Dreamweaver1 нравится это.
  4. 1Dreamweaver1

    1Dreamweaver1

    Регистр.:
    5 янв 2008
    Сообщения:
    417
    Симпатии:
    44
    То есть куки удалять не обязательно?

    Тогда делаю так:
    PHP:
    if (isset($_COOKIE['param'])) {
        
    parse_str($_COOKIE['param'], $param);
            
    Sql="insert into ..."
    }
    else if (isset(
    $_COOKIE['refferer']) && isset($_COOKIE['urlref']))
    {
    Sql="insert into ..."
    }      
    else {
    sql=...
    }
    С какой бы ссылке не перешел, постоянно инсертиться cookie(refferer, urlref)
     
  5. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    590
    Чисти куки после вставки в БД (они у тебя просто накапливаются, нормальный юзер не будет у тебя на сайте регистрироваться по нескольку раз).
    Хотя мне кажется это проще было организовать на сессиях.
     
    1Dreamweaver1 нравится это.
  6. 1Dreamweaver1

    1Dreamweaver1

    Регистр.:
    5 янв 2008
    Сообщения:
    417
    Симпатии:
    44
    Делаю так, но тоже самое
    PHP:
    if (isset($_COOKIE['param'])) {
        
    parse_str($_COOKIE['param'], $param);
            
    Sql="insert into ..."

    unset($_COOKIE["param"]);
    }
    else if (isset(
    $_COOKIE['refferer']) && isset($_COOKIE['urlref']))
    {
    Sql="insert into ..."

    unset($_COOKIE["refferer"]);
    unset(
    $_COOKIE["urlref"]);

    }      
    else {
    sql=...
    }  
     
  7. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    590
    Прочитай мой пост выше как удаляются куки :D
    Это тебе не сессия - простой unset не проканает.
     
    1Dreamweaver1 нравится это.
  8. 1Dreamweaver1

    1Dreamweaver1

    Регистр.:
    5 янв 2008
    Сообщения:
    417
    Симпатии:
    44
    Я делал так, тоже самое
    Не удаляет cookie
    PHP:
    if (isset($_COOKIE['param'])) {
        
    parse_str($_COOKIE['param'], $param);
            
    Sql="insert into ..."

    setcookie ("param"$queryStringtime() - 60 60 24 30); 
    setcookie ('param'''time() - 3600);  

    }
    else if (isset(
    $_COOKIE['refferer']) && isset($_COOKIE['urlref']))
    {
    Sql="insert into ..."

    setcookie ("refferer"$reftime() - 60 60 24 30);
    setcookie ("urlref"$locationtime() - 60 60 24 30);


    }      
    else {
    sql=...
     
  9. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    590
    Тебе самому не надоело морочиться?
    1. Нахрена тебе для этой задачи куки, если она элементарно решается при помощи сесии (при условии, что весь процесс происходит одномоментно).

    2. Куки прекрасно удаляются - ты либо что-то делаешь не так, либо у тебя перед setcookie производится вывод в браузер, который не даёт ей сработать.

    3. почему в коде в одном месте "sql" в другом "Sql" и вообще без знака "$"
     
    1Dreamweaver1 нравится это.
  10. 1Dreamweaver1

    1Dreamweaver1

    Регистр.:
    5 янв 2008
    Сообщения:
    417
    Симпатии:
    44
    Конечно надоело!!! Но хочется разобраться как сделать с помощью cookie.

    Если я в форму до вывода вставляю
    HTML:
    setcookie ('refferer', '', time() - 60 * 60 * 24 * 30);
    setcookie ('urlref', '', time() - 60 * 60 * 24 * 30);
    setcookie ('param', '', time() - 60 * 60 * 24 * 30); 
    То cookie удаляются. Тогда получается так: человек приходит с какойто ссылки на сайт, затем идет на форму (куки удаляются). Он заполняет форму и куки не вставляются в БД.

    Как сделать что бы cookie удалялись после вставки в БД?

    опечатка
     
Статус темы:
Закрыта.