2012-01-08 15 views
12

से कस्टम ग्लोबल कैसे सेट करें .htaccess के भीतर से एक कस्टम चर सेट करने का कोई तरीका है ताकि प्रत्येक php स्क्रिप्ट तब से पढ़ा जा सके? मैं कुछ भी नहीं घूम रहा था।.htaccess

धन्यवाद!

print $_SERVER["MYVAR"]; 

तो, नहीं वास्तव में एक वैश्विक चर:

उत्तर

28

आप केवल .htaccess से एक वातावरण चर सेट कर सकते हैं:

SetEnv MYVAR whatever 

और यह $_SERVER सरणी में उपलब्ध हो जाता है। लेकिन अभी भी कुछ उद्देश्यों के लिए उपयोगी है।

(दूसरा विकल्प एक auto_prepend_file चर पूर्व परिभाषित करने के लिए की घोषणा की जाती है। लेकिन वह अधिक एक समाधान तो है।)

+0

+1 मैंने कुछ नया सीखा। .htaccess फ़ाइल से पर्यावरण चर सेट करने के लिए यह कितना अच्छा अभ्यास है? – Josh

+0

मैं ज्यादातर संसाधन/पथ नाम घोषित करने के लिए इसका उपयोग कर रहा हूं। लेकिन अंत में कुछ भी जिसे वैश्विक साइट सेटिंग माना जा सकता है ठीक है। – mario

+0

धन्यवाद, मारियो। मैं अंतर्दृष्टि की सराहना करता हूं। – Josh

6

आप .htaccess (या http.conf) में वातावरण चर सेट कर सकते हैं:

SetEnv foo bar 

और इस वसीयत के माध्यम से

$_ENV['foo'] 
3

PHP में उन तक पहुँचने आप $ _GET सरणी से चर सुलभ चाहते हैं (प्राप्त करने के माध्यम से सर्वर पर भेजे जा रहे किसी भी चर को ओवरराइट करें)

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

% 1

+2

आप असीमित पाश को रोकने के लिए 'रीवाइटकंड% {QUERY_STRING}! Myvar' जोड़ना चाहेंगे। – Gerben

1

मैं वातावरण चर का उपयोग कर रहा मुझे बताने की क्या "5G ब्लैकलिस्ट" फ़ायरवॉल स्क्रिप्ट 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] 

देखें कि ई = BadQueryString? मैंने कहा कि। पाठ्यक्रम का वाक्यविन्यास सटीक होना चाहिए।

से निपटने 403 के लिए मेरे पीएचपी कार्यक्रम में

तब: अनुमति अस्वीकृत त्रुटियों, मैं इसे इस तरह से (वातावरण चर नाम के इस सर्वर पहले जोड़ता है "REDIRECT_" नोटिस) का उपयोग करें:

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

यहाँ एक और उदाहरण है .htaccess , उपयोगकर्ता-एजेंट सर्वर वैरिएबल का परीक्षण करते हुए और पर्यावरण चर का उपयोग करके सेट किया गया था, और फिर पर्यावरण चर मेरे 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>