Session & header ("Location")

bizzona

Новичок
Session & header ("Location")

Проблема следующая.
Есть login.php и index.php.
В login.php идёт аутентификация пользователя. Стартует сессия. При успешной аутентификации происходит редирект на index.php, где проверяется значение статуса аутентификации и по его значению возвращает либо на повторную аутентификацию, либо отображение контекста index.php.

Cогласно документации при редиректе надо явно прописывать SID то есть

PHP:
      session_write_close();
      header ("Location: ./index.php?sid=".session_id());
      exit();
Это замечательно работает в IE но отказывается в FF и Opera. При переходе на index.php сессия стартует заново. В чём проблема не понятно.
 

zerkms

TDD infected
Команда форума
Cогласно документации при редиректе надо явно прописывать SID то есть
не надо (точнее - далеко не в каждом конкретном случае)
читай внимательнее
 

Фанат

oncle terrible
Команда форума
bizzona
1.в документации не может быть написано ни про какую переменную sid.
2.что за дурацкая точка в локейшене? согласно документации, которую ты, разумеется, никогда не читал, в локейшене должен быть URL, а не его огрызок.
3.почему нельзя во-первых посмотреть, а во-вторых - написать здесь, что видно в адресной строке во всех трех браузерах?
 

bizzona

Новичок
2. Это если протоколо http1/1 /*
Note: HTTP/1.1 requires an absolute URI as argument to » Location: including the scheme, hostname and absolute path, but some clients accept relative URIs. You can usually use $_SERVER['HTTP_HOST'], $_SERVER['PHP_SELF'] and dirname() to
*/

1. Note: Session ID is not passed with Location header even if session.use_trans_sid is enabled. It must by passed manually using SID constant.




ЧИТАЙ САМ СНАЧАЛО! http://ru2.php.net/header
 

Фанат

oncle terrible
Команда форума
"Гы. Биомасса. Говорящая биомасса!"
Люблю, когда со мной спорят =)

Скажи мне, добрый человек, какое отношение SID constant имеет к твоему коду?
 

bizzona

Новичок
я не по русски пишу?

-~{}~ 15.04.08 12:14:

сессию айди надо использовать в локейшине даже в том случае если session.use_trans_sid = 1

-~{}~ 15.04.08 12:21:

header ("Location: ./index.php?PHPSESSID=".session_id());
В ИЕ7 не работает
 

Фанат

oncle terrible
Команда форума
судя по всему - не по-русски, ага =)

попытка номер два. какое отношение SID constant имеет к твоему коду?
ты вообще имеешь представление о том, что такое SID constant? Судя по всему - нет =)

и ты не ответил на остальные вопросы. позволю себе напомнить их.
1. что за точка в адресе?
2. Да хоть HTTP 9.9. Прочему не урл, а огрызок?
3.почему нельзя во-первых посмотреть, а во-вторых - написать здесь, что видно в адресной строке во всех трех браузерах?

-~{}~ 15.04.08 12:42:

И еще. отключи во всех браузерах куки.
глядишь, чего нового узнаешь
 

bizzona

Новичок
ЧТо такое SID я понимаю, был глюк - виноват.
но проблема осталась. вместо отгрызка добавляю полный адрес - абсолютный.
работает для IE7 и опера
файрфокс нет.

в алресной строке передаётся айди. а именно
ndex.php?PHPSESSID=21e2cfaa6dcc816291b2ad4f7232400b
 

Фанат

oncle terrible
Команда форума
отключи куки.
идентификатор у тебя передается через куки, и все твои пляски вокруг адреса не дают толку.

-~{}~ 15.04.08 12:49:

а еще лучше задйи в FAQ этого сайта и почитай про сессии.
 

Deserved

Новичок
А я думал сессии передовать в адресной строке небезапасно :\
 

Фанат

oncle terrible
Команда форума
зато универсально
классическая дилемма, и решение каждый для себя выбирает сам, исходя из своих условий
 
Сверху