Как получить доступ к перекрестному запросу переменных среды Apache из PHP?Apache

Ответить Пред. темаСлед. тема
Anonymous
 Как получить доступ к перекрестному запросу переменных среды Apache из PHP?

Сообщение Anonymous »


Мне нужна оболочка входа вокруг всего корневого веб-сайта на сервере под управлением Apache 2.4 и PHP 8.2. Эта оболочка должна запускаться только в том случае, если IP-адрес клиента является внешним адресом (т. е. кроме внутренних IP-адресов, таких как 10.0.0.0/8 или 192.168.0.0/16). Пока все хорошо, я могу справиться с этим в Apache в .htaccess. Но в этом случае все страницы веб-сервера, независимо от любой из них, должны перенаправляться на страницу входа, если вы не вошли в систему.

RewriteEngine включен # Нет внутренних адресов RewriteCond %{REMOTE_ADDR} !(^\:\:1|127\.0|192\.168\.0\.0|10\.0) # Все веб-страницы на этом сервере RewriteCond %{REQUEST_URI} ^.*$ [NC] # Файл cookie с именем $(THECOOKIENAME) не должен быть установлен (это строка, о которой я спрашиваю) RewriteCond expr "%{HTTP_COOKIE} -strcmatch '!*%{ENV:THECOOKIENAME}'" # Когда все условия выполнены, перейдите на страницу входа RewriteRule $/loginpage.php [L] Таким образом, Apache проверяет, установлен ли файл cookie с именем, заданным в переменной среды $(THECOOKIENAME), которая должна быть установлена ​​в PHP-скрипте с уникальной шестнадцатеричной строкой для каждого сеанса. Очевидно, я не могу использовать константы, потому что тогда установка фиксированного имени файла cookie просто позволит войти в систему без учетных данных.

PHP-код в файле loginpage.php::

if ($cookiename = auth_login()) { // проверка входа в систему и создание уникального ключа apache_setenv($cookiename, 1); header("Местоположение: " .$_SERVER["REQUEST_URI"]); Выход; } еще { apache_setenv($cookiename, ""); эхо showloginprompt(); } Теперь проблема в том, что переменная env, установленная apache_setenv(), не распознается в Apache. Я попробовал использовать фиксированное имя $cookiename, но даже тогда он не распознал переменную среды. Я пробовал putenv($hexstring, 1) или даже $_ENV['THECOOKIENAME'] = $hexstring;, но тоже безрезультатно. Похоже, эти функции работают только в одном запросе. AFAIK, $_SESSION было бы неплохо, но он недоступен в Apache (httpd.conf или .htaccess).

Кто-нибудь знает, как передавать перекрестный запрос переменных между PHP и Apache?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Apache»