Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > PHP, AJAX - сессии или переменные, или что?


Автор: Win MK 32 24.5.2009, 22:42
Почему при создания AJAX-запроса к скрипту edit.php (пользовался статьей Дина на этом сайте), он не способен увидеить сессии? Браузер-то один! А скрипт говорит, что массив сессий пустой. smile

Из-за этого не могу проверить авторизацию в админке перед выполнением приказа AJAX. 

Причем вариант сделать на главной странице админки проверку авторизации и занесение константы а потом последующую проверку - тоже не катит почему-то. Я растроен :'( 
Код

//admin/index.php
if(auth()){
  define("IN_ADMIN", true);
} 

Код

//admin/edit.php, вызов через AJAX
if(defined("IN_ADMIN")){
  echo "Авторизация есть и славно";
} 


P.S. Подозреваю, что и куки тоже он не сможет прочитать. Ну раз AJAX считает себя другим web-браузером(правильно ли я выразился?).

Автор: bars80080 24.5.2009, 22:54
а причём здесь константы? сессии - это массив $_SESSION
и стартуется он через session_start();

Автор: Win MK 32 24.5.2009, 23:19
Цитата(bars80080 @  24.5.2009,  20:54 Найти цитируемый пост)
session_start();

Точно! Я забыл, что для чтения сессий надо сначала их стартовать :(
Спасибо. Вопрос решен.

P.S. Константы при том, что я хотел их использовать, коли нельзя считать сессии.
А кстати нельзя общие константы иметь для обычного скрипта и для вызываемого через AJAX (как в моем случае)?

Автор: ksnk 24.5.2009, 23:29
Win MK 32, Надеюсь, решение окажется не таким простым, как говорит bars80080, иначе остальной мой текст лишается смысла  smile 

Случаи странного взаимодействия сессии и Ajax'а как правило бывают, когда куки на клиенте не включены. В этом случае работает включенный use_trans_sid, который добавляет ко всем ссылкам страницы сессионный идентификатор. Правда он не может модифицировать еще и Ajax запросы и, как правило, приходится выколупывать этот идентификатор из location'а и вставлять вручную в адрес запроса.

Автор: Win MK 32 24.5.2009, 23:59
ksnk, к сожалению bars80080 все правильно подсказал smile
Но вопрос с константами по прежнему открыт.

Автор: bars80080 25.5.2009, 00:31
никакие переменные или константы между запросами не передаются. под идентификатором сессий сохраняется всего один массив $_SESSION.
если в начале скрипта стоит session_start(), то скрипт запрашивает браузер на наличие сессионного идентификатора (сохраняемый в куки), и если он есть и ему соответствует сохранённый на сервере, то возвращается сохранённый под ним массив

только $_SESSION

Автор: Win MK 32 25.5.2009, 00:35
Цитата(bars80080 @  24.5.2009,  22:31 Найти цитируемый пост)
то скрипт запрашивает браузер на наличие сессионного идентификатора (сохраняемый в куки)

Я этого не знал. По-моему это важно. Спасибо.

Автор: skyboy 25.5.2009, 08:12
Цитата(bars80080 @  24.5.2009,  23:31 Найти цитируемый пост)
то скрипт запрашивает браузер на наличие сессионного идентификатора 

ну, ты пиши однозначнее.
сервер у клиента ничего не запрашивает.
клиент сам вместе с фофч запросом в заголовках отправляет все связанные с данным доменом кукисы. 
а после session_start () происходит поиск в полученных заголовках Cookie:.... подходящих на роль идентификатора сессии.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)