Файл cookie доступен в одном сценарии PHP (вызывается из браузера), но не в другом (вызывается из Apache RewriteMap) - PullRequest
0 голосов
/ 18 марта 2012

Я проверяю наличие переменных Cookie через echo в браузере с именем script, например,

var_dump($_COOKIE);

, и через frwite в Apache RewriteMap, поскольку он не может отображать что-либо, например * 1004.*

fwrite($fh, var_export($_COOKIE, true));

также обратите внимание, что интересующее значение сеанса передается в скрипт из apache, например, так:

RewriteCond %{HTTP_COOKIE} \bsid=[0-9a-z]{32}\b
RewriteRule ^   -   [E=SID:%1]
RewriteCond ${prg:%{ENV:SID}} =true

Браузер с именем script показывает правильные записи / значения cookie, но скрипт RewriteMap показываетпустое печенье.Интересно, так ли это, потому что RewriteMap требует, чтобы его сценарии входили в бесконечный цикл, ожидающий стандартного входа. В качестве альтернативы, он мог бы что-нибудь сделать, если скрипт браузера использует suPHP, в то время как Apache может вызывать просто старый PHP.Я все еще отлаживаю, и это может * быть случаем, что я где-то допустил ошибку, но я хотел знать, было ли это чем-то совершенно другим.

Ответы [ 2 ]

0 голосов
/ 19 марта 2012

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

RewriteCond %{HTTP_COOKIE} \bsid=[0-9a-z]{32}\b

И, следовательно, совпадающее cookie было недоступно, все, что мне нужно было сделать, это изменить вышеуказанную строку на

RewriteCond %{HTTP_COOKIE} (\bsid=[0-9a-z]{32}\b)
0 голосов
/ 18 марта 2012

Не уверен, что это уместно, но ...

Я установил cookie из скрипта PHP (называемого AJAX) и попытался получить доступ через Javascript, но он не смог его найти.

Причина в том, что мои PHP-скрипты находятся в папке / php, поэтому файл cookie оказался в / root / php, а не в / root.Поэтому, возможно, проверьте, что все сценарии устанавливают и получают файлы cookie в одном и том же месте :)

...