PHP
Superglobal Variabelen PHP
Zoeken…
Invoering
Superglobals zijn ingebouwde variabelen die altijd beschikbaar zijn in alle bereiken.
Verschillende vooraf gedefinieerde variabelen in PHP zijn "superglobals", wat betekent dat ze beschikbaar zijn in alle bereiken in een script. Het is niet nodig om de global $variable;
te doen global $variable;
om ze te openen binnen functies of methoden.
PHP5 SuperGlobals
Hieronder staan de PHP5 SuperGlobals
- $ GLOBALS
- $ _REQUEST
- $ _GET
- $ _POST
- $ _FILES
- $ _SERVER
- $ _ENV
- $ _COOKIE
- $ _SESSION
$ GLOBALS : deze SuperGlobal-variabele wordt gebruikt voor toegang tot globale variabelen.
<?php
$a = 10;
function foo(){
echo $GLOBALS['a'];
}
//Which will print 10 Global Variable a
?>
$ _REQUEST : deze SuperGlobal-variabele wordt gebruikt om gegevens te verzamelen die zijn ingediend via een HTML-formulier.
<?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 : deze SuperGlobal-variabele wordt gebruikt om gegevens te verzamelen die door HTML Form zijn ingediend met de get
methode.
<?php
if(isset($_GET['username'])){
echo $_GET['username'];
}
//This will print value of HTML field with name username submitted using GET Method
?>
$ _POST : deze SuperGlobal-variabele wordt gebruikt om gegevens te verzamelen die via HTML-formulier met de post
methode zijn ingediend.
<?php
if(isset($_POST['username'])){
echo $_POST['username'];
}
//This will print value of HTML field with name username submitted using POST Method
?>
$ _FILES : deze SuperGlobal-variabele bevat de informatie van geüploade bestanden via de HTTP Post-methode.
<?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 : deze SuperGlobal-variabele bevat informatie over scripts, HTTP-headers en serverpaden.
<?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 : Deze SuperGlobal Variable Shell Environment Variabele details waaronder de PHP wordt uitgevoerd.
$ _COOKIE : deze SuperGlobal-variabele wordt gebruikt om de cookiewaarde met de gegeven sleutel op te halen.
<?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
*/
?>
$ _SESSIE : deze SuperGlobal-variabele wordt gebruikt om sessiewaarde in te stellen en op te halen die op de server is opgeslagen.
<?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
*/
?>
Suberglobals uitgelegd
Invoering
Simpel gezegd, dit zijn variabelen die in alle scenario's in uw scripts beschikbaar zijn.
Dit betekent dat het niet nodig is om ze als parameters in uw functies door te geven, of ze buiten een codeblok op te slaan om ze beschikbaar te hebben in verschillende bereiken.
Wat is een superglobal ??
Als je denkt dat dit net superhelden zijn, zijn ze dat niet.
Vanaf PHP versie 7.1.3 zijn er 9 superglobal-variabelen. Ze zijn als volgt:
-
$GLOBALS
-$GLOBALS
alle variabelen die wereldwijd beschikbaar zijn -
$_SERVER
- Informatie over server en uitvoeringsomgeving -
$_GET
- HTTP GET-variabelen -
$_POST
- HTTP POST-variabelen -
$_FILES
- Variabelen voor uploaden van HTTP-bestanden -
$_COOKIE
- HTTP-cookies -
$_SESSION
- sessievariabelen -
$_REQUEST
- HTTP-verzoekvariabelen -
$_ENV
- Omgevingsvariabelen
Zie de documentatie .
Vertel me meer, vertel me meer
Het spijt me voor de vetreferentie! Koppeling
Tijd voor wat uitleg over deze superhelden globals.
$GLOBALS
Een associatieve array met verwijzingen naar alle variabelen die momenteel zijn gedefinieerd in het algemene bereik van het script. De variabelenamen zijn de sleutels van de array.
Code
$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);
uitgang
string 'local' (length=5)
string 'global' (length=6)
null
string 'global' (length=6)
In het bovenstaande voorbeeld wordt $myLocal
de tweede keer niet weergegeven omdat het wordt gedeclareerd in de test()
-functie en vervolgens wordt vernietigd nadat de functie is gesloten.
Wereldwijd worden
Om dit te verhelpen zijn er twee opties.
Optie één: global
trefwoord
function test()
{
global $myLocal;
$myLocal = "local";
var_dump($myLocal);
var_dump($GLOBALS["myGlobal"]);
}
Het global
sleutelwoord is een voorvoegsel op een variabele waardoor het deel uitmaakt van het globale bereik.
Houd er rekening mee dat u geen waarde kunt toewijzen aan een variabele in dezelfde instructie als het algemene trefwoord. Daarom moest ik hieronder een waarde toekennen. (Het is mogelijk als u nieuwe lijnen en spaties verwijdert, maar ik vind het niet netjes. global $myLocal; $myLocal = "local"
).
Optie twee: $GLOBALS
array
function test()
{
$GLOBALS["myLocal"] = "local";
$myLocal = $GLOBALS["myLocal"];
var_dump($myLocal);
var_dump($GLOBALS["myGlobal"]);
}
In dit voorbeeld heb ik $myLocal
de waarde van $GLOBAL["myLocal"]
opnieuw toegewezen omdat ik het gemakkelijker vind om een variabelenaam te schrijven in plaats van de associatieve array.
$_SERVER
$ _SERVER is een array met informatie zoals headers, paden en scriptlocaties. De items in deze array worden gemaakt door de webserver. Er is geen garantie dat elke webserver deze zal bieden; servers kunnen sommige weglaten of andere bieden die hier niet worden vermeld. Dat gezegd hebbende, een groot aantal van deze variabelen is opgenomen in de CGI / 1.1-specificatie , dus je zou die moeten kunnen verwachten.
Een voorbeelduitvoer hiervan kan zijn als volgt (uitgevoerd op mijn Windows-pc met 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
Er is veel te doen, dus ik zal hieronder een paar belangrijke kiezen. Als u er alles over wilt lezen, raadpleegt u het gedeelte met indices in de documentatie.
Ik zou ze allemaal op een dag kunnen toevoegen. Of kan iemand ze hieronder bewerken en een goede uitleg toevoegen? Hint, hint ;)
Neem voor alle onderstaande uitleg aan dat de URL http://www.example.com/index.php is
-
HTTP_HOST
- Het hostadres.
Dit zouwww.example.com
retourneren -
HTTP_USER_AGENT
- Inhoud van de user-agent. Dit is een tekenreeks die alle informatie over de browser van de client bevat, inclusief het besturingssysteem. -
HTTP_COOKIE
- Alle cookies in een aaneengeschakelde string, met een puntkomma-scheidingsteken. -
SERVER_ADDR
- Het IP-adres van de server, waarvan het huidige script wordt uitgevoerd.
Dit zou93.184.216.34
-
PHP_SELF
- De bestandsnaam van het momenteel uitgevoerde script, relatief ten opzichte van de root van het document.
Dit zou/index.php
retourneren -
REQUEST_TIME_FLOAT
- Het tijdstempel van het begin van het verzoek, met microseconde precisie. Beschikbaar sinds PHP 5.4.0. -
REQUEST_TIME
- De tijdstempel van het begin van het verzoek. Beschikbaar sinds PHP 5.1.0.
$_GET
Een associatieve reeks variabelen die aan het huidige script is doorgegeven via de URL-parameters.
$_GET
is een array die alle URL-parameters bevat; dit zijn de wat is na de? in de URL.
Gebruik http://www.example.com/index.php?myVar=myVal als voorbeeld. Deze informatie van deze URL kan worden verkregen door in deze indeling $_GET["myVar"]
en het resultaat hiervan zal myVal
.
Een code gebruiken voor mensen die niet van lezen houden.
// URL = http://www.example.com/index.php?myVar=myVal
echo $_GET["myVar"] == "myVal" ? "true" : "false"; // returns "true"
Het bovenstaande voorbeeld maakt gebruik van de ternaire operator .
Dit laat zien hoe u toegang kunt krijgen tot de waarde van de URL met behulp van de $_GET
superglobal.
Nu nog een voorbeeld! snik
// URL = http://www.example.com/index.php?myVar=myVal&myVar2=myVal2
echo $_GET["myVar"]; // returns "myVal"
echo $_GET["myVar2"]; // returns "myVal2"
Het is mogelijk om meerdere variabelen via de URL te verzenden door ze te scheiden met een en-teken ( &
).
Veiligheidsrisico
Het is heel belangrijk om geen gevoelige informatie via de URL te verzenden, omdat deze in de geschiedenis van de computer blijft en zichtbaar is voor iedereen die toegang heeft tot die browser.
$_POST
Een associatieve array van variabelen die aan het huidige script is doorgegeven via de HTTP POST-methode bij het gebruik van application / x-www-form-urlencoded of multipart / form-data als het HTTP Content-Type in de aanvraag.
Zeer vergelijkbaar met $_GET
doordat gegevens van de ene plaats naar de andere worden verzonden.
Ik zal beginnen met meteen een voorbeeld te bekijken. (Ik heb het actiekenmerk weggelaten, omdat dit de informatie naar de pagina verzendt waarin het formulier zich bevindt).
<form method="POST">
<input type="text" name="myVar" value="myVal" />
<input type="submit" name="submit" value="Submit" />
</form>
Hierboven is een basisformulier waarvoor gegevens kunnen worden verzonden. In een echte omgeving zou het value
niet worden ingesteld, wat betekent dat het formulier leeg is. Dit zou dan alle informatie verzenden die door de gebruiker is ingevoerd.
echo $_POST["myVar"]); // returns "myVal"
Veiligheidsrisico
Gegevens verzenden via POST is ook niet veilig. Het gebruik van HTTPS zorgt ervoor dat gegevens veiliger worden bewaard.
$_FILES
Een associatieve reeks items die naar het huidige script is geüpload via de HTTP POST-methode. De structuur van deze array is beschreven in het gedeelte POST-methode-uploads .
Laten we beginnen met een basisvorm.
<form method="POST" enctype="multipart/form-data">
<input type="file" name="myVar" />
<input type="submit" name="Submit" />
</form>
Merk op dat ik weggelaten de action
attribuut (weer!). Ik heb ook enctype="multipart/form-data"
, dit is belangrijk voor elke vorm die te maken krijgt met bestandsuploads.
// 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"]));
}
Dit wordt gebruikt om één bestand te uploaden. Soms wilt u meer dan één bestand uploaden. Daar bestaat een attribuut voor, dit wordt multiple
.
Er is een kenmerk voor zo ongeveer alles . Het spijt me
Hieronder ziet u een voorbeeld van een formulier dat meerdere bestanden indient.
<form method="POST" enctype="multipart/form-data">
<input type="file" name="myVar[]" multiple="multiple" />
<input type="submit" name="Submit" />
</form>
Let op de wijzigingen die hier zijn aangebracht; er zijn er maar een paar.
- De
input
heeft vierkante haakjes. Dit komt omdat het nu een reeks bestanden is en daarom vertellen we het formulier om een reeks van de geselecteerde bestanden te maken. Als u de vierkante haken weglaat, wordt het laatste bestand ingesteld op$_FILES["myVar"]
. - Het kenmerk
multiple="multiple"
. Dit vertelt de browser alleen dat gebruikers meer dan één bestand kunnen selecteren.
$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;
}
}
Dit is een heel eenvoudig voorbeeld en lost geen problemen op zoals bestandsextensies die niet zijn toegestaan of bestanden met de naam PHP-code (zoals een PHP-equivalent van een SQL-injectie). Zie de documentatie .
Het eerste proces is het controleren of er bestanden zijn, en zo ja, stel het totale aantal daarvan in op $total
.
Het gebruik van de for-lus maakt een iteratie van de $_FILES
array mogelijk en geeft toegang tot elk item één voor één. Als dat bestand geen probleem ondervindt, is de instructie if waar en wordt de code van de upload van het enkele bestand uitgevoerd.
Als er een probleem wordt aangetroffen, wordt het schakelblok uitgevoerd en wordt een fout weergegeven in overeenstemming met de fout voor die specifieke upload.
$_COOKIE
Een associatieve reeks variabelen die via HTTP-cookies aan het huidige script zijn doorgegeven.
Cookies zijn variabelen die gegevens bevatten en worden opgeslagen op de computer van de klant.
In tegenstelling tot de bovengenoemde superglobals, moeten cookies worden gemaakt met een functie (en geen waarde toekennen). De conventie staat hieronder.
setcookie("myVar", "myVal", time() + 3600);
In dit voorbeeld is een naam opgegeven voor de cookie (in dit voorbeeld is dit "myVar"), wordt een waarde opgegeven (in dit voorbeeld is dit "myVal", maar een variabele kan worden doorgegeven om de waarde aan de cookie toe te wijzen), en dan wordt een vervaltijd gegeven (in dit voorbeeld is het een uur omdat 3600 seconden een minuut is).
Ondanks dat de conventie voor het maken van een cookie anders is, wordt deze op dezelfde manier benaderd als de andere.
echo $_COOKIE["myVar"]; // returns "myVal"
Om een cookie te vernietigen, moet setcookie
opnieuw worden opgeroepen, maar de vervaltijd is ingesteld op een willekeurig tijdstip in het verleden. Zie hieronder.
setcookie("myVar", "", time() - 1);
var_dump($_COOKIE["myVar"]); // returns null
Hiermee worden de cookies uitgeschakeld en van de clientcomputer verwijderd.
$_SESSION
Een associatieve array met sessievariabelen die beschikbaar zijn voor het huidige script. Raadpleeg de documentatie van de sessiefuncties voor meer informatie over hoe dit wordt gebruikt.
Sessies lijken veel op cookies behalve dat ze serverzijde zijn.
Om sessies te gebruiken, moet u session_start()
bovenaan uw scripts opnemen om sessies te kunnen gebruiken.
Het instellen van een sessievariabele is hetzelfde als het instellen van een andere variabele. Zie voorbeeld hieronder.
$_SESSION["myVar"] = "myVal";
Bij het starten van een sessie wordt een willekeurige ID ingesteld als cookie en deze wordt "PHPSESSID" genoemd en deze bevat de sessie-ID voor die huidige sessie. U kunt dit bereiken door de functie session_id()
aan te roepen.
Het is mogelijk om sessievariabelen te vernietigen met behulp van de unset
functie (zodat unset($_SESSION["myVar"])
zou dat variabele vernietigen).
Het alternatief is om session_destory()
aan te roepen. Hiermee wordt de hele sessie vernietigd, wat betekent dat alle sessievariabelen niet langer bestaan.
$_REQUEST
Een associatieve array die standaard de inhoud van
$_GET
,$_POST
en$_COOKIE
.
Zoals de PHP-documentatie aangeeft, is dit slechts een verzameling van $_GET
, $_POST
en $_COOKIE
alles in één variabele.
Omdat het mogelijk is voor alle drie van die arrays om een index met dezelfde naam te hebben, is er een instelling in het php.ini
bestand met de naam request_order
die kan specificeren welke van de drie voorrang heeft.
Als deze bijvoorbeeld is ingesteld op "GPC"
, wordt de waarde van $_COOKIE
gebruikt, omdat deze van links naar rechts wordt gelezen, wat betekent dat $_REQUEST
de waarde $_COOKIE
op $_GET
, vervolgens $_POST
en vervolgens $_COOKIE
en omdat $_COOKIE
laatste is, is dat de waarde in $_REQUEST
.
Zie deze vraag .
$_ENV
Een associatieve reeks variabelen die aan het huidige script is doorgegeven via de omgevingsmethode.
Deze variabelen worden geïmporteerd in de algemene naamruimte van PHP vanuit de omgeving waarin de PHP-parser wordt uitgevoerd. Velen worden geleverd door de shell waaronder PHP draait en verschillende systemen draaien waarschijnlijk verschillende soorten shells, een definitieve lijst is onmogelijk. Raadpleeg de documentatie van uw shell voor een lijst met gedefinieerde omgevingsvariabelen.
Andere omgevingsvariabelen omvatten de CGI-variabelen die daar worden geplaatst, ongeacht of PHP als een servermodule of CGI-processor wordt uitgevoerd.
Alles opgeslagen binnen $_ENV
is van de omgeving van waaruit PHP wordt uitgevoerd.
$_ENV
wordt alleen ingevuld als php.ini
toestaat.
Zie dit antwoord voor meer informatie over waarom $_ENV
niet is ingevuld.