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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Sessions & Cookies 
:(
    Опции темы
SneG0K
Дата 15.3.2008, 04:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

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



Доброго времени суток. Не работают куки и не регистрируется сессия. smile 
Есть следующий алгоритм: Пользователь зашел на сайт->Идентифицировался->Словил куку->И все
Делаю так. Выбираю записи из БД, переадресовываю инфу другому скрипту с идентификатором сессии, а он должен установить куку,а кука просто не устанавливается. Вот код скрипта 
Код

<?php
session_start();
$session=$_GET['sid'];
$think=$_GET['think'];
switch($think)
 {
  case 0:
   {
    setcookie("user",$session,0);
    session_register('user');
    $_SESSION['user']=admin;
    echo "<script>location.href='../index.php'; </script>";
    break;
   }
  case 1:
   {
    setcookie("user",$session,time()+2419200);
    echo "<script>location.href='../index.php'; </script>";
    break;
   }
  default:
   {
    echo "Don't find this module";
    break;
   }
 }
session_destroy();
?>

В итоге сессия не регестрируется, кука не устанавливается smile  smile  smile 
Что я не так делаю??? 
PM WWW Skype   Вверх
ksnk
Дата 15.3.2008, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



Может, еще раз почитать документацию?
Сессия для скрипта, который обрабатывается PHP - это идентификатор, по которому строится имя сессионного файла. Этот идентификатор находится в куке, если есть возможность, или в адресной строке, если куки отключены. Кука или параметр адресной строки по умолчанию называются PHPSESSID.

Добавлено через 7 минут и 28 секунд
session_destroy();
вот про это следует почитать в документации ;-)


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Feldmarschall
Дата 15.3.2008, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

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



Ну и каша...

Во первых, 
Цитата(SneG0K @  15.3.2008,  04:00 Найти цитируемый пост)
 Не работают куки и не регистрируется сессия.  Есть следующий алгоритм:

Это заявление логически необосновано. Чтобы говорить, что не работают куки, надо писать код, который проверяет, работают ли куки.
И дело не в том, что ты говоришь. А в том, как ты воспринимаешь ситуацию.
Gрограммист тем и отличается от юзера, что основывается в своих выводах на фактах - иначе ему просто никогда не найти ошибку.
Gоэтому программист всегда проверяет свои утверждения.
Думаем, что не работают куки - проверяем работу кук, скриптом
Код

setcookie("user","test",0);
echo $_COOKIE["test"];

Если не работают - разбираемся. Только с куками, и ничем больше. 
Если работают - ищем проблему дальше.

Думаем, что не работают сессии? Проверяем, тестовым скриптом, например, отсюда: PHP FAQ: Сессии. Подробное описание работы и объяснение механизма.
Если не работают - разбираемся. Только с сессиями, и ничем больше. 
Если работают - ищем проблему дальше.

Дальше - значит, что проблема не в куках и не в сессиях, а в алгоритме.
Алгоритм надо ОТЛАЖИВАТЬ. Слово написано большими буквами потому, что это главное слово в программировании.
Отладка - это многоуровневое пошаговое выполнение. Разделяем задачу на не свзанные между собой сегменты (шаги), и каждый выполняем построчно (по шагам). На каждом шаге проверяя корректность данных.

Мы уже начали отлаживать, проверяя сегменты по работе с куками и сессиями.
Теперь проверяем пошагово основной текст.
К примеру, что у тебя находится в переменной $session?
Какое значение выставляет куке оператор setcookie("user",$session,0);?
А эта ветка case вообще выполняется?
Не знаешь. А надо знать.

Вот в этом и заключается работа программиста. Не switch - case писать. А знать, какое значение имеет каждая переменная в каждый момент выполнения программы. Не все время знать, конечно. А тогда, когда он занимается отладкой.
И руководствоваться логикой.
То есть, описание ситуации не на уровне "я поставил куку, а она не работает", а "я выставил куку с такими-то параметрами".
Все, ВСЕ свои действия надо проверять! Буквально каждую строчку.

Но самое смешное во всей этой ситуации - что отлаживать, проверять свои переменные программист может только сам, на своей машине. На форуме за него это при всем желании не сделают. поэтому придется учиться искать ошибки самостоятельно.

И убери из кода ненужную session_register и совсем уж чудовищную session_destroy
PM   Вверх
SneG0K
Дата 15.3.2008, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

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



Так, обьясню по подробней. Скрипту передается два параметра (sid и think). В параметре sid передается идентефикатор сессии, а в параметре think передается числовое значение, если оно равно 0, то кука должна установится лиш на один сеанс с броузером, а если оно равно 1, то кука устанавливается на месяц. Вот для этого у меня и есть switch..case.

Теперь дальше, сказав, что кука не создается, я тестировал этот код на "ослике" (Internet Explorer). Заходил в папку \Documents and Settings\*****\cookies , но там вообще пусто. Кука не создалась, аналогично она и не считывается $_COOKIE['user']. 

Так же и с сессиями. Файл сессии во временном каталоге сервера создается, но он абсолютно пустой. и сессия не считывается. точнее возвращает пустое значение. 

Так, что я все проверил и перепроверил. Может у меня в настройках php.ini что-то не так. Хотя я не знаю. 
PM WWW Skype   Вверх
Feldmarschall
Дата 15.3.2008, 18:45 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

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



Ты, видимо, не очень внимательно читал то, что тебе пишут.
Цитата(SneG0K @  15.3.2008,  18:10 Найти цитируемый пост)
Может у меня в настройках php.ini что-то не так

Да. Не то что невнимательно - ты вообще не читал.
повторяю ещё раз. Может в настройках php.ini что-то не так. Может. Но чтобы что-то исправлять в настройках, надо сначала понять, что именно не работает. Какую конкретно настройку исправлять.
Чтобы узнать, что конкретно не работает, надо проверить работу своего кода.
А тв проверил только на словах. А на деле, ни на один из вопросов, которые я задал (а, на самом деле, ты должен был задать сам себе) ты не ответил.

Повторяю вопросы:
1. Проверил ли ты, работают ли куки вообще, с помощью обновления страницы с кодом
Код
<?
setcookie("user","test",0);
echo $_COOKIE["test"];
?>


2. Что у тебя находится в переменной $session?

3. Выполняется ли вообще ветка с установкой куки?

Доложи, пожалуйста, по пунктам.
И не бодрым рапортом "Все проверил!", не сделав при этом вообще ничего. Помни - ты это делаешь не для меня. А для себя.
Поэтому реально выполни все, что написано, и четко опиши - как именно проверял ,и что в результате получил.



PM   Вверх
SneG0K
Дата 16.3.2008, 03:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

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



Итак докладываю:

1)Пробовал устанавливать куку, через твой скрипт. заходил через оперу, ослика. Везде результат глух!!! В ослике даже файл куки не создается smile 

2)Пробую зарегестрировать сессию так:

Код

<?php
session_start();
session_register('user');
$_SESSION['user']='user';
echo $_SESSION['user'];
session_destroy();
?>
 Опять ничего! Просто пусто! я даже не знаю где искать ошибку smile Хотя в принципе в сессиях я мог где-то и ошибится. У меня в книжке не силоно много света проливается на это. Так, что если можно посоветуйте иль дайте линк на статью\учебник где хорошо описываются сессии

3)Ветка с установкой куки работает, но сама кука не устанавливается!!! 

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



Это сообщение отредактировал(а) SneG0K - 16.3.2008, 03:30
PM WWW Skype   Вверх
awers
Дата 16.3.2008, 04:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



omg! SneG0K, причем же тут браузер. Покажи php.ini, покажи код на котором тестируешь (от <? до ?>, расскажи КАК тестируешь, а там получиш совет. 
PM MAIL WWW ICQ Skype   Вверх
Feldmarschall
Дата 16.3.2008, 04:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

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



Цитата(SneG0K @  16.3.2008,  03:28 Найти цитируемый пост)
Везде результат глух!!! 

Ну, это я опечатался, а ты даже не посмотрел.
разумеется, надо
Цитата

<?
setcookie("user","test",0);
echo $_COOKIE["user"];
?>

Цитата(SneG0K @  16.3.2008,  03:28 Найти цитируемый пост)
создается файл, ток он пустой


Что я тебе писал про session_register и session_destroy?

Цитата(SneG0K @  16.3.2008,  03:28 Найти цитируемый пост)
дайте линк на статью\учебник где хорошо описываются сессии


Вообще-то, я давал линк на статью/учебник.
но ты же вообще не читаешь, что тебе пишут :(

И где ответ на вопрос что у тебя находится в переменной $session?

PM   Вверх
SneG0K
Дата 16.3.2008, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

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



Feldmarschall, твою ошибку я заметил! И исправил! И все твои посты я читаю! Внимательно читаю. Тот код первый который попался мне под руку! Повторяю еще раз, что в переменную $session будет передаваться идентификатор сессии! Короче, спасибо за помощь. Лучше, с таким отношением, я пойду почитаю еще какие-либо маны!
PM WWW Skype   Вверх
Feldmarschall
Дата 16.3.2008, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

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



Проверь ещё раз, пожалуйста.
Действительно ли скрипт, содержащий ровно эти 4 строчки
<?
setcookie("user","test",0);
echo $_COOKIE["user"];
?>
при обновлении страницы ничего не выводит на экран?
PM   Вверх
SneG0K
Дата 16.3.2008, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

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



Проверил. С таким содержанием. Перегружал винду, перегружал сервер - ничего! Просто не работает и все.
PM WWW Skype   Вверх
Sannis
Дата 16.3.2008, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Вы этот скрипт один раз запускали, или всё-таки перегружали страницу?


--------------------
Я Критик Джим, раньше писал моды для IPB 1.3.x-2.3.x, а теперь продвигаю Node.js в массы.
PM MAIL WWW   Вверх
SneG0K
Дата 16.3.2008, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

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



Перезагружал страницу по несколько раз smile Ну куки не работают и все! Ни в какую не хотят! Я вот думаю, что мож что-то в пхп.ини не так натворено?
PM WWW Skype   Вверх
ksnk
Дата 16.3.2008, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



SneG0K, Можно начать с броузера. 
Скачать и поставить FireFox, затем поставить ему Live Http Headers

Затем "инструменты"->"Live Http Headers" , прейти в соседнюю вкладку и ввести адрес скрипта. Перегрузить его 2 раза (кнопкой релоад). Перейти во вкладку "live http headers" и сбросить сюда результат...



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
SneG0K
Дата 16.3.2008, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

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



Оооо... Кстати очень вовремя smile Я какрас искал что-то для просмотра HTTP пакетов... Спасибо... Щас проверю и результат скину

Добавлено через 2 минуты и 43 секунды
Ыы.. а у мну нет фаерфокса. и походу она ловит только заголовки HTTP, мож уже что-то для полного отлова пакета?

Добавлено через 6 минут и 9 секунд
Ладно, счас скачаю лиса и скажу... Не стоит ругаться smile 
PM WWW Skype   Вверх
Canarat
Дата 16.3.2008, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



SneG0K, а скачать и поставить сложно?

И cookies устанавливаются именно заголовком Set-Cookie, который кроме как HTTP-заголовком ничем другим не является
PM MAIL   Вверх
SneG0K
Дата 17.3.2008, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

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



Все разобрался smile То с PHP проблемы были... новый скачал, сейчас все работает
PM WWW Skype   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

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

Важно:

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

Внимание:

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

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

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


 




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


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

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