Cookie и htaccess - проблема!

Don Arana

Новичок
Cookie и htaccess - проблема!

Привет всем!

У меня вопрос - почему может некорректно работать функция setcookie при использовании правил модуля mod_rewrite в файле .htaccess (при создании ЧПУ).


Пример.
В начале каждого файла (index.php, price.php, product.php и basket.php) выполняется код на проверку существования cookie у пользователя. Код, подключаемый через require('./***/init.inc.php'). Естесственно, выполняется до вывода в браузер любого html.

Вот он:

PHP:
<?php

// Работа с куками

// qb_query - функция для выполнения mysql запросов.

if(!isset($_COOKIE['test'])) {
    // кука на 90 дней
    $cookie_life_time = time()+60*60*24*90;
    $value = md5(time());
    setcookie('test', $value, $cookie_life_time);
} else {
    $kuka = $_COOKIE['test'];
    // Есть ли кука в БД?
    $kuka_qry = db_query("
        SELECT
            *
        FROM
            basket
        WHERE
            cookie = '$kuka'
    ");
    $fch = mysql_fetch_array($kuka_qry);
    // Если её нет в БД, то добавляем
    if(!$fch) {
        $insert = db_query("
            INSERT INTO
                basket(cookie)
            VALUES('$kuka')
        ");
        $kuka_t = "Вставили куку в БД. т.к. её там нет<br>";
    } else {
        $kuka_t = "Кука есть в БД<br>";
    }
}
?>
#############################
Файл htaccess:

DirectoryIndex index.php

# Apache/PHP/site settings:

<Files ~ "\.inc.php$">
Order allow,deny
Deny from all
</Files>

<IfModule mod_rewrite.c>

RewriteEngine on
Options +FollowSymlinks

RewriteBase /alanda/
RewriteRule ^.htaccess$ - [F]

RewriteRule ^catalog[/]?$ price.php
RewriteRule ^catalog/([_a-zA-Z0-9]+)[/]?$ price.php?group=$1
RewriteRule ^catalog/([_a-zA-Z0-9]+)/([_a-zA-Z0-9]+)[/]?$ price.php?group=$1&vendor=$2

RewriteRule ^product[/]?$ product.php
RewriteRule ^product/([-_\sa-zA-Z0-9]+)[/]?$ product.php?articul=$1
</IfModule>
#############################


<b>Говоря конкретно и используя конкретный сайт</b>:

Как НЕ работает:

Идем по пути

<b>Товар</b>
http://www.alanda.ru/product/123/
Скрипт проверяет наличие куки test, не находит её, создает.
Обновляем страницу - записывает её в БД, выводит сообщение об этом.

Идем на страницу ->

<b>Каталог товаров</b>
http://www.alanda.ru/catalog/
Опа!
Как будто и не создавали куку!!!


Вариант с использованием прямых ссылок - всё работает! То есть:

Идем по пути:

<b>Товар</b>
http://www.alanda.ru/product.php?articul=123
Скрипт проверяет наличие куки test, не находит её, создает.
Обновляем страницу - записывает её в БД, выводит сообщение об этом.

Идем на страницу ->

<b>Каталог товаров</b>
http://www.alanda.ru/price.php

Все нормально! Проверяет, есть ли такая кука test, находит её в БД, выводит об этом сообщение.

И вообще, если не использовать ЧПУ, а только лишь обычные ссылки - все работает замечательно.

Обыскал и гугл, и форум. Никак не возьму в толк, в чем дело. Помогите пожалуйста!

P.S.: Да, конечно, мой код не безгрешен, пока только учусь. Но, как понимаю, тут дело в чем то глобальном. Но в чем?
 

Don Arana

Новичок
SiMM
Да, про просмотр обмена заголовками вчера вечером задумался, но уже с раьботы уходил, был по этой ссылке конечно, сейчас попробую посмотреть!

И про domain думал, но т.к. никогда раньше его не использовал, предположил, что не в нем дело..

-~{}~ 16.08.05 10:17:

Ура! :)
 
Сверху