PHP
सुपरग्लोबल वेरिएबल्स PHP
खोज…
परिचय
सुपरग्लोबल्स बिल्ट-इन वैरिएबल हैं जो हमेशा सभी स्कोप में उपलब्ध होते हैं।
PHP में कई पूर्वनिर्धारित चर "सुपरग्लोबल्स" हैं, जिसका अर्थ है कि वे एक स्क्रिप्ट के दौरान सभी स्कोप में उपलब्ध हैं। global $variable;
करने की कोई आवश्यकता नहीं है global $variable;
कार्यों या विधियों के भीतर उन तक पहुँचने के लिए।
PHP5 सुपरग्लोबल
नीचे PHP5 SuperGlobals हैं
- $ वैश्विक
- $ _REQUEST
- $ _GET
- $ _POST
- $ _FILES
- $ _SERVER
- $ _ENV
- $ _COOKIE
- $ _SESSION
$ GLOBALS : इस सुपरग्लोबल वेरिएबल का उपयोग ग्लोबल्स वैरिएबल को एक्सेस करने के लिए किया जाता है।
<?php
$a = 10;
function foo(){
echo $GLOBALS['a'];
}
//Which will print 10 Global Variable a
?>
$ _REQUEST : इस सुपरग्लोबल वेरिएबल का उपयोग HTML फॉर्म द्वारा जमा किए गए डेटा को इकट्ठा करने के लिए किया जाता है।
<?php
if(isset($_REQUEST['user'])){
echo $_REQUEST['user'];
}
//This will print value of HTML Field with name=user submitted using POST and/or GET MEthod
?>
$ _GET : इस सुपरग्लोबल वेरिएबल का उपयोग HTML फॉर्म द्वारा जमा किए गए डेटा को get
करने की विधि के साथ किया जाता है।
<?php
if(isset($_GET['username'])){
echo $_GET['username'];
}
//This will print value of HTML field with name username submitted using GET Method
?>
$ _POST : इस सुपरग्लोबल वेरिएबल का उपयोग post
फॉर्म के साथ HTML फॉर्म द्वारा सबमिट किए गए डेटा को इकट्ठा करने के लिए किया जाता है।
<?php
if(isset($_POST['username'])){
echo $_POST['username'];
}
//This will print value of HTML field with name username submitted using POST Method
?>
$ _FILES : यह सुपरग्लोबल वेरिएबल HTTP पोस्ट विधि के माध्यम से अपलोड की गई फ़ाइलों की जानकारी रखता है।
<?php
if($_FILES['picture']){
echo "<pre>";
print_r($_FILES['picture']);
echo "</pre>";
}
/**
This will print details of the File with name picture uploaded via a form with method='post and with enctype='multipart/form-data'
Details includes Name of file, Type of File, temporary file location, error code(if any error occured while uploading the file) and size of file in Bytes.
Eg.
Array
(
[picture] => Array
(
[0] => Array
(
[name] => 400.png
[type] => image/png
[tmp_name] => /tmp/php5Wx0aJ
[error] => 0
[size] => 15726
)
)
)
*/
?>
$ _SERVER : यह सुपरग्लोबल वेरिएबल स्क्रिप्स, HTTP हेडर्स और सर्वर पाथ के बारे में जानकारी रखता है।
<?php
echo "<pre>";
print_r($_SERVER);
echo "</pre>";
/**
Will print the following details
on my local XAMPP
Array
(
[MIBDIRS] => C:/xampp/php/extras/mibs
[MYSQL_HOME] => \xampp\mysql\bin
[OPENSSL_CONF] => C:/xampp/apache/bin/openssl.cnf
[PHP_PEAR_SYSCONF_DIR] => \xampp\php
[PHPRC] => \xampp\php
[TMP] => \xampp\tmp
[HTTP_HOST] => localhost
[HTTP_CONNECTION] => keep-alive
[HTTP_CACHE_CONTROL] => max-age=0
[HTTP_UPGRADE_INSECURE_REQUESTS] => 1
[HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36
[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*;q=0.8
[HTTP_ACCEPT_ENCODING] => gzip, deflate, sdch
[HTTP_ACCEPT_LANGUAGE] => en-US,en;q=0.8
[PATH] => C:\xampp\php;C:\ProgramData\ComposerSetup\bin;
[SystemRoot] => C:\Windows
[COMSPEC] => C:\Windows\system32\cmd.exe
[PATHEXT] => .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
[WINDIR] => C:\Windows
[SERVER_SIGNATURE] => Apache/2.4.16 (Win32) OpenSSL/1.0.1p PHP/5.6.12 Server at localhost Port 80
[SERVER_SOFTWARE] => Apache/2.4.16 (Win32) OpenSSL/1.0.1p PHP/5.6.12
[SERVER_NAME] => localhost
[SERVER_ADDR] => ::1
[SERVER_PORT] => 80
[REMOTE_ADDR] => ::1
[DOCUMENT_ROOT] => C:/xampp/htdocs
[REQUEST_SCHEME] => http
[CONTEXT_PREFIX] =>
[CONTEXT_DOCUMENT_ROOT] => C:/xampp/htdocs
[SERVER_ADMIN] => postmaster@localhost
[SCRIPT_FILENAME] => C:/xampp/htdocs/abcd.php
[REMOTE_PORT] => 63822
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.1
[REQUEST_METHOD] => GET
[QUERY_STRING] =>
[REQUEST_URI] => /abcd.php
[SCRIPT_NAME] => /abcd.php
[PHP_SELF] => /abcd.php
[REQUEST_TIME_FLOAT] => 1469374173.88
[REQUEST_TIME] => 1469374173
)
*/
?>
$ _ENV : यह सुपरग्लोबल वेरिएबल शैल पर्यावरण चर विवरण जिसके तहत PHP चल रही है।
$ _COOKIE : इस सुपरग्लोबल वेरिएबल का उपयोग दी गई कुंजी के साथ कुकी मूल्य को पुनः प्राप्त करने के लिए किया जाता है।
<?php
$cookie_name = "data";
$cookie_value = "Foo Bar";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 86400 = 1 day
if(!isset($_COOKIE[$cookie_name])) {
echo "Cookie named '" . $cookie_name . "' is not set!";
}
else {
echo "Cookie '" . $cookie_name . "' is set!<br>";
echo "Value is: " . $_COOKIE[$cookie_name];
}
/**
Output
Cookie 'data' is set!
Value is: Foo Bar
*/
?>
$ _SESSION : इस सुपरग्लोबल वेरिएबल का उपयोग सत्र मान को सेट और पुनः प्राप्त करने के लिए किया जाता है जो सर्वर पर संग्रहीत होता है।
<?php
//Start the session
session_start();
/**
Setting the Session Variables
that can be accessed on different
pages on save server.
*/
$_SESSION["username"] = "John Doe";
$_SESSION["user_token"] = "d5f1df5b4dfb8b8d5f";
echo "Session is saved successfully";
/**
Output
Session is saved successfully
*/
?>
सुबेरग्लोबल ने समझाया
परिचय
सीधे शब्दों में कहें, ये वे चर हैं जो आपकी स्क्रिप्ट में सभी दायरे में उपलब्ध हैं।
इसका मतलब यह है कि उन्हें अपने कार्यों में मापदंडों के रूप में पारित करने की आवश्यकता नहीं है, या कोड के एक ब्लॉक के बाहर उन्हें अलग-अलग स्कोप में उपलब्ध कराने की आवश्यकता है।
क्या एक सुपरगॉडल है ??
यदि आप सोच रहे हैं कि ये सुपरहीरो की तरह हैं - वे नहीं हैं।
PHP संस्करण 7.1.3 के रूप में 9 सुपरग्लोबल चर हैं। वे इस प्रकार हैं:
-
$GLOBALS
- वैश्विक दायरे में उपलब्ध सभी चर का संदर्भ देता है -
$_SERVER
- सर्वर और निष्पादन पर्यावरण की जानकारी -
$_GET
- HTTP गेट चर -
$_POST
- HTTP POST चर -
$_FILES
- HTTP फ़ाइल चर चर अपलोड करें -
$_COOKIE
- HTTP कुकीज़ -
$_SESSION
- सत्र चर -
$_REQUEST
- HTTP अनुरोध चर -
$_ENV
- पर्यावरण चर
प्रलेखन देखें।
मुझे और बताओ, मुझे और बताओ
मैं तेल संदर्भ के लिए माफी चाहता हूँ! संपर्क
इन सुपर हीरो ग्लोबल्स पर कुछ स्पष्टीकरण के लिए समय।
$GLOBALS
एक साहचर्य सरणी जिसमें सभी चर के संदर्भ होते हैं जो वर्तमान में स्क्रिप्ट के वैश्विक दायरे में परिभाषित किए जाते हैं। चर नाम सरणी की कुंजी हैं।
कोड
$myGlobal = "global"; // declare variable outside of scope
function test()
{
$myLocal = "local"; // declare variable inside of scope
// both variables are printed
var_dump($myLocal);
var_dump($GLOBALS["myGlobal"]);
}
test(); // run function
// only $myGlobal is printed since $myLocal is not globally scoped
var_dump($myLocal);
var_dump($myGlobal);
उत्पादन
string 'local' (length=5)
string 'global' (length=6)
null
string 'global' (length=6)
उपरोक्त उदाहरण में $myLocal
को दूसरी बार प्रदर्शित नहीं किया गया है क्योंकि यह test()
फ़ंक्शन के अंदर घोषित किया गया है और फिर फ़ंक्शन बंद होने के बाद नष्ट हो गया है।
वैश्विक हो रहा है
इसे मापने के लिए दो विकल्प हैं।
विकल्प एक: global
कीवर्ड
function test()
{
global $myLocal;
$myLocal = "local";
var_dump($myLocal);
var_dump($GLOBALS["myGlobal"]);
}
global
कीवर्ड एक चर पर उपसर्ग है जो इसे वैश्विक दायरे का हिस्सा बनने के लिए मजबूर करता है।
ध्यान दें कि आप एक वैरिएबल कीवर्ड के समान वैरिएबल में कोई मान निर्दिष्ट नहीं कर सकते। इसलिए, मुझे नीचे एक मान क्यों देना पड़ा। (यह संभव है अगर आप नई लाइनों और रिक्त स्थान को हटा दें, लेकिन मुझे नहीं लगता कि यह साफ है। global $myLocal; $myLocal = "local"
)।
विकल्प दो: $GLOBALS
सरणी
function test()
{
$GLOBALS["myLocal"] = "local";
$myLocal = $GLOBALS["myLocal"];
var_dump($myLocal);
var_dump($GLOBALS["myGlobal"]);
}
इस उदाहरण में, मैंने $myLocal
$GLOBAL["myLocal"]
के मूल्य को फिर से असाइन किया क्योंकि मुझे यह साहचर्य सरणी के बजाय एक चर नाम लिखना आसान लगता है।
$_SERVER
$ _SERVER एक सरणी है जिसमें हेडर, पथ और स्क्रिप्ट स्थानों जैसी जानकारी होती है। इस सरणी में प्रविष्टियाँ वेब सर्वर द्वारा बनाई गई हैं। इसमें कोई गारंटी नहीं है कि प्रत्येक वेब सर्वर इनमें से कोई भी प्रदान करेगा; सर्वर कुछ को छोड़ सकते हैं, या दूसरों को यहां सूचीबद्ध नहीं कर सकते हैं। उस ने कहा, सीजीआई / 1.1 विनिर्देश में बड़ी संख्या में इन चरों का लेखा-जोखा किया गया है, इसलिए आपको उन लोगों की अपेक्षा करने में सक्षम होना चाहिए।
इसका एक उदाहरण आउटपुट इस प्रकार हो सकता है (WAMP का उपयोग करके मेरे विंडोज पीसी पर रन करें)
C:\wamp64\www\test.php:2:
array (size=36)
'HTTP_HOST' => string 'localhost' (length=9)
'HTTP_CONNECTION' => string 'keep-alive' (length=10)
'HTTP_CACHE_CONTROL' => string 'max-age=0' (length=9)
'HTTP_UPGRADE_INSECURE_REQUESTS' => string '1' (length=1)
'HTTP_USER_AGENT' => string 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36' (length=110)
'HTTP_ACCEPT' => string 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' (length=74)
'HTTP_ACCEPT_ENCODING' => string 'gzip, deflate, sdch, br' (length=23)
'HTTP_ACCEPT_LANGUAGE' => string 'en-US,en;q=0.8,en-GB;q=0.6' (length=26)
'HTTP_COOKIE' => string 'PHPSESSID=0gslnvgsci371ete9hg7k9ivc6' (length=36)
'PATH' => string 'C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\ProgramData\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;E:\Program Files\ATI Technologies\ATI.ACE\Core-Static;E:\Program Files\AMD\ATI.ACE\Core-Static;C:\Program Files (x86)\AMD\ATI.ACE\Core-Static;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files\Intel\Intel(R) Managemen'... (length=1169)
'SystemRoot' => string 'C:\WINDOWS' (length=10)
'COMSPEC' => string 'C:\WINDOWS\system32\cmd.exe' (length=27)
'PATHEXT' => string '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY' (length=57)
'WINDIR' => string 'C:\WINDOWS' (length=10)
'SERVER_SIGNATURE' => string '<address>Apache/2.4.23 (Win64) PHP/7.0.10 Server at localhost Port 80</address>' (length=80)
'SERVER_SOFTWARE' => string 'Apache/2.4.23 (Win64) PHP/7.0.10' (length=32)
'SERVER_NAME' => string 'localhost' (length=9)
'SERVER_ADDR' => string '::1' (length=3)
'SERVER_PORT' => string '80' (length=2)
'REMOTE_ADDR' => string '::1' (length=3)
'DOCUMENT_ROOT' => string 'C:/wamp64/www' (length=13)
'REQUEST_SCHEME' => string 'http' (length=4)
'CONTEXT_PREFIX' => string '' (length=0)
'CONTEXT_DOCUMENT_ROOT' => string 'C:/wamp64/www' (length=13)
'SERVER_ADMIN' => string '[email protected]' (length=29)
'SCRIPT_FILENAME' => string 'C:/wamp64/www/test.php' (length=26)
'REMOTE_PORT' => string '5359' (length=4)
'GATEWAY_INTERFACE' => string 'CGI/1.1' (length=7)
'SERVER_PROTOCOL' => string 'HTTP/1.1' (length=8)
'REQUEST_METHOD' => string 'GET' (length=3)
'QUERY_STRING' => string '' (length=0)
'REQUEST_URI' => string '/test.php' (length=13)
'SCRIPT_NAME' => string '/test.php' (length=13)
'PHP_SELF' => string '/test.php' (length=13)
'REQUEST_TIME_FLOAT' => float 1491068771.413
'REQUEST_TIME' => int 1491068771
वहाँ लेने के लिए बहुत कुछ है इसलिए मैं नीचे कुछ महत्वपूर्ण लोगों को चुनूंगा। यदि आप उन सभी के बारे में पढ़ना चाहते हैं तो प्रलेखन के सूचक खंड से परामर्श करें।
मैं उन सभी को एक दिन से नीचे जोड़ सकता हूं। या कोई व्यक्ति उन्हें नीचे एक अच्छी व्याख्या संपादित और जोड़ सकता है? संकेत, संकेत )
नीचे दिए गए सभी स्पष्टीकरणों के लिए, मान लें कि URL http://www.example.com/index.php है
-
HTTP_HOST
- होस्ट पता।
यहwww.example.com
लौटाएगा -
HTTP_USER_AGENT
- उपयोगकर्ता एजेंट की सामग्री। यह एक स्ट्रिंग है जिसमें ऑपरेटिंग सिस्टम सहित क्लाइंट के ब्राउज़र के बारे में सभी जानकारी होती है। -
HTTP_COOKIE
- एक अर्ध-बृहदांत्र सीमांकक के साथ एक संक्षिप्त स्ट्रिंग में सभी कुकीज़। -
SERVER_ADDR
- सर्वर का आईपी पता, जिसमें से वर्तमान स्क्रिप्ट चल रही है।
यह93.184.216.34
होगा -
PHP_SELF
- दस्तावेज़ रूट के सापेक्ष वर्तमान में निष्पादित स्क्रिप्ट का फ़ाइल नाम।
यह/index.php
लौटाएगा -
REQUEST_TIME_FLOAT
- माइक्रोसेकंड परिशुद्धता के साथ अनुरोध की शुरुआत का टाइमस्टैम्प। PHP 5.4.0 के बाद से उपलब्ध है। -
REQUEST_TIME
- अनुरोध के प्रारंभ का टाइमस्टैम्प। PHP 5.1.0 के बाद से उपलब्ध है।
$_GET
URL पैरामीटर के माध्यम से वर्तमान स्क्रिप्ट में चर का एक सहयोगी सरणी पारित किया गया।
$_GET
एक ऐसा सरणी है जिसमें सभी URL पैरामीटर होते हैं; ये जो भी हैं उसके बाद हैं? URL में।
एक उदाहरण के रूप में http://www.example.com/index.php?myVar=myVal का उपयोग करना। इस URL की जानकारी इस प्रारूप $_GET["myVar"]
पहुँचकर प्राप्त की जा सकती है और इसका परिणाम myVal
होगा।
उन लोगों के लिए कुछ कोड का उपयोग करना जो पढ़ना पसंद नहीं करते हैं।
// URL = http://www.example.com/index.php?myVar=myVal
echo $_GET["myVar"] == "myVal" ? "true" : "false"; // returns "true"
उपरोक्त उदाहरण टर्नरी ऑपरेटर का उपयोग करता है।
इससे पता चलता है कि आप URL से $_GET
सुपरग्लोबल का उपयोग करके कैसे मान प्राप्त कर सकते हैं।
अब एक और उदाहरण! हांफी
// URL = http://www.example.com/index.php?myVar=myVal&myVar2=myVal2
echo $_GET["myVar"]; // returns "myVal"
echo $_GET["myVar2"]; // returns "myVal2"
एक एम्परसेंड ( &
) वर्ण के साथ उन्हें अलग करके URL के माध्यम से कई चर भेजना संभव है।
सुरक्षा जोखिम
URL के माध्यम से कोई भी संवेदनशील जानकारी न भेजना बहुत महत्वपूर्ण है क्योंकि यह कंप्यूटर के इतिहास में रहेगा और किसी को भी दिखाई देगा जो इस ब्राउज़र तक पहुंच सकता है।
$_POST
अनुरोध में HTTP सामग्री-प्रकार के रूप में एप्लिकेशन / x-www-form-urlencoded या मल्टीपार्ट / प्रपत्र-डेटा का उपयोग करते समय चर का एक सहयोगी सरणी HTTP POST विधि के माध्यम से वर्तमान स्क्रिप्ट को पारित किया गया।
उस डेटा में $_GET
समान ही एक स्थान से दूसरे स्थान पर भेजा जाता है।
मैं एक उदाहरण में सीधे जाकर शुरू करता हूँ। (मैंने कार्रवाई विशेषता को छोड़ दिया है क्योंकि यह उस पृष्ठ पर जानकारी भेज देगा जो फ़ॉर्म में है)।
<form method="POST">
<input type="text" name="myVar" value="myVal" />
<input type="submit" name="submit" value="Submit" />
</form>
ऊपर एक मूल रूप है जिसके लिए डेटा भेजा जा सकता है। एक वास्तविक वातावरण में value
विशेषता का अर्थ यह नहीं होगा कि फॉर्म रिक्त होगा। इसके बाद उपयोगकर्ता द्वारा जो भी जानकारी दर्ज की जाती है वह भेजेगा।
echo $_POST["myVar"]); // returns "myVal"
सुरक्षा जोखिम
POST के माध्यम से डेटा भेजना भी सुरक्षित नहीं है। HTTPS का उपयोग यह सुनिश्चित करेगा कि डेटा को अधिक सुरक्षित रखा जाए।
$_FILES
HTTP POST विधि के माध्यम से वर्तमान स्क्रिप्ट पर अपलोड की गई वस्तुओं का एक सहयोगी सरणी। इस सरणी की संरचना POST विधि अपलोड अनुभाग में उल्लिखित है।
एक मूल रूप से शुरू करते हैं।
<form method="POST" enctype="multipart/form-data">
<input type="file" name="myVar" />
<input type="submit" name="Submit" />
</form>
ध्यान दें कि मैंने action
विशेषता को छोड़ दिया (फिर से!)। इसके अलावा, मैंने enctype="multipart/form-data"
जोड़ा, यह किसी भी रूप में महत्वपूर्ण है जो फ़ाइल अपलोड के साथ काम करेगा।
// ensure there isn't an error
if ($_FILES["myVar"]["error"] == UPLOAD_ERR_OK)
{
$folderLocation = "myFiles"; // a relative path. (could be "path/to/file" for example)
// if the folder doesn't exist then make it
if (!file_exists($folderLocation)) mkdir($folderLocation);
// move the file into the folder
move_uploaded_file($_FILES["myVar"]["tmp_name"], "$folderLocation/" . basename($_FILES["myVar"]["name"]));
}
इसका उपयोग एक फाइल को अपलोड करने के लिए किया जाता है। कभी-कभी आप एक से अधिक फ़ाइल अपलोड करना चाह सकते हैं। इसके लिए एक विशेषता मौजूद है, इसे multiple
कहा जाता multiple
।
वहाँ सिर्फ कुछ के बारे में एक विशेषता है । मुझे माफ कर दो
नीचे कई फ़ाइलों को सबमिट करने वाले फ़ॉर्म का एक उदाहरण है।
<form method="POST" enctype="multipart/form-data">
<input type="file" name="myVar[]" multiple="multiple" />
<input type="submit" name="Submit" />
</form>
यहां किए गए परिवर्तनों पर ध्यान दें; कुछ ही हैं।
-
input
नाम में वर्ग कोष्ठक हैं। ऐसा इसलिए है क्योंकि यह अब फ़ाइलों की एक सरणी है और इसलिए हम चयनित फ़ाइलों की एक सरणी बनाने के लिए फ़ॉर्म को बता रहे हैं। वर्गाकार कोष्ठकों को रखने से बाद की अधिकांश फ़ाइल$_FILES["myVar"]
सेट हो जाएगी। -
multiple="multiple"
विशेषता। यह केवल ब्राउज़र को बताता है कि उपयोगकर्ता एक से अधिक फ़ाइल का चयन कर सकते हैं।
$total = isset($_FILES["myVar"]) ? count($_FILES["myVar"]["name"]) : 0; // count how many files were sent
// iterate over each of the files
for ($i = 0; $i < $total; $i++)
{
// there isn't an error
if ($_FILES["myVar"]["error"][$i] == UPLOAD_ERR_OK)
{
$folderLocation = "myFiles"; // a relative path. (could be "path/to/file" for example)
// if the folder doesn't exist then make it
if (!file_exists($folderLocation)) mkdir($folderLocation);
// move the file into the folder
move_uploaded_file($_FILES["myVar"]["tmp_name"][$i], "$folderLocation/" . basename($_FILES["myVar"]["name"][$i]));
}
// else report the error
else switch ($_FILES["myVar"]["error"][$i])
{
case UPLOAD_ERR_INI_SIZE:
echo "Value: 1; The uploaded file exceeds the upload_max_filesize directive in php.ini.";
break;
case UPLOAD_ERR_FORM_SIZE:
echo "Value: 2; The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.";
break;
case UPLOAD_ERR_PARTIAL:
echo "Value: 3; The uploaded file was only partially uploaded.";
break;
case UPLOAD_ERR_NO_FILE:
echo "Value: 4; No file was uploaded.";
break;
case UPLOAD_ERR_NO_TMP_DIR:
echo "Value: 6; Missing a temporary folder. Introduced in PHP 5.0.3.";
break;
case UPLOAD_ERR_CANT_WRITE:
echo "Value: 7; Failed to write file to disk. Introduced in PHP 5.1.0.";
break;
case UPLOAD_ERR_EXTENSION:
echo "Value: 8; A PHP extension stopped the file upload. PHP does not provide a way to ascertain which extension caused the file upload to stop; examining the list of loaded extensions with phpinfo() may help. Introduced in PHP 5.2.0.";
break;
default:
echo "An unknown error has occured.";
break;
}
}
यह एक बहुत ही सरल उदाहरण है और फ़ाइल एक्सटेंशन जैसी समस्याओं की अनुमति नहीं देता है जिन्हें PHP कोड (SQL इंजेक्शन के एक PHP समकक्ष की तरह) के साथ अनुमति नहीं है या फ़ाइलें। प्रलेखन देखें।
पहली प्रक्रिया यह जांच रही है कि क्या कोई फाइलें हैं, और यदि हां, तो उनकी कुल संख्या को $total
सेट करें।
लूप के लिए उपयोग करने से $_FILES
सरणी का पुनरावृत्ति होता है और प्रत्येक आइटम को एक बार में एक्सेस किया जाता है। यदि वह फ़ाइल समस्या का सामना नहीं करती है, तो यदि कथन सत्य है और एकल फ़ाइल अपलोड से कोड चलाया जाता है।
यदि किसी समस्या का सामना किया जाता है तो स्विच ब्लॉक निष्पादित किया जाता है और उस विशेष अपलोड के लिए त्रुटि के अनुसार एक त्रुटि प्रस्तुत की जाती है।
$_COOKIE
HTTP कुकीज़ के माध्यम से वर्तमान स्क्रिप्ट को चर का एक सहयोगी सरणी दिया गया।
कुकीज़ वे चर हैं जिनमें डेटा होता है और क्लाइंट के कंप्यूटर पर संग्रहीत होता है।
उपर्युक्त सुपरग्लोबल्स के विपरीत, कुकीज़ को एक फ़ंक्शन के साथ बनाया जाना चाहिए (और मान निर्दिष्ट नहीं किया जाना चाहिए)। अधिवेशन नीचे है।
setcookie("myVar", "myVal", time() + 3600);
इस उदाहरण में कुकी के लिए एक नाम निर्दिष्ट किया गया है (इस उदाहरण में यह "myVar" है), एक मान दिया जाता है (इस उदाहरण में यह "myVal" है, लेकिन कुकी के लिए इसका मान निर्दिष्ट करने के लिए एक चर पारित किया जा सकता है), और फिर एक समाप्ति समय दिया गया है (इस उदाहरण में यह एक घंटे है क्योंकि 3600 सेकंड एक मिनट है)।
एक कुकी को अलग बनाने के लिए सम्मेलन के बावजूद, यह अन्य लोगों की तरह ही एक्सेस किया जाता है।
echo $_COOKIE["myVar"]; // returns "myVal"
एक कुकी को नष्ट करने के लिए, setcookie
को फिर से बुलाया जाना चाहिए, लेकिन समाप्ति समय अतीत में किसी भी समय निर्धारित किया गया है। निचे देखो।
setcookie("myVar", "", time() - 1);
var_dump($_COOKIE["myVar"]); // returns null
यह कुकीज़ को परेशान करेगा और इसे क्लाइंट कंप्यूटर से हटा देगा।
$_SESSION
एक साहचर्य सारणी जिसमें सत्र चर वर्तमान स्क्रिप्ट के लिए उपलब्ध है। यह कैसे उपयोग किया जाता है, इसके बारे में अधिक जानकारी के लिए सत्र फ़ंक्शंस के दस्तावेज़ देखें।
सत्र कुकीज़ की तरह बहुत हैं, सिवाय इसके कि वे सर्वर साइड हैं।
सत्र का उपयोग करने के लिए आपको session_start()
को अपनी स्क्रिप्ट के शीर्ष पर शामिल करना चाहिए ताकि सत्र का उपयोग किया जा सके।
एक सत्र चर सेट करना किसी अन्य चर को सेट करने के समान है। नीचे उदाहरण देखें।
$_SESSION["myVar"] = "myVal";
सत्र शुरू करते समय एक यादृच्छिक आईडी कुकी के रूप में सेट की जाती है और इसे "PHPSESSID" कहा जाता है और इसमें वर्तमान सत्र के लिए सत्र आईडी शामिल होगी। इसे session_id()
फ़ंक्शन पर कॉल करके एक्सेस किया जा सकता है।
unset
फ़ंक्शन (जैसे कि unset($_SESSION["myVar"])
का उपयोग करके सत्र चर को नष्ट करना संभव है।
विकल्प के लिए session_destory()
कॉल session_destory()
। यह पूरे सत्र को नष्ट कर देगा जिसका अर्थ है कि सभी सत्र चर अब मौजूद नहीं होंगे।
$_REQUEST
डिफ़ॉल्ट रूप से एक सहयोगी सरणी में
$_GET
,$_POST
और$_COOKIE
की सामग्री शामिल है।
जैसा कि PHP प्रलेखन बताता है, यह केवल एक चर में $_GET
, $_POST
और $_COOKIE
का एक $_COOKIE
।
चूंकि उन सभी सरणियों में एक ही नाम के साथ एक इंडेक्स होना संभव है, इसलिए php.ini
फ़ाइल में एक सेटिंग है, जिसे request_order
कहा जाता है, जिसमें निर्दिष्ट किया जा सकता है कि तीनों में से किसमें पूर्वता है।
उदाहरण के लिए, यदि इसे "GPC"
सेट किया गया था, तो $_COOKIE
के मूल्य का उपयोग किया जाएगा, क्योंकि इसे बाएं से दाएं अर्थ में पढ़ा जाता है, $_REQUEST
इसका मूल्य $_GET
, फिर $_POST
और फिर $_COOKIE
सेट होगा। और चूंकि $_COOKIE
अंतिम है जो कि $_REQUEST
।
इस प्रश्न को देखें।
$_ENV
वैरिएबल विधि के माध्यम से वर्तमान स्क्रिप्ट के लिए चर का एक सहयोगी सरणी गुजरता है।
इन चरों को PHP के वैश्विक नेमस्पेस में पर्यावरण से आयात किया जाता है, जिसके तहत PHP पार्सर चल रहा है। कई शेल द्वारा प्रदान किए जाते हैं जिसके तहत पीएचपी चल रहा है और विभिन्न प्रणालियों के विभिन्न प्रकार के गोले चलने की संभावना है, एक निश्चित सूची असंभव है। कृपया परिभाषित पर्यावरण चर की सूची के लिए अपने शेल के दस्तावेज़ देखें।
अन्य पर्यावरण चर में सीजीआई चर शामिल हैं, चाहे पीएचपी एक सर्वर मॉड्यूल या सीजीआई प्रोसेसर के रूप में चल रहा है या नहीं।
$_ENV
भीतर संग्रहीत कुछ भी उस वातावरण से है जिसमें PHP चल रही है।
$_ENV
केवल तभी पॉपुलेटेड है अगर php.ini
अनुमति देता है।
$_ENV
आबाद क्यों नहीं है, इस बारे में अधिक जानकारी के लिए यह उत्तर देखें।