![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
SneG0K |
|
|||
![]() Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 7 Всего: 54 |
Доброго времени суток. Не работают куки и не регистрируется сессия.
![]() Есть следующий алгоритм: Пользователь зашел на сайт->Идентифицировался->Словил куку->И все Делаю так. Выбираю записи из БД, переадресовываю инфу другому скрипту с идентификатором сессии, а он должен установить куку,а кука просто не устанавливается. Вот код скрипта
В итоге сессия не регестрируется, кука не устанавливается ![]() ![]() ![]() Что я не так делаю??? |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Может, еще раз почитать документацию?
Сессия для скрипта, который обрабатывается PHP - это идентификатор, по которому строится имя сессионного файла. Этот идентификатор находится в куке, если есть возможность, или в адресной строке, если куки отключены. Кука или параметр адресной строки по умолчанию называются PHPSESSID. Добавлено через 7 минут и 28 секунд session_destroy(); вот про это следует почитать в документации ;-) -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
Feldmarschall |
|
||||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Ну и каша...
Во первых,
Это заявление логически необосновано. Чтобы говорить, что не работают куки, надо писать код, который проверяет, работают ли куки. И дело не в том, что ты говоришь. А в том, как ты воспринимаешь ситуацию. Gрограммист тем и отличается от юзера, что основывается в своих выводах на фактах - иначе ему просто никогда не найти ошибку. Gоэтому программист всегда проверяет свои утверждения. Думаем, что не работают куки - проверяем работу кук, скриптом
Если не работают - разбираемся. Только с куками, и ничем больше. Если работают - ищем проблему дальше. Думаем, что не работают сессии? Проверяем, тестовым скриптом, например, отсюда: PHP FAQ: Сессии. Подробное описание работы и объяснение механизма. Если не работают - разбираемся. Только с сессиями, и ничем больше. Если работают - ищем проблему дальше. Дальше - значит, что проблема не в куках и не в сессиях, а в алгоритме. Алгоритм надо ОТЛАЖИВАТЬ. Слово написано большими буквами потому, что это главное слово в программировании. Отладка - это многоуровневое пошаговое выполнение. Разделяем задачу на не свзанные между собой сегменты (шаги), и каждый выполняем построчно (по шагам). На каждом шаге проверяя корректность данных. Мы уже начали отлаживать, проверяя сегменты по работе с куками и сессиями. Теперь проверяем пошагово основной текст. К примеру, что у тебя находится в переменной $session? Какое значение выставляет куке оператор setcookie("user",$session,0);? А эта ветка case вообще выполняется? Не знаешь. А надо знать. Вот в этом и заключается работа программиста. Не switch - case писать. А знать, какое значение имеет каждая переменная в каждый момент выполнения программы. Не все время знать, конечно. А тогда, когда он занимается отладкой. И руководствоваться логикой. То есть, описание ситуации не на уровне "я поставил куку, а она не работает", а "я выставил куку с такими-то параметрами". Все, ВСЕ свои действия надо проверять! Буквально каждую строчку. Но самое смешное во всей этой ситуации - что отлаживать, проверять свои переменные программист может только сам, на своей машине. На форуме за него это при всем желании не сделают. поэтому придется учиться искать ошибки самостоятельно. И убери из кода ненужную session_register и совсем уж чудовищную session_destroy |
||||
|
|||||
SneG0K |
|
|||
![]() 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 что-то не так. Хотя я не знаю. |
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Ты, видимо, не очень внимательно читал то, что тебе пишут.
Да. Не то что невнимательно - ты вообще не читал. повторяю ещё раз. Может в настройках php.ini что-то не так. Может. Но чтобы что-то исправлять в настройках, надо сначала понять, что именно не работает. Какую конкретно настройку исправлять. Чтобы узнать, что конкретно не работает, надо проверить работу своего кода. А тв проверил только на словах. А на деле, ни на один из вопросов, которые я задал (а, на самом деле, ты должен был задать сам себе) ты не ответил. Повторяю вопросы: 1. Проверил ли ты, работают ли куки вообще, с помощью обновления страницы с кодом
2. Что у тебя находится в переменной $session? 3. Выполняется ли вообще ветка с установкой куки? Доложи, пожалуйста, по пунктам. И не бодрым рапортом "Все проверил!", не сделав при этом вообще ничего. Помни - ты это делаешь не для меня. А для себя. Поэтому реально выполни все, что написано, и четко опиши - как именно проверял ,и что в результате получил. |
|||
|
||||
SneG0K |
|
|||
![]() Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 7 Всего: 54 |
Итак докладываю:
1)Пробовал устанавливать куку, через твой скрипт. заходил через оперу, ослика. Везде результат глух!!! В ослике даже файл куки не создается ![]() 2)Пробую зарегестрировать сессию так:
![]() 3)Ветка с установкой куки работает, но сама кука не устанавливается!!! В временной папке, где должны хранится идентификаторы сессии, создается файл, ток он пустой. Это сообщение отредактировал(а) SneG0K - 16.3.2008, 03:30 |
|||
|
||||
awers |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1465 Регистрация: 22.3.2006 Где: Россия, Таганрог Репутация: 21 Всего: 31 |
omg! SneG0K, причем же тут браузер. Покажи php.ini, покажи код на котором тестируешь (от <? до ?>, расскажи КАК тестируешь, а там получиш совет.
|
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Ну, это я опечатался, а ты даже не посмотрел. разумеется, надо
Что я тебе писал про session_register и session_destroy? Вообще-то, я давал линк на статью/учебник. но ты же вообще не читаешь, что тебе пишут :( И где ответ на вопрос что у тебя находится в переменной $session? |
|||
|
||||
SneG0K |
|
|||
![]() Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 7 Всего: 54 |
Feldmarschall, твою ошибку я заметил! И исправил! И все твои посты я читаю! Внимательно читаю. Тот код первый который попался мне под руку! Повторяю еще раз, что в переменную $session будет передаваться идентификатор сессии! Короче, спасибо за помощь. Лучше, с таким отношением, я пойду почитаю еще какие-либо маны!
|
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Проверь ещё раз, пожалуйста.
Действительно ли скрипт, содержащий ровно эти 4 строчки <? setcookie("user","test",0); echo $_COOKIE["user"]; ?> при обновлении страницы ничего не выводит на экран? |
|||
|
||||
SneG0K |
|
|||
![]() Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 7 Всего: 54 |
Проверил. С таким содержанием. Перегружал винду, перегружал сервер - ничего! Просто не работает и все.
|
|||
|
||||
Sannis |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 14.8.2007 Где: Москва Репутация: 6 Всего: 13 |
Вы этот скрипт один раз запускали, или всё-таки перегружали страницу?
-------------------- |
|||
|
||||
SneG0K |
|
|||
![]() Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 7 Всего: 54 |
Перезагружал страницу по несколько раз
![]() |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
SneG0K, Можно начать с броузера.
Скачать и поставить FireFox, затем поставить ему Live Http Headers Затем "инструменты"->"Live Http Headers" , прейти в соседнюю вкладку и ввести адрес скрипта. Перегрузить его 2 раза (кнопкой релоад). Перейти во вкладку "live http headers" и сбросить сюда результат... -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
SneG0K |
|
|||
![]() Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 7 Всего: 54 |
Оооо... Кстати очень вовремя
![]() Добавлено через 2 минуты и 43 секунды Ыы.. а у мну нет фаерфокса. и походу она ловит только заголовки HTTP, мож уже что-то для полного отлова пакета? Добавлено через 6 минут и 9 секунд Ладно, счас скачаю лиса и скажу... Не стоит ругаться ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |