Как получить доступ к перекрестному запросу переменных среды Apache из PHP? ⇐ Apache
Как получить доступ к перекрестному запросу переменных среды Apache из PHP?
Мне нужна оболочка входа вокруг всего корневого веб-сайта на сервере под управлением 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?
Мне нужна оболочка входа вокруг всего корневого веб-сайта на сервере под управлением 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?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как остановить прокрутку страниц родителей при парке по перекрестному происхождению?
Anonymous » » в форуме Javascript - 0 Ответы
- 6 Просмотры
-
Последнее сообщение Anonymous
-