Xpoint
   [напомнить пароль]

Передача Array в COOKIE и инсерт в Mysql

Метки: [без меток]
2009-01-02 21:41:11 [обр] Blademen[досье]

Есть скрипт, который выводит откуда пришел пользователь (домен, запрос, полный путь)

 ***
    return array(
        "Domain"=>"$SeDomain",
        "Query"=>"$SeQuery",
        "Referer"=>"$SeReferer"
    );
$test=seReferer(); print_r($test);

Нужно все параметры записать в куки и передать их на другую страницу и вставить в базу.
Создал 3 поля table (id,Domain, Query, Referer)

Делаю так:

$test=seReferer();
$im=implode(",",$test);
setcookie("refferer","$im",time()+30,"/"); 
$refferer = $_COOKIE["refferer"]; 
echo $refferer;

Передает все параметры на вторую страницу и выводит их в строчку через запятую.
Пример:

http://www.google.com,keyword,......earch?hl=en&q=keyword&aq=f&oq=
1 параметр: www.google.com
2 параметр: keyword (может принимать любое слово)
3 параметр: http://www.google.com,keyword,......earch?hl=en&q=keyword&aq=f&oq=

При инсерте данных в базу с первой страницы все работает.

Делаю так:

$sql = "INSERT INTO table (". implode(", ", array_keys($test)) .") 
VALUES ('" . implode("','", array_values($test)) ."')";
var_dump($sql);
mysql_query($sql) or die(mysql_error());

Теперь непонятная проблема. Нужно занести эти данные в базу не с первой, а со второй страницы.

Делаю так:

parse_str($_COOKIE['refferer'], $refferer);
$sql = "INSERT INTO table (". implode(", ", array_keys($refferer)) .") 
VALUES ('" . implode("','", array_values($refferer)) ."')";
var_dump($sql);
mysql_query($sql) or die(mysql_error());
$last = mysql_insert_id();

Выводит ошибку
string(154) "INSERT INTO table (www_google_com,site:domain.com,http://www_google_com/search?hl, q, aq, oq) VALUES ('en','site:domain.com','f','')" You have an error in your SQL syntax;

спустя 1 день 19 часов [обр] triumvurat[досье]

Что по вашему должен делать запрос

INSERT INTO table (www_google_com,site:domain.com,http://www_google_com/search?hl, q, aq, oq) VALUES ('en','site:domain.com','f','')

?

спустя 4 часа 47 минут [обр] Blademen[досье]
Запрос должен делать следующее:
INSERT INTO table (Domain, Query, Referer) VALUES ('www_google_com','site:domain.com','http//www.google.com/search?hl=en&q=keyword&aq=f&oq=')
спустя 44 минуты [обр] triumvurat[досье]
  1. дайте структуру таблицы
  2. дайте 2 запроса, которые должны быть исполнены
спустя 53 минуты [обр] Blademen[досье]

table (id,Domain, Query, Referer)

array должен сохраняться в куки и затем инсертиться в базу в твком виде

idDomainQueryReferer
1www_google_comsite:domain.com'http//www.google.com/search?hl=en&q=keyword&aq=f&oq=

Используется один запрос.

***
    return array(
        "Domain"=>"$SeDomain",
        "Query"=>"$SeQuery",
        "Referer"=>"$SeReferer"
    );
$test=seReferer(); print_r($test);

$test=seReferer();
$im=implode(",",$test);
setcookie("refferer","$im",time()+30,"/"); 
$refferer = $_COOKIE["refferer"]; 

parse_str($_COOKIE['refferer'], $refferer);
$sql = "INSERT INTO table (". implode(", ", array_keys($test)) .") 
VALUES ('" . implode("','", array_values($test)) ."')";
var_dump($sql);
mysql_query($sql) or die(mysql_error());
спустя 17 часов [обр] Филипп Ткачев(20/112)[досье]
Никак не пойму вашей логики работы с куками. Чтобы таскать параметры (переменные) между скриптами воспользуйтесь сессиями. Чтобы исключить ошибки в запросах экранируйте опасные символы. Уже третья тема, а те же грабли.
спустя 1 день 1 час [обр] Blademen[досье]
Мне нужно сделать через Cookie
спустя 1 день 22 часа [обр] Blademen[досье]

С этим разобрался,теперь не получается правильно вставитьв таблицу.

Должно работать так:
Если человек прищел на сайт с http//www.google.com/search?hl=en&q=key&aq=f&oq=
то создаются 2 cookie, затем переходит на форму и заполняет ее должно в базу инсертиться Cookie (test1,test2)

setcookie("test1","$ref",time() + 60 * 60 * 24 * 30,"/"); 
setcookie("test2","$loc",time() + 60 * 60 * 24 * 30,"/");

Если человек прищел на сайт с http//www.google.com/search?hl=en&q=key&aq=f&oq=
то создаются cookie, затем переходит на форму и заполняет ее должно в базу инсертиться Cookie (param)

Делаю так. Подскажите что не так.

if (isset($_COOKIE['param'])) {
    parse_str($_COOKIE['param'], $param);
        Sql="insert into ..."
}
else if (isset($_COOKIE['test1']) && isset($_COOKIE['test2']))
{
Sql="insert into ..."
}      
else {
sql=...
}
спустя 22 часа [обр] Алексей Севрюков(162/1280)[досье]

Blademen[досье] Еще раз - не делайте через куки ТО, ДЛЯ ЧЕГО они не предназначены. А они не предназначены для хранения данных. Выше уже было сказано что лучше такие вещи делать через сессии. Плюсы очевидны:

  1. Неограниченное количество данных, тогда как в куках много хранить не получится.
  2. Безопасность. В куках будет храниться только ключ сессии, все данные будут храниться в сессии.
  3. Удобство. В PHP уже имеется прекрасный встроенный механизм для работы с сессиями.

Дело конечно Ваше, но Ваша упертость в недалеком будущем создаст Вам огромную кучу проблем.

Powered by POEM™ Engine Copyright © 2002-2005