Как переопределить $_SERVER['PHP_AUTH_USER']?

Vorobyov1996

Новичок
Привет друзья! Недавно узнал что можно авторизовываться на сайте не через сессии, а через HTTP - заголовки

На странице авторизации я пишу
Код:
$_SERVER['PHP_AUTH_USER'] = $email
Но на другой странице я не могу получить $_SERVER['PHP_AUTH_USER']. Что я не так делаю?
 

fixxxer

К.О.
Партнер клуба
Всё не так делаешь.
Почитай, как именно это работает.

Вкратце. Браузеру ты можешь сказать, что требуется аутентификация (ответив 401-м статусом + заголовком WWW-Authenticate), он спросит у пользователя (в браузерном окошке, свое сделать нельзя) и передаст тебе, что он ввел, в заголовке. На сервере ты проверяешь содержимое заголовка (переменные PHP_AUTH - это php услужливо декодирует заголовок Authentication для тебя), если не совпадает - опять отдаешь 401 как в п.1.

В любом вменяемом фреймворке это все уже реализовано и достаточно 1-2 строк кода.
 

fixxxer

К.О.
Партнер клуба
Нет, без окна нельзя.

Собственно, весь смысл этой затеи в том, чтобы не программировать UI аутентицикации. А если ты хочешь, чтобы он был - какая тебе разница, как называется заголовок, Cookie или Authentication?
 

Vorobyov1996

Новичок
Ну вообще, ты прав) На админке сделаю Authentication)) А так пусть пользователи через SESSION авторизуются)) Только я так и не понял как хранить SESSION в COOKIE?

setcookie('user_id', $_SESSION['id'], time()+60*60*31); Так это делают? Или я что то не так понимаю?
 

fixxxer

К.О.
Партнер клуба
Сессия хранится на сервере, а кука - в браузере.

Аналогом basic authentication будет хранение куки с временем жизни 0 (до закрытия окна браузера) с логином и паролем. Сессии делают для того, чтобы не хранить в куке пароль: в куку кладется случайная строка, а на сервере хранится файл с таким именем, в него читается-пишется содержимое $_SESSION. Механизм сессий PHP это все делает автоматически, но если захочется написать механизм сессий вручную - то именно так это и работает, никакой особой магии там нет. Если работаешь со стандартными сессиями php, куки трогать вручную не надо - он и куки сам поставит, и сохранит-восстановит содержимое $_SESSION, см. http://phpfaq.ru/sessions
 

AnrDaemon

Продвинутый новичок
Мне кажется, или человек не понимает, как сессии работают?
 

AnrDaemon

Продвинутый новичок
Нет) Вам не кажется)
А мне кажется или Вы это сообщение написали что бы просто что нибудь ляпнуть? Не важно что, просто ляпнуть и все)
А это уже от вас зависит. Захотите вы в этом разобраться - могу объяснить.
Будете строить из себя самого умного - пройду мимо.
Впрочем, @fixxxer уже основы объяснил. Если что-то осталось неясным, задавайте вопросы.
 

Vorobyov1996

Новичок
А это уже от вас зависит. Захотите вы в этом разобраться - могу объяснить.
Будете строить из себя самого умного - пройду мимо.
Впрочем, @fixxxer уже основы объяснил. Если что-то осталось неясным, задавайте вопросы.
Осталось кое что) Можно в личке?
 

AnrDaemon

Продвинутый новичок
Можно сюда. Я отвечу, кто-то дополнит. Не стесняйтесь.
Чего-то не знать не зазорно, зазорно пытаться делать вид, что знаете.
 

Vorobyov1996

Новичок
Я благодарен fixxer за ответы, но не до конца понял как хранить сессию в куках, то есть как сделать чтобы пользователь после закрытия браузера оставался авторизован при открытии браузера
 

fixxxer

К.О.
Партнер клуба
По ссылочке http://phpfaq.ru/sessions про это написано. Там много букв, но для понимания надо прочитать все.

UPD: а, оказывается, не написано. Время жизни сессионной куки определяется ini-переменной session.cookie_lifetime, плюс оно должно быть не меньше, чем session.cache_expire и session.gc_maxlifetime. См. http://php.net/manual/en/session.configuration.php, там подробно описаны все настройки сессий.
 

AnrDaemon

Продвинутый новичок
Я благодарен fixxer за ответы, но не до конца понял как хранить сессию в куках, то есть как сделать чтобы пользователь после закрытия браузера оставался авторизован при открытии браузера
Это на самом деле два вопроса.
1. Как поставить куку (сессию) так, чтобы при закрытии браузера она не слетала.
Если используется встроенный механизм сессий, то это регулируется упомянутыми выше переменными.
Если нет, то надо выставлять параметры сессии(куки) самому так, как надо. Подробности есть в соответствующих разделах документаций PHP и HTTP.
2. Как сделать так, чтобы пользователь, предъявивший куку, оказался зарегистрированным в системе.
И хорошо бы при этом, чтобы система понимала, что регистрация проведена по куке, предъявленной неизвестно кем, а не по логину и паролю.
Вот тут уже чистый твой код, от самих кук практически не зависящий.
 
Последнее редактирование:
Сверху