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

Статус
В этой теме нельзя размещать новые ответы.

1Dreamweaver1

Профессор
Регистрация
4 Янв 2008
Сообщения
417
Реакции
45
В зависимости от того откуда пришел человек устанавливается Cookie.

Если человек пришел на сайт с урл: Для просмотра ссылки Войди или Зарегистрируйся
то устанавливаются 2 Cookie.
HTML:
setcookie("refferer","$ref",time() + 60 * 60 * 24 * 30,"/"); - gogle
setcookie("urlref","$location",time() + 60 * 60 * 24 * 30,"/"); страница на которую попал.

Затем он идет на страницу с формой и cookie передается и инсертится в базу.

Если человек пришел на сайт с урл:
Для просмотра ссылки Войди или Зарегистрируйся keyword&mt=b&ad=789435
то устанавливается cookie
HTML:
setcookie ("param", $queryString, time() + 60 * 60 * 24 * 30);

Если я перехожу по ссылке Для просмотра ссылки Войди или Зарегистрируйся
на сайт, за тем на форму то мне выводятся 2 cookie

Далее если я сразу, не закрывая броузер, перехожу по ссылке Для просмотра ссылки Войди или Зарегистрируйся keyword&mt=b&ad=789435
на сайт, затем на форму, то уже выводится 3 Cookie

Как сделать так:
Пример:
Если захожу по ссылке Для просмотра ссылки Войди или Зарегистрируйся, затем на форму, выводилось 2 cookie (refferer , urlref)

Если захожу по ссылке Для просмотра ссылки Войди или Зарегистрируйся keyword&mt=b&ad=789435 затем на форму, выводилось 1 cookie (param)
 
Вопрос не совсем понятен.
Если тебе нужны только конкретные куки, то и используй их (и пофигу сколько их установилось вообще).

Если вопрос в том как удалить куку, то просто задаёшь ей время в прошлом
PHP:
setcookie ('mycookie', '', time() - 3600);
 
Можно попробовать устанавливать всего одну куку в любом случае (с гугла пришли или нет). А различаться они будут по формату: напрмер, если пришли с гугла, то кука будет иметь такой формат #google#$ref||$location, а если не с гугла -- то просто $queryString.
А при выводе куки проверяем ее формат (на наличие #google# в ней), и распарсиваем в случае с гуглом или просто выводим в другом случае.
Таким образом не будут накапливатся куки (создаваться по 3 штуки).
 
То есть куки удалять не обязательно?

Тогда делаю так:
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)
 
Чисти куки после вставки в БД (они у тебя просто накапливаются, нормальный юзер не будет у тебя на сайте регистрироваться по нескольку раз).
Хотя мне кажется это проще было организовать на сессиях.
 
Делаю так, но тоже самое
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=...
}
 
Прочитай мой пост выше как удаляются куки :D
Это тебе не сессия - простой unset не проканает.
 
Я делал так, тоже самое
Не удаляет cookie
PHP:
if (isset($_COOKIE['param'])) {
    parse_str($_COOKIE['param'], $param);
        Sql="insert into ..."

setcookie ("param", $queryString, time() - 60 * 60 * 24 * 30); 
setcookie ('param', '', time() - 3600);  

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

setcookie ("refferer", $ref, time() - 60 * 60 * 24 * 30);
setcookie ("urlref", $location, time() - 60 * 60 * 24 * 30);


}      
else {
sql=...
}
 
Тебе самому не надоело морочиться?
1. Нахрена тебе для этой задачи куки, если она элементарно решается при помощи сесии (при условии, что весь процесс происходит одномоментно).

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

3. почему в коде в одном месте "sql" в другом "Sql" и вообще без знака "$"
 
Конечно надоело!!! Но хочется разобраться как сделать с помощью cookie.

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

Если я в форму до вывода вставляю
HTML:
setcookie ('refferer', '', time() - 60 * 60 * 24 * 30);
setcookie ('urlref', '', time() - 60 * 60 * 24 * 30);
setcookie ('param', '', time() - 60 * 60 * 24 * 30);

То cookie удаляются. Тогда получается так: человек приходит с какойто ссылки на сайт, затем идет на форму (куки удаляются). Он заполняет форму и куки не вставляются в БД.

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

3. почему в коде в одном месте "sql" в другом "Sql" и вообще без знака "$"
опечатка
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху