Поместите имя пользователя в апачский access_log с PHP и без автора HTTP

В конфигурации журнала Apache возможно указать, что имя пользователя автора HTTP должно быть зарегистрировано. Большинство Сценариев PHP имеет свою собственную, основанную на cookie аутентификацию. Действительно ли возможно в PHP предоставить Apache имя пользователя автора HTTP для входа целей, даже если аутентификация основана на cookie? Если бы да, как код был бы похож? В противном случае, что такое альтернативы?

12
задан chiborg 2 August 2010 в 15:24
поделиться

2 ответа

Можно хранить имена пользователей и идентификаторы прошлых сессий в другом месте, а в журнал записывать значения куки (обычно %{PHPSESSID}C), которые потом можно отследить.

Другой вариант - отправить заголовок с именем пользователя обратно клиенту, желательно сразу после session_start:

PHP:

header('X-Php-Sess-User: '.$username);

Customlog:

%{X-Php-Sess-User}o
2
ответ дан 2 December 2019 в 06:25
поделиться

Если не использовать обработчик Apache для обращения к внутренним структурам данных auth*, то лучше всего прибегнуть к переменным окружения. Вы можете установить переменную окружения верхнего уровня с помощью apache_setenv в вашем PHP-коде

apache_setenv('USERID','jrodriguez',true);

и затем записать значение в файл журнала с помощью записи LogFormat в конфигурации Apache, используя "%{USERID}e" вместо "%u"

LogFormat "%v:%p %h %l %{USERID}e %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" envuid_combined
CustomLog /path/to/access.log envuid_combined

Конечно, реальные учетные данные при выполнении фактического HTTP-аута будут потеряны навсегда, поэтому подумайте о сохранении %u где-нибудь еще - либо в новом поле, либо в параллельном файле журнала.

0
ответ дан 2 December 2019 в 06:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: