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 zou www.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 zou 93.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.

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.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow