Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Корзина на COOKIE 
V
    Опции темы
maugli
Дата 10.8.2008, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 8.3.2005

Репутация: нет
Всего: нет



Ockonal,  сделал так:
Код
<?php
if( isset($_GET['id']) )
{
    setcookie("cart[0]", "50");
    setcookie("cart[1]", "150");
}
if( !isset($_GET['id']) )
{
    include "header.php";
    print_r($_COOKIE);
    include "footer.php";
}
?>


И все нормально, почему же тогда не работает с классами, т.е. как я описал выше?
PM MAIL   Вверх
Ockonal
Дата 10.8.2008, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Smile
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 9.7.2007
Где: Ukraine::Nikolaev ;

Репутация: 1
Всего: 3



Сессии - установка кукиса...
--------------------
Ум заключается не только в знании, но и в умении прилагать знание на деле.Самое лучшее из всех доказательств есть опыт.Каждому человеку свойственно ошибаться, но никому, кроме глупца, несвойственно упорствовать в ошибке.
PM MAIL WWW ICQ Skype GTalk Jabber MSN   Вверх
Letov
Дата 10.8.2008, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 321
Регистрация: 22.2.2007
Где: Санкт-Петербург

Репутация: нет
Всего: 4



Цитата(Ockonal @  10.8.2008,  14:40 Найти цитируемый пост)
Сессии - установка кукиса...

Ошибаетесь - все зависит от настройки php.
Даже если php настроен на установку кукиса для сохранения сессии, то он точно установит кукис=)


--------------------
Не бывает плохих языков программирования. Бывают плохие программисты...

PM MAIL   Вверх
maugli
Дата 10.8.2008, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 8.3.2005

Репутация: нет
Всего: нет



Letov, Это один и тот же файл.
Сессии не подходят, т.к. должны сохранять данные после закрытия окна.

Сделал следующее:
Код
<?php
if( isset($_GET['id']) )
{
    setcookie("cart[0]", "5");
    setcookie("cart[1]", "10");
    
    $refresh = '<html>
    <head>
    <meta http-equiv="refresh" content="0; url=http://'.$_SERVER['HTTP_HOST'].'/cart/">
    </head>
    <body>&nbsp;</body></html>';
    echo $refresh;  
}
if( !isset($_GET['id']) )
{
    include "header.php";
    print_r($_COOKIE);
    include "footer.php";
}
?>


Перестало работать, почему-то рефреш все портит. Что вообще происходит с этим миром? smile
PM MAIL   Вверх
Ockonal
Дата 10.8.2008, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Smile
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 9.7.2007
Где: Ukraine::Nikolaev ;

Репутация: 1
Всего: 3



По-ходу, из-за инклуда файла с классом.
--------------------
Ум заключается не только в знании, но и в умении прилагать знание на деле.Самое лучшее из всех доказательств есть опыт.Каждому человеку свойственно ошибаться, но никому, кроме глупца, несвойственно упорствовать в ошибке.
PM MAIL WWW ICQ Skype GTalk Jabber MSN   Вверх
Ockonal
Дата 10.8.2008, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Smile
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 9.7.2007
Где: Ukraine::Nikolaev ;

Репутация: 1
Всего: 3



Цитата(Letov @ 10.8.2008,  14:43)
Цитата(Ockonal @  10.8.2008,  14:40 Найти цитируемый пост)
Сессии - установка кукиса...

Ошибаетесь - все зависит от настройки php.
Даже если php настроен на установку кукиса для сохранения сессии, то он точно установит кукис=)

smile Если ошибка из-за отправки хедера браузеру - кукис не поставиться и при создании сессии.
--------------------
Ум заключается не только в знании, но и в умении прилагать знание на деле.Самое лучшее из всех доказательств есть опыт.Каждому человеку свойственно ошибаться, но никому, кроме глупца, несвойственно упорствовать в ошибке.
PM MAIL WWW ICQ Skype GTalk Jabber MSN   Вверх
Letov
Дата 10.8.2008, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 321
Регистрация: 22.2.2007
Где: Санкт-Петербург

Репутация: нет
Всего: 4



Цитата(maugli @  10.8.2008,  14:44 Найти цитируемый пост)
Перестало работать, почему-то рефреш все портит. Что вообще происходит с этим миром? 

А если вместо рефреша ставить
Код

header('Location: '._SERVER['HTTP_HOST'].'/cart/');


Добавлено через 1 минуту и 14 секунд
Цитата(Ockonal @  10.8.2008,  14:48 Найти цитируемый пост)
Цитата(Letov @ 10.8.2008,  14:43)Цитата(Ockonal @  10.8.2008,  14:40 )Сессии - установка кукиса...Ошибаетесь - все зависит от настройки php.Даже если php настроен на установку кукиса для сохранения сессии, то он точно установит кукис=) Если ошибка из-за отправки хедера браузеру - кукис не поставиться и при создании сессии.

Надо ставить session_start(); перед выводом в браузер, и все будет нормально, или изменить настройки php, чтоб он сессии через адреса определял...

Добавлено через 2 минуты и 18 секунд
Да, если будет хоть бы один символ (и пробел тоже) перед <?php, то кукис тоже не поставится!


--------------------
Не бывает плохих языков программирования. Бывают плохие программисты...

PM MAIL   Вверх
maugli
Дата 10.8.2008, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 8.3.2005

Репутация: нет
Всего: нет



Letov, Все тоже самое.
Только если отдельный файл делаю, то все нормаль smile даже с рефрешом.

Буду тогда отдельный файл делать, для добавления куков smile

Всем спасибо, но все равно интересно что за лажа вообще smile естественно из-за моего незнания.
PM MAIL   Вверх
Ockonal
Дата 10.8.2008, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Smile
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 9.7.2007
Где: Ukraine::Nikolaev ;

Репутация: 1
Всего: 3



Я думаю, из-за инклуда smileПопробуйте создать класс в том же документе и использовать его? 
--------------------
Ум заключается не только в знании, но и в умении прилагать знание на деле.Самое лучшее из всех доказательств есть опыт.Каждому человеку свойственно ошибаться, но никому, кроме глупца, несвойственно упорствовать в ошибке.
PM MAIL WWW ICQ Skype GTalk Jabber MSN   Вверх
Letov
Дата 10.8.2008, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 321
Регистрация: 22.2.2007
Где: Санкт-Петербург

Репутация: нет
Всего: 4



Цитата(Ockonal @  10.8.2008,  15:10 Найти цитируемый пост)
Я думаю, из-за инклуда Попробуйте создать класс в том же документе и использовать его? 

Из-за Инклуда не должно. У меня весь сайт на инклудах - и все работает.


--------------------
Не бывает плохих языков программирования. Бывают плохие программисты...

PM MAIL   Вверх
HackMan
Дата 10.8.2008, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Юзверь-программист
**


Профиль
Группа: Участник
Сообщений: 391
Регистрация: 18.6.2005
Где: .ua

Репутация: 8
Всего: 9



Так, давай попорядку.


Цитата(maugli @  10.8.2008,  13:44 Найти цитируемый пост)
Сессии не подходят, т.к. должны сохранять данные после закрытия окна.

Вообще-т кука с данными о сессии хранится до закрытия браузера, а не окна. Или это и имелось в виду? Ну да ладно, допустим. 

Цитата(maugli @  10.8.2008,  13:44 Найти цитируемый пост)
    setcookie("cart[0]", "5");
    setcookie("cart[1]", "10");


Идёт на php.net и читаем:
Цитата

bool setcookie  ( string $name  [, string $value  [, int $expire  [, string $path  [, string $domain  [, bool $secure  [, bool $httponly  ]]]]]] )


Теперь читаем дальше:
Цитата

 expire

    The time the cookie expires. This is a Unix timestamp so is in number of seconds since the epoch. In other words, you'll most likely set this with the time() function plus the number of seconds before you want it to expire. Or you might use mktime(). time()+60*60*24*30 will set the cookie to expire in 30 days. If set to 0, or omitted, the cookie will expire at the end of the session (when the browser closes).

        Замечание: You may notice the expire parameter takes on a Unix timestamp, as opposed to the date format Wdy, DD-Mon-YYYY HH:MM:SS GMT, this is because PHP does this conversion internally.
        expire is compared to the client's time which can differ from server's time. 


то есть в твоём случае куки опять таки при закрытии браузера удалятся. 

Читаем ещё дальше:
Цитата

 path

    The path on the server in which the cookie will be available on. If set to '/', the cookie will be available within the entire domain . If set to '/foo/', the cookie will only be available within the /foo/ directory and all sub-directories such as /foo/bar/ of domain . The default value is the current directory that the cookie is being set in.


У меня такое подозрение, что кука устанавливается из какого-нибудь /public_html/subdirectory/index.php, а вызывается из /public_html/index.php. Попробуй явно задать '/'


--------------------

Завтра - это самый загруженный день недели smile

user posted image

user posted image
PM MAIL ICQ   Вверх
maugli
Дата 10.8.2008, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 8.3.2005

Репутация: нет
Всего: нет



HackMan, Спасибо за ответ, сделал уже по-другому.
Тут у меня теперь в другом вопрос smile записывать я их записываю, а вот с удалением проблема.
Написал следующее:
Код
if( isset($_GET['id']) && $_GET['action'] == "delete" )
{
    $id = $_GET['id'];
    $i = $_GET['i'];
    
    //print_r($_COOKIE['cart']); echo '<br>';
    
    setcookie("cart[$i]", $id, time()-60*60*24*30);
}
header('Location: http://'.$_SERVER['HTTP_HOST'].'/cart/');

Удаляет только то, что удалю первым, а потом не удаляет, не знаю почему. Подскажите пожалуйста.
PM MAIL   Вверх
HackMan
Дата 10.8.2008, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Юзверь-программист
**


Профиль
Группа: Участник
Сообщений: 391
Регистрация: 18.6.2005
Где: .ua

Репутация: 8
Всего: 9



Пропускай второй параметр:
Код

setcookie("cart[$i]", "", time()-3600);



--------------------

Завтра - это самый загруженный день недели smile

user posted image

user posted image
PM MAIL ICQ   Вверх
maugli
Дата 10.8.2008, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 8.3.2005

Репутация: нет
Всего: нет



HackMan, Сделал так, но все равно не удаляет. В чем может быть проблема?
PM MAIL   Вверх
Letov
Дата 10.8.2008, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 321
Регистрация: 22.2.2007
Где: Санкт-Петербург

Репутация: нет
Всего: 4



Процитирую из книги М. Кузнецова и И. Симдянова: PHP 5
Цитата

Уничтожить cookie можно, установив нулевое время жизни, как это продемонстрировано в листинге
Код

<?php
   setcookie("name", "value");
?>

Следует помнить, что для уничтожения cookie с ограничениями по каталогу и директории сделует выставлять точно такие же ограничения при удалении cookie, в противном случае cookie не будет уничтожен.



--------------------
Не бывает плохих языков программирования. Бывают плохие программисты...

PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0726 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.