Подтвердить что ты не робот

Как настроить пользовательский глобальный из .htaccess

Есть ли способ установить пользовательскую переменную из .htaccess, чтобы каждый PHP скрипт мог читать из нее? Я не искал ничего.

Thankyou!

4b9b3361

Ответ 1

Вы можете установить только переменную среды из .htaccess:

SetEnv MYVAR whatever

И это становится доступным в массиве $_SERVER:

print $_SERVER["MYVAR"];

Итак, не совсем глобальная переменная. Но все же полезно для некоторых целей.

(Другая опция объявляет auto_prepend_file, чтобы предварительно определить переменные, но это более обходное решение тогда.)

Ответ 2

Вы можете установить переменные среды в .htaccess (или http.conf):

SetEnv foo bar

и получить доступ к ним через PHP через

$_ENV['foo']

Ответ 3

если вы хотите, чтобы переменная была доступна из массива $_GET (это перезапишет любую переменную, отправляемую на сервер через get)

RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^(.*)$ $1?%1&myvar=something

% 1 вся строка запроса может быть

Ответ 5

Я использую переменные среды, чтобы сообщить мне, какая часть брандмауэра "5G Blacklist" script http://perishablepress.com/5g-blacklist-2013/ запускается с помощью отморозка

Например, одна часть брандмауэра останавливает наиболее распространенные строки запросов спамера:

RewriteBase /
RewriteCond %{QUERY_STRING} (\"|%22).*(<|>|%3) [NC,OR]
RewriteCond %{QUERY_STRING} (javascript:).*(\;) [NC,OR]
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3) [NC,OR]
RewriteCond %{QUERY_STRING} (\\|\.\./|`|=\'$|=%27$) [NC,OR]
RewriteCond %{QUERY_STRING} (\;|\'|\"|%22).*(union|select|insert|drop|update|md5|benchmark|or|and|if) [NC,OR]
RewriteCond %{QUERY_STRING} (base64_encode|localhost|mosconfig) [NC,OR]
RewriteCond %{QUERY_STRING} (boot\.ini|echo.*kae|etc/passwd) [NC,OR]
RewriteCond %{QUERY_STRING} (GLOBALS|REQUEST)(=|\[|%) [NC]
RewriteRule .* - [E=BadQueryString,F]

Посмотрите, что E = BadQueryString? Я добавил это. Конечно, синтаксис должен быть точным.

Затем в моей PHP-программе для обработки 403: Разрешения на отказ от прав, я использую их таким образом (обратите внимание, что этот сервер добавляет "REDIRECT_" к имени переменной среды):

if (getenv("REDIRECT_BadQueryString") !== FALSE) {
  $htaccessErrors .= ' BadQueryString';
  if (getenv("REDIRECT_QUERY_STRING") !== FALSE) {
    $htaccessErrors .= getenv("REDIRECT_QUERY_STRING");
  }     
}

Вот еще один пример .htaccess, проверяющий переменную сервера User-Agent и использование переменной среды, если она была установлена, а затем переменная среды доступна в моем файле 403.php

SetEnvIfNoCase User-Agent (binlar|casper|cmsworldmap|comodo|diavol|dotbot|feedfinder|flicky|ia_archiver|kmccrew|nutch|planetwork|purebot|pycurl|skygrid|sucker|turnit|vikspider|zmeu) BadUserAgent
<limit GET POST PUT>
Order Allow,Deny
Allow from all
Deny from env=BadUserAgent
</limit>