PHP का $_SERVER सुपरग्लोबल ऐरे ($HTTP_SERVER_VARS)। $_SERVER - $_SERVER सरणी के तत्वों का उपयोग करके सर्वर और रनटाइम वातावरण के बारे में जानकारी
$_SERVER["DOCUMENT_ROOT"] तत्व में सर्वर की रूट निर्देशिका का पथ होता है; यदि स्क्रिप्ट को वर्चुअल होस्ट में निष्पादित किया जाता है, तो यह तत्व वर्चुअल होस्ट की रूट निर्देशिका का पथ निर्दिष्ट करता है। वे। httpd.conf कॉन्फ़िगरेशन फ़ाइल में, वर्चुअल होस्ट के पास "D:/main" पर DocumentRoot निर्देश सेट है, $_SERVER["DOCUMENT_ROOT"] तत्व में "D:main" मान होगा।
$_SERVER["HTTP_ACCEPT"] तत्व
$_SERVER["HTTP_ACCEPT"] तत्व दस्तावेज़ प्रकार के संबंध में क्लाइंट की वरीयता का वर्णन करता है। इस तत्व की सामग्री क्लाइंट से सर्वर पर भेजे गए एक्सेप्ट एचटीटीपी हेडर से प्राप्त की जाती है। इस हेडर की सामग्री इस तरह दिख सकती है
इमेज/जीआईएफ, इमेज/एक्स-एक्सबिटमैप, इमेज/जेपीईजी, इमेज/पीजेपीईजी, एप्लिकेशन/एक्स-शॉकवेव-फ्लैश, एप्लिकेशन/वीएनडी.एमएस-एक्सेल, एप्लिकेशन/एमएसवर्ड, */*
एक्सेप्ट हेडर आपको उस मीडिया प्रकार को निर्दिष्ट करने की अनुमति देता है जिसे क्लाइंट अपने अनुरोध के जवाब में प्राप्त करना पसंद करता है। यह हेडर आपको सर्वर को यह बताने की अनुमति देता है कि प्रतिक्रिया पसंदीदा प्रकारों के एक छोटे से सेट तक सीमित है।
मीडिया पंक्ति में समूह प्रकारों के लिए * प्रतीक का उपयोग किया जाता है। उदाहरण के लिए, प्रतीक */* सभी प्रकार के उपयोग को निर्दिष्ट करता है, और संकेतन प्रकार/* चयनित प्रकार के सभी उपप्रकारों के उपयोग को निर्दिष्ट करता है।
टिप्पणी
मीडिया प्रकारों को अल्पविराम द्वारा एक दूसरे से अलग किया जाता है।
प्रत्येक मीडिया पंक्ति को मापदंडों के एक अतिरिक्त सेट की विशेषता है। उनमें से एक तथाकथित सापेक्ष वरीयता गुणांक q है, जो क्रमशः 0 से 1 तक मान लेता है, कम पसंदीदा प्रकारों से अधिक पसंदीदा लोगों तक। एकाधिक q पैरामीटर का उपयोग करने से क्लाइंट सर्वर को किसी दिए गए मीडिया प्रकार के लिए वरीयता की सापेक्ष डिग्री बता सकता है।
टिप्पणी
q पैरामीटर डिफ़ॉल्ट रूप से 1 हो जाता है। इसे अर्धविराम द्वारा मीडिया प्रकार से भी अलग किया जाता है।
हेडर उदाहरण स्वीकार करें:
स्वीकार करें: ऑडियो/*; क्यू=0.2, ऑडियो/बेसिक
इस शीर्षलेख में, पहला प्रकार ऑडियो/* है, जिसमें सभी संगीत दस्तावेज़ शामिल हैं और 0.2 के वरीयता गुणांक की विशेषता है। एक अल्पविराम से अलग ऑडियो/मूल प्रकार निर्दिष्ट है, जिसके लिए वरीयता गुणांक निर्दिष्ट नहीं है और एक का डिफ़ॉल्ट मान मानता है। इस शीर्षक को उद्धृत करते हुए इस प्रकार व्याख्या की जा सकती है: "मैं ऑडियो / मूल प्रकार पसंद करता हूं, लेकिन मैं किसी अन्य ऑडियो प्रकार के दस्तावेज़ भी भेज सकता हूं, यदि उपलब्ध हो, वरीयता गुणांक को 80% से अधिक कम करने के बाद।"
उदाहरण अधिक जटिल हो सकता है।
स्वीकार करें: पाठ/सादा; क्यू = 0.5, टेक्स्ट/एचटीएमएल,
टेक्स्ट/एक्स-डीवीआई; क्यू=0.8, टेक्स्ट/एक्स-सी
टिप्पणी
ध्यान दें कि $_SERVER["HTTP_ACCEPT"] तत्व में बिल्कुल वही जानकारी है, लेकिन प्रारंभिक स्वीकृति शीर्षलेख के बिना।
इस हेडर की व्याख्या इस प्रकार की गई है: दस्तावेज़ प्रकार टेक्स्ट/एचटीएमएल और टेक्स्ट/एक्स-सी को प्राथमिकता दी जाती है, लेकिन यदि वे उपलब्ध नहीं हैं, तो यह अनुरोध करने वाला क्लाइंट टेक्स्ट/एक्स-डीवीआई पसंद करेगा, और यदि नहीं, तो यह टेक्स्ट/प्लेन स्वीकार कर सकता है .
$_SERVER["HTTP_ACCEPT_LANGUAGE"] तत्व
$_SERVER["HTTP_ACCEPT_LANGUAGE"] तत्व क्लाइंट की भाषा प्राथमिकताओं का वर्णन करता है। यह जानकारी क्लाइंट से सर्वर पर भेजे गए एक्सेप्ट-लैंग्वेज HTTP हेडर से प्राप्त की जाती है। निम्नलिखित उदाहरण दिया जा सकता है:
स्वीकार-भाषा: आरयू, एन; क्यू = 0.7
जिसकी व्याख्या इस प्रकार की जा सकती है: ग्राहक रूसी भाषा पसंद करता है, लेकिन यदि यह उपलब्ध नहीं है, तो वह अंग्रेजी में दस्तावेजों को स्वीकार करने के लिए सहमत है। $_SERVER["HTTP_ACCEPT_LANGUAGE"] तत्व में बिल्कुल वही जानकारी होगी, लेकिन स्वीकृति-भाषा शीर्षलेख के बिना:
आरयू, एन; क्यू = 0.7
$_SERVER["HTTP_ACCEPT_LANGUAGE"] तत्व की सामग्री का उपयोग आगंतुकों की राष्ट्रीयता निर्धारित करने के लिए किया जा सकता है। हालांकि, परिणाम अनुमानित होंगे, क्योंकि कई उपयोगकर्ता ब्राउज़र के अंग्रेजी संस्करणों का उपयोग करते हैं, जो सर्वर को सूचित करेगा कि आगंतुक केवल एक भाषा - अंग्रेजी पसंद करता है।
$_SERVER["HTTP_HOST"] तत्व
$_SERVER["HTTP_HOST"] तत्व में सर्वर का नाम होता है, जो आमतौर पर सर्वर पर होस्ट की गई साइट के डोमेन नाम के समान होता है। आमतौर पर, इस पैरामीटर में निर्दिष्ट नाम $_SERVER["SERVER_NAME"] जैसा ही होता है। पैरामीटर में प्रोटोकॉल नाम (http://) के बिना केवल डोमेन नाम होता है, अर्थात।
www.sofftime.ru
$_SERVER["HTTP_REFERER"] तत्व
$_SERVER["HTTP_REFERER"] तत्व में उस पृष्ठ का पता होता है जिससे आगंतुक इस पृष्ठ पर आया था। संक्रमण एक लिंक के माध्यम से होना चाहिए। चलिए दो पेज index.php और page.php बनाते हैं।
index.php पेज
गूंज "पीएचपी पेज से लिंक करें
"
;
$_SERVER["HTTP_REFERER"]
?>
page.php पेज में समान सामग्री होगी, लेकिन लिंक index.php पेज की ओर इशारा करेगा।
पेज पेज.php
गूंज "पीएचपी पेज से लिंक करें
"
;
इको "$_SERVER ["HTTP_REFERER"] की सामग्री "है।
$_SERVER["HTTP_REFERER"]
?>
एक पृष्ठ से दूसरे पृष्ठ पर जाने पर, उस पृष्ठ का पता जिससे संक्रमण किया गया था, लिंक के नीचे प्रदर्शित होगा।
$_SERVER["HTTP_USER_AGENT"] तत्व
$_SERVER["HTTP_USER_AGENT"] तत्व में विज़िटर के ब्राउज़र और ऑपरेटिंग सिस्टम के प्रकार और संस्करण के बारे में जानकारी होती है।
इस लाइन की विशिष्ट सामग्री यहां दी गई है: "मोज़िला/4.0 (संगत; एमएसआईई 6.0; विंडोज एनटी 5.1)"। सबस्ट्रिंग "MSIE 6.0" की उपस्थिति इंगित करती है कि आगंतुक इंटरनेट एक्सप्लोरर संस्करण 6.0 का उपयोग करके पृष्ठ देख रहा है। स्ट्रिंग "विंडोज एनटी 5.1" इंगित करता है कि ऑपरेटिंग सिस्टम विंडोज एक्सपी है।
टिप्पणी
विंडोज 2000 के लिए, $_SERVER["HTTP_USER_AGENT"] तत्व इस तरह दिखता है: "मोज़िला/4.0 (संगत; एमएसआईई 5.01; विंडोज एनटी 5.0)")", जबकि विंडोज एक्सपी के लिए यह "मोज़िला/4.0 (संगत; एमएसआईई) जैसा दिखता है। 6.0); विंडोज एनटी 5.1)"।
यदि आगंतुक ओपेरा ब्राउज़र का उपयोग कर रहा है, तो $_SERVER["HTTP_USER_AGENT"] की सामग्री इस तरह दिख सकती है: "मोज़िला/4.0 (संगत; एमएसआईई 5.0; विंडोज 98) ओपेरा 6.04 "। सबस्ट्रिंग "एमएसआईई 6.0" भी यहां मौजूद है, यह दर्शाता है कि ओपेरा ब्राउज़र इंटरनेट एक्सप्लोरर ब्राउज़र के साथ संगत है और उसी विंडोज डीएलएल का उपयोग करता है। इसलिए, ब्राउज़र द्वारा लौटाए गए स्ट्रिंग को पार्स करते समय, ध्यान रखें कि इंटरनेट एक्सप्लोरर एक स्ट्रिंग को संदर्भित करता है जिसमें "MSIE 6.0" विकल्प होता है और इसमें "ओपेरा" विकल्प नहीं होता है। इस लाइन से यह भी निष्कर्ष निकाला जा सकता है कि उपयोगकर्ता विंडोज 98 ऑपरेटिंग सिस्टम का उपयोग कर रहा है।
टिप्पणी
फ़ायरफ़ॉक्स ब्राउज़र उपयोगकर्ता एजेंट इस तरह दिख सकता है Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051111 Firefox/1.5.
नेटस्केप ब्राउज़र का उपयोग करते समय, $_SERVER["HTTP_USER_AGENT"] तत्व की सामग्री इस तरह दिख सकती है: "मोज़िला/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624 Netscape/7.1" . इस ब्राउज़र को "नेटस्केप" सबस्ट्रिंग की उपस्थिति से पहचाना जा सकता है। इसके अलावा, आप एक्स-विंडो जीयूआई में रहते हुए यह पता लगा सकते हैं कि आगंतुक पेंटियम IV-अनुकूलित कर्नेल के साथ लिनक्स ऑपरेटिंग सिस्टम का उपयोग करके इंटरनेट का उपयोग करता है। यह तंत्र सांख्यिकीय जानकारी एकत्र करने के लिए उपयोगी है जो डिजाइनरों को सबसे सामान्य ब्राउज़रों के लिए पृष्ठों को अनुकूलित करने की अनुमति देता है।
तत्व $_SERVER["REMOTE_ADDR"]
$_SERVER["REMOTE_ADDR"] तत्व में क्लाइंट का IP पता होता है। स्थानीय मशीन पर परीक्षण करते समय, यह पता 127.0.0.1 होगा। हालांकि, नेटवर्क पर परीक्षण करते समय, चर क्लाइंट का आईपी पता या अंतिम प्रॉक्सी सर्वर लौटाएगा जिसके माध्यम से क्लाइंट सर्वर तक पहुंचा। यदि क्लाइंट प्रॉक्सी सर्वर का उपयोग करता है, तो आप HTTP_X_FORWARDED_FOR पर्यावरण चर का उपयोग करके उसका आईपी पता ढूंढ सकते हैं, जिसका मूल्य getenv() फ़ंक्शन का उपयोग करके प्राप्त किया जा सकता है।
टिप्पणी
प्रॉक्सी सर्वर विशेष मध्यवर्ती सर्वर हैं जो एक विशेष प्रकार की सेवा प्रदान करते हैं: यातायात संपीड़न, डेटा एन्कोडिंग, मोबाइल उपकरणों के अनुकूलन आदि। कई प्रॉक्सी सर्वरों में, तथाकथित अनाम प्रॉक्सी सर्वर हैं जो आपको क्लाइंट के सही आईपी पते को छिपाने की अनुमति देते हैं; ऐसे सर्वर HTTP_X_FORWARDED_FOR पर्यावरण चर वापस नहीं करते हैं।
HTTP_X_FORWARDED_FOR पर्यावरण चर को पुनः प्राप्त करना
इको गेटेनव (HTTP_X_FORWARDED_FOR);
?>
$_SERVER["SCRIPT_FILENAME"] तत्व
$_SERVER["SCRIPT_FILENAME"] तत्व में ड्राइव के मूल से फ़ाइल का पूर्ण पथ होता है। इसलिए, यदि सर्वर विंडोज ऑपरेटिंग सिस्टम के तहत चल रहा है, तो ऐसा पथ इस तरह दिख सकता है: "d:main estindex.php", यानी। पथ को डिस्क से निर्दिष्ट किया जाता है, यूनिक्स जैसे ऑपरेटिंग सिस्टम में पथ रूट निर्देशिका / से निर्दिष्ट किया जाता है, उदाहरण के लिए "/var/share/www/test/index.php"।
$_SERVER["SERVER_NAME"] तत्व
$_SERVER["SERVER_NAME"] तत्व में सर्वर का नाम होता है, जो आमतौर पर उस पर होस्ट की गई साइट के डोमेन नाम से मेल खाता है। उदाहरण के लिए,
Www.साइट
$_SERVER["SERVER_NAME"] तत्व की सामग्री अक्सर $_SERVER["HTTP_HOST"] तत्व की सामग्री के समान होती है। सर्वर नाम के अलावा, $_SERVER सुपरग्लोबल सरणी आपको कई सर्वर पैरामीटरों का पता लगाने की अनुमति देती है, जैसे कि सर्वर आईपी पता, सुनने वाला पोर्ट, कौन सा वेब सर्वर स्थापित है, और HTTP प्रोटोकॉल का संस्करण। यह जानकारी क्रमशः $_SERVER["SERVER_ADDR"], $_SERVER["SERVER_PORT"], $_SERVER["SERVER_SOFTWARE"] और $_SERVER["SERVER_PROTOCOL"] तत्वों में रखी गई है। नीचे इन तत्वों का उपयोग करके एक उदाहरण दिया गया है।
$_SERVER सरणी के तत्वों का उपयोग करना
गूंज "सर्वर का नाम -"। $_SERVER["SERVER_NAME"]. "
"
;
गूंज "सर्वर आईपी पता - ". $_SERVER["SERVER_ADDR"]. "
"
;
इको "सर्वर पोर्ट -"। $_SERVER["SERVER_PORT"]. "
"
;
इको "वेब सर्वर -"। $_SERVER["SERVER_SOFTWARE"]. "
"
;
गूंज "HTTP प्रोटोकॉल संस्करण -". $_SERVER["SERVER_PROTOCOL"]. "
"
;
?>
$HTTP_SERVER_VARS [हटाया गया]
(पीएचपी 4>= 4.1.0, पीएचपी 5, पीएचपी 7)
$_सर्वर -- $HTTP_SERVER_VARS [हटाया गया] — सर्वर और रनटाइम जानकारी
विवरण
$_SERVER चर एक सरणी है जिसमें स्क्रिप्ट हेडर, पथ और स्थान जैसी जानकारी होती है। इस सरणी में प्रविष्टियाँ वेब सर्वर द्वारा उत्पन्न की जाती हैं। इस बात की कोई गारंटी नहीं है कि प्रत्येक वेब सर्वर इनमें से कोई भी प्रदान करेगा; सर्वर इनमें से कुछ को छोड़ सकता है या दूसरों को यहां सूचीबद्ध नहीं कर सकता है। हालांकि, इनमें से कई चर »CGI/1.1 विनिर्देश में मौजूद हैं, इसलिए आप उनसे किसी विशेष वेब सर्वर में भी लागू होने की उम्मीद कर सकते हैं।
$HTTP_SERVER_VARS वैरिएबल में समान प्रारंभिक जानकारी होती है, लेकिन यह सुपरग्लोबल नहीं है। (ध्यान दें कि $HTTP_SERVER_VARS और $_SERVER अलग-अलग चर हैं, इसलिए PHP उन्हें तदनुसार संभालती है।) यह भी ध्यान दें कि PHP 5.4.0 में "लंबी सरणियाँ" हटा दी गई थीं, इसलिए $HTTP_SERVER_VARS अब मौजूद नहीं है।
सूचकांकों
आपको $_SERVER सरणी में निम्न में से कोई भी तत्व मिल भी सकता है और नहीं भी। ध्यान दें कि यदि PHP को कमांड लाइन पर चलाया जाता है तो कुछ, यदि कोई हो, आइटम उपलब्ध होंगे (या वास्तव में महत्वपूर्ण)।
"PHP_SELF" दस्तावेज़ रूट के सापेक्ष वर्तमान में निष्पादित की जा रही स्क्रिप्ट का फ़ाइल नाम। उदाहरण के लिए, http://example.com/foo/bar.php पर एक स्क्रिप्ट में $_SERVER["PHP_SELF"] /foo/bar.php होगा। __FILE__ स्थिरांक में वर्तमान (यानी शामिल) फ़ाइल का पूरा पथ और फ़ाइल नाम होता है। यदि PHP को कमांड लाइन पर चलाया जाता है, तो इस वेरिएबल में PHP 4.3.0 के बाद से स्क्रिप्ट का नाम होता है। यह पहले अनुपलब्ध था।"आर्गव" स्क्रिप्ट को दिए गए तर्कों की एक सरणी। जब स्क्रिप्ट को कमांड लाइन पर चलाया जाता है, तो यह कमांड लाइन विकल्पों के लिए सी-लाइक एक्सेस देता है। जब GET विधि के माध्यम से कॉल किया जाता है, तो इस सरणी में क्वेरी स्ट्रिंग होगी।"आर्गसी" स्क्रिप्ट को पास किए गए मापदंडों की संख्या शामिल है (यदि कमांड लाइन पर लॉन्च किया गया है)।"GATEWAY_INTERFACE" सर्वर द्वारा उपयोग किए गए CGI विनिर्देशन का संस्करण शामिल है; उदाहरण के लिए" सीजीआई/1.1". "SERVER_ADDR" सर्वर का आईपी पता जहां वर्तमान स्क्रिप्ट चल रही है।"सर्वर का नाम" होस्ट का नाम जहां वर्तमान स्क्रिप्ट चल रही है। यदि स्क्रिप्ट वर्चुअल होस्ट पर चल रही है, तो इसमें उस वर्चुअल होस्ट के लिए परिभाषित नाम होगा।"SERVER_SOFTWARE" अनुरोध का उत्तर दिए जाने पर हेडर में निर्दिष्ट सर्वर पहचान स्ट्रिंग।"SERVER_PROTOCOL" सूचना प्रोटोकॉल का नाम और संस्करण जिसके माध्यम से पृष्ठ का अनुरोध किया गया था; उदाहरण के लिए " एचटीटीपी/1.0"; "REQUEST_METHOD" पृष्ठ का अनुरोध करने के लिए किस विधि का उपयोग किया गया था; उदाहरण के लिए " प्राप्त", "सिर", "पद", "रखना".
" समय मांगें " अनुरोध की शुरुआत का टाइमस्टैम्प। PHP 5.1.0 के बाद से उपलब्ध है।"REQUEST_TIME_FLOAT" अनुरोध की शुरुआत का टाइमस्टैम्प, माइक्रोसेकंड के लिए सटीक। PHP 5.4.0 के बाद से उपलब्ध है।" क्वेरी स्ट्रिंग " क्वेरी स्ट्रिंग, यदि कोई हो, जिसके साथ पृष्ठ पुनर्प्राप्त किया गया था।"DOCUMENT_ROOT" दस्तावेज़ रूट निर्देशिका जहां वर्तमान स्क्रिप्ट निष्पादित की जाती है, वही सर्वर की कॉन्फ़िगरेशन फ़ाइल में निर्दिष्ट होती है।"HTTP_ACCEPT" हैडर सामग्री मानना:वर्तमान अनुरोध से, यदि कोई हो।"HTTP_ACCEPT_CHARSET" हैडर सामग्री एक्सेप्ट चारसेट:वर्तमान अनुरोध से, यदि कोई हो। उदाहरण के लिए: " आईएसओ-8859-1,*,यूटीएफ-8". "HTTP_ACCEPT_ENCODING" हैडर सामग्री एन्कोडिंग स्वीकार करें: गज़िप". "HTTP_ACCEPT_LANGUAGE" हैडर सामग्री स्वीकार-भाषा:वर्तमान अनुरोध से, यदि कोई हो। उदाहरण के लिए: " एन". "HTTP_CONNECTION" हैडर सामग्री कनेक्शन:वर्तमान अनुरोध से, यदि कोई हो। उदाहरण के लिए: " जिंदा रहो". "HTTP_HOST" हैडर सामग्री मेज़बान:वर्तमान अनुरोध से, यदि कोई हो।"HTTP_REFERER" पृष्ठ का पता (यदि कोई हो) जो उपयोगकर्ता के ब्राउज़र को इस पृष्ठ पर लाया। यह हेडर उपयोगकर्ता के वेब ब्राउज़र द्वारा निर्धारित किया जाता है। सभी ब्राउज़र इसे स्थापित नहीं करते हैं, और कुछ अतिरिक्त सुविधा के रूप में HTTP_REFERER शीर्षलेख की सामग्री को बदलने की अनुमति देते हैं। एक शब्द में, उस पर वास्तव में भरोसा नहीं किया जा सकता है।"HTTP_USER_AGENT" हैडर सामग्री उपभोक्ता अभिकर्ता:वर्तमान अनुरोध से, यदि कोई हो। इस स्ट्रिंग में उस ब्राउज़र का पदनाम होता है जिसके साथ उपयोगकर्ता ने इस पृष्ठ का अनुरोध किया था। एक विशिष्ट उदाहरण लाइन है: मोज़िला/4.5 (X11; यू; लिनक्स 2.2.9 i586). अन्य बातों के अलावा, आप इस मान का उपयोग फ़ंक्शन के साथ कर सकते हैं get_ब्राउज़र ()अपने पृष्ठ आउटपुट को उपयोगकर्ता के ब्राउज़र की क्षमताओं के अनुरूप बनाने के लिए"https" यदि HTTPS प्रोटोकॉल के माध्यम से अनुरोध किया गया था तो एक गैर-रिक्त मान लेता है।टिप्पणी:
PHP स्क्रिप्ट हेडर भेजने के बाद समाप्त हो जाती है (यानी, आउटपुट बफरिंग के बिना कोई आउटपुट करने के बाद), यदि अनुरोध विधि द्वारा किया गया था सिर.
"REMOTE_ADDR" वह IP पता जिससे उपयोगकर्ता वर्तमान पृष्ठ देख रहा है।"रिमोट होस्ट" दूरस्थ होस्ट जिससे उपयोगकर्ता वर्तमान पृष्ठ देख रहा है। रिवर्स DNS लुकअप REMOTE_ADDR चर के मान पर आधारित है।टिप्पणी: ध्यान दें कि IIS के साथ ISAPI का उपयोग करते समय, मान होगा बंदयदि अनुरोध HTTPS प्रोटोकॉल के माध्यम से नहीं किया गया था।
"REMOTE_PORT" रिमोट मशीन पर पोर्ट जो वेब सर्वर के साथ संचार करने के लिए उपयोग किया जाता है।"REMOTE_USER" प्रमाणित उपयोगकर्ता।"REDIRECT_REMOTE_USER" प्रमाणित उपयोगकर्ता, यदि अनुरोध आंतरिक रूप से पुनर्निर्देशित किया गया था।"SCRIPT_FILENAME"टिप्पणी: इस वेरिएबल को बनाने के लिए आपके वेब सर्वर को कॉन्फ़िगर किया जाना चाहिए। उदाहरण के लिए, अपाचे में आपको निर्देश की उपस्थिति की आवश्यकता है होस्टनाम लुकअप चालूइस वेरिएबल को बनाने के लिए httpd.conf फ़ाइल में। यह सभी देखें gethostbyaddr ().
स्क्रिप्ट का पूर्ण पथ जो वर्तमान में निष्पादित हो रहा है।
"SERVER_ADMIN" यह चर सर्वर की कॉन्फ़िगरेशन फ़ाइल में निर्देश से अपना मान (अपाचे के लिए) प्राप्त करता है। यदि स्क्रिप्ट वर्चुअल होस्ट पर चल रही है, तो यह उस वर्चुअल होस्ट के लिए परिभाषित मान होगा।"सर्वर पोर्ट" सर्वर कंप्यूटर पर पोर्ट जिसे वेब सर्वर कनेक्ट करने के लिए उपयोग करता है। डिफ़ॉल्ट सेटिंग्स के लिए, मान होगा " 80 "; एसएलएल का उपयोग करते हुए, उदाहरण के लिए, यह मान सुरक्षित HTTP कनेक्शन के लिए कॉन्फ़िगर किया जाएगा।टिप्पणी:
यदि स्क्रिप्ट को संबंधित पथ जैसे file.php या ../file.php का उपयोग करके कमांड लाइन (CLI) पर चलाया जाता है, तो $_SERVER["SCRIPT_FILENAME"] चर में उपयोगकर्ता द्वारा निर्दिष्ट सापेक्ष पथ होगा।
"SERVER_SIGNATURE" सर्वर संस्करण और वर्चुअल होस्ट नाम वाली एक स्ट्रिंग को सक्षम होने पर सर्वर-जनित पृष्ठों में जोड़ा जाना है।"PATH_TRANSLATED" फाइलसिस्टम- (दस्तावेज़ रूट नहीं-) वर्तमान स्क्रिप्ट पर आधारित पथ, सर्वर द्वारा कोई वर्चुअल-टू-रियल मैपिंग करने के बाद।टिप्पणी: Apache 2 में भौतिक (वास्तविक) पोर्ट प्राप्त करने के लिए, आपको स्थापित करने की आवश्यकता है CanonicalName = On . का उपयोग करेंतथा CanonicalPhysicalPort = On . का उपयोग करें, अन्यथा इस मान को धोखा दिया जा सकता है और भौतिक पोर्ट का वास्तविक मूल्य वापस नहीं किया जा सकता है। इस मान पर भरोसा करना उन अनुप्रयोगों के संदर्भ में असुरक्षित है जिन्हें बढ़ी हुई सुरक्षा की आवश्यकता होती है।
"SCRIPT_NAME" वर्तमान में निष्पादित स्क्रिप्ट का पथ शामिल है। यह उन पृष्ठों के लिए उपयोगी है जिन्हें स्वयं को इंगित करने की आवश्यकता है। __FILE__ स्थिरांक में वर्तमान (यानी शामिल) फ़ाइल का पूरा पथ और नाम होता है।"REQUEST_URI" इस पृष्ठ तक पहुंचने के लिए पारित किया गया यूआरआई। उदाहरण के लिए, " /index.html". "PHP_AUTH_DIGEST" HTTP डाइजेस्ट प्रमाणीकरण करते समय, यह चर क्लाइंट द्वारा भेजे गए "प्राधिकरण" शीर्षलेख पर सेट होता है (जिसे उपयुक्त सत्यापन के लिए उपयोग किया जाना चाहिए)।"PHP_AUTH_USER" जब HTTP प्रमाणीकरण किया जाता है, तो यह चर उपयोगकर्ता द्वारा प्रदान किए गए उपयोगकर्ता नाम पर सेट होता है।"PHP_AUTH_PW" जब HTTP प्रमाणीकरण किया जाता है, तो यह चर उपयोगकर्ता द्वारा प्रदान किए गए पासवर्ड पर सेट होता है।"प्रमाणीकरण का प्रकार" जब HTTP प्रमाणीकरण किया जाता है, तो यह चर उपयोग किए जाने वाले प्रमाणीकरण के प्रकार पर सेट होता है।"PATH_INFO" स्क्रिप्ट नाम के बाद लेकिन क्वेरी स्ट्रिंग से पहले, यदि उपलब्ध हो तो उपयोगकर्ता द्वारा प्रदान किया गया कोई भी पथ शामिल है। उदाहरण के लिए, यदि URL http://www.example.com/php/path_info.php/some/stuff?foo=bar पर वर्तमान स्क्रिप्ट का अनुरोध किया गया है, तो $_SERVER["PATH_INFO"] चर में शामिल होगा /कुछ सामग्री?>टिप्पणी: PHP 4.3.2 के अनुसार, Apache संस्करण 1 की तुलना में PATH_TRANSLATED चर अब Apache 2 SAPI में निहित रूप से सेट नहीं है, जहां इसे उसी मान पर सेट किया जाता है जैसे Apache द्वारा उपयोग नहीं किए जाने पर SCRIPT_FILENAME। यह परिवर्तन CGI विनिर्देश के अनुपालन के लिए किया गया था, जहां PATH_TRANSLATED चर केवल तभी मौजूद होना चाहिए जब PATH_INFO परिभाषित किया गया हो। Apache 2 उपयोगकर्ता निर्देश का उपयोग कर सकते हैं एक्सेप्टपाथइन्फो = ऑन httpd.conf कॉन्फ़िगरेशन फ़ाइल में PATH_INFO चर सेट करने के लिए।
इस उदाहरण को चलाने का परिणाम कुछ इस प्रकार होगा।
जिन्होंने कमोबेश गंभीरता से अध्ययन किया पीएचपीपता है कि इसमें एक बहुत ही उपयोगी वैश्विक सरणी है पीएचपी, जिसे कहा जाता है $_सर्वर. और इस लेख में मैं इस सरणी में सबसे लोकप्रिय कुंजियों और उनके मूल्यों का विश्लेषण करना चाहूंगा, क्योंकि उनका ज्ञान एक शुरुआत के लिए भी आवश्यक है पीएचपी प्रोग्रामर.
आगे बढ़ने से पहले PHP में $_SERVER वैश्विक सरणी के लिएमैं आपको अभी थोड़ा संकेत दूंगा। इसमें निर्मित एक अद्भुत विशेषता है पीएचपी, जिसे कहा जाता है phpinfo (). आइए तुरंत इसके उपयोग का एक उदाहरण दें:
phpinfo ();
?>
इस सरल स्क्रिप्ट को क्रियान्वित करने के परिणामस्वरूप, आपको विभिन्न के साथ एक विशाल तालिका दिखाई देगी पीएचपी दुभाषिया सेटिंग्स, सहित, अंत में मूल्यों की एक तालिका होगी वैश्विक सरणी $_SERVER. यह सभी कुंजियों और उनके सभी संगत मानों को सूचीबद्ध करेगा। यह आपकी कैसे मदद कर सकता है? और तथ्य यह है कि यदि आपको इस या उस मूल्य की आवश्यकता है, और आप भूल जाते हैं कि कुंजी को क्या कहा जाता है, तो फ़ंक्शन का उपयोग करें phpinfo ()आप इसका नाम हमेशा याद रख सकते हैं। सामान्य तौर पर, आप इस स्क्रिप्ट को निष्पादित करेंगे और आप मुझे तुरंत समझ जाएंगे।
अब सबसे लोकप्रिय पर चलते हैं $_SERVER सरणी कुंजियाँ:
- HTTP_USER_AGENT- यह कुंजी आपको क्लाइंट की विशेषताओं का पता लगाने की अनुमति देती है। ज्यादातर मामलों में, यह निश्चित रूप से ब्राउज़र है, हालांकि, हमेशा नहीं। और फिर, यदि ब्राउज़र, तो कौन सा, आप इस चर में इसके बारे में पता लगा सकते हैं।
- HTTP_REFERER- उस फ़ाइल का पूर्ण पथ है ( पीएचपी स्क्रिप्ट, एचटीएमएल पेज) जिससे आपने इस स्क्रिप्ट पर स्विच किया है। मोटे तौर पर, ग्राहक कहाँ से आया था।
- सर्वर_एडीडीआर - आईपी पतासर्वर।
- REMOTE_ADDR - आईपी पताग्राहक।
- DOCUMENT_ROOT- साइट की मूल निर्देशिका के लिए भौतिक पथ। यह विकल्प के माध्यम से सेट किया गया है अपाचे सर्वर कॉन्फिग फाइल.
- SCRIPT_FILENAME- बुलाए गए स्क्रिप्ट के लिए भौतिक पथ।
- क्वेरी स्ट्रिंग- एक बहुत ही उपयोगी मान जो आपको एक क्वेरी के साथ एक स्ट्रिंग प्राप्त करने की अनुमति देता है, और फिर आप इस स्ट्रिंग को पार्स कर सकते हैं।
- REQUEST_URI- एक और भी अधिक उपयोगी मूल्य जिसमें न केवल अनुरोध ही शामिल है, बल्कि इसके साथ रूट से बुलाए गए स्क्रिप्ट के सापेक्ष पथ भी शामिल है। यह बहुत बार से दोहराव को दूर करने के लिए प्रयोग किया जाता है index.php, यानी, जब हमारे पास ऐसा यूआरएल: "http://mysite.ru/index.php" तथा " http://mysite.ru/"एक पृष्ठ पर ले जाएं, और यूआरएलअलग, इसलिए, दोहराव, जिसका खोज इंजन अनुकूलन पर बुरा प्रभाव पड़ेगा। और यहाँ मदद के साथ REQUEST_URIहम परिभाषित कर सकते हैं: index.phpया नहीं स्क्रिप्ट बुलाया गया था। और हम के साथ पुनर्निर्देशित कर सकते हैं index.php(यदि वह उपस्थित था REQUEST_URI) बिना index.php. परिणामस्वरूप, ऐसा अनुरोध भेजते समय: " http://mysite.ru/index.php?id=5", हमारे पास एक रीडायरेक्ट होगा यूआरएल: "http://mysite.ru/?id=5यानि हमने से हटाकर दोहराव से छुटकारा पाया यूआरएलयह index.php.
- स्क्रिप्ट- बुलाए गए स्क्रिप्ट के सापेक्ष पथ।
शायद ये सभी तत्व हैं PHP में $_SERVER वैश्विक सरणीजिनका नियमित उपयोग किया जाता है। जरूरत पड़ने पर उन्हें जानने और उपयोग करने में सक्षम होने की आवश्यकता है।
सबसे पहले, हम अवतार अपलोड करने की क्षमता जोड़कर पंजीकरण पृष्ठ में सुधार करेंगे। स्रोत छवि jpg, gif या png प्रारूप में होनी चाहिए। यह भी 2 एमबी से अधिक नहीं होना चाहिए। चिंता न करें, इसे स्क्रिप्ट से कंप्रेस करने के बाद अवतार का आकार लगभग 3 kb होगा और प्रारूप jpg होगा। पेज खोलें regपीएचपीऔर टैग में जोड़ें < प्रपत्र> रेखा enctype = "मल्टीपार्ट/फॉर्म डेटा", उदाहरण के अनुसार: