Suche…


Einführung

Superglobals sind integrierte Variablen, die in allen Bereichen immer verfügbar sind.

Mehrere vordefinierte Variablen in PHP sind "Superglobals", dh sie sind in allen Bereichen eines Skripts verfügbar. Es ist nicht notwendig, global $variable; um auf sie innerhalb von Funktionen oder Methoden zuzugreifen.

PHP5 SuperGlobals

Nachfolgend finden Sie die PHP5-SuperGlobals

  • $ GLOBALS
  • $ _REQUEST
  • $ _GET
  • $ _POST
  • $ _FILES
  • $ _SERVER
  • $ _ENV
  • $ _COOKIE
  • $ _SESSION

$ GLOBALS : Diese SuperGlobal-Variable wird für den Zugriff auf globale Variablen verwendet.

<?php    
$a = 10;    
function foo(){
    echo $GLOBALS['a'];
}    
//Which will print 10 Global Variable a
?>

$ _REQUEST : Diese SuperGlobal-Variable wird zum Sammeln von Daten verwendet, die von einem HTML-Formular gesendet werden.

<?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 : Diese SuperGlobal-Variable wird zum Sammeln von Daten verwendet, die vom HTML-Formular mit der get Methode gesendet wurden.

<?php
if(isset($_GET['username'])){
    echo $_GET['username'];
}
//This will print value of HTML field with name username submitted using GET Method
?>

$ _POST : Diese SuperGlobal-Variable wird zum Sammeln von Daten verwendet, die vom HTML-Formular mit der post Methode übermittelt werden.

<?php
if(isset($_POST['username'])){
    echo $_POST['username'];
}
//This will print value of HTML field with name username submitted using POST Method
?>

$ _FILES : Diese SuperGlobal-Variable enthält die Informationen über hochgeladene Dateien über die 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 : Diese SuperGlobal-Variable enthält Informationen zu Skripts, HTTP-Headern und Serverpfaden.

<?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 : Diese Shell-Umgebungsvariable dieser SuperGlobal-Variablen enthält Details, unter denen PHP ausgeführt wird.

$ _COOKIE : Diese SuperGlobal-Variable wird verwendet, um den Cookie-Wert mit dem angegebenen Schlüssel abzurufen.

<?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 : Diese SuperGlobal-Variable wird zum Festlegen und Abrufen des auf dem Server gespeicherten Sitzungswerts verwendet.

<?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 erklärt

Einführung

Vereinfacht gesagt, sind dies Variablen, die in allen Bereichen Ihrer Skripts verfügbar sind.

Das bedeutet, dass Sie sie nicht als Parameter in Ihren Funktionen übergeben oder außerhalb eines Codeblocks speichern müssen, um sie in verschiedenen Bereichen verfügbar zu haben.

Was ist ein Superglobus?

Wenn Sie denken, dass dies wie Superhelden sind, sind sie es nicht.

Ab PHP Version 7.1.3 gibt es 9 superglobale Variablen. Sie sind wie folgt:

  • $GLOBALS - $GLOBALS alle im globalen Bereich verfügbaren Variablen
  • $_SERVER - Informationen zur Server- und Ausführungsumgebung
  • $_GET - HTTP GET-Variablen
  • $_POST - HTTP POST-Variablen
  • $_FILES - Variablen zum Hochladen von HTTP- $_FILES
  • $_COOKIE - HTTP-Cookies
  • $_SESSION - Sitzungsvariablen
  • $_REQUEST - HTTP-Anforderungsvariablen
  • $_ENV - Umgebungsvariablen

Siehe die Dokumentation .

Erzähl mir mehr, erzähl mir mehr

Es tut mir leid für die Fett-Referenz! Verknüpfung

Zeit für eine Erklärung zu diesen Superhelden Globals.

$GLOBALS

Ein assoziatives Array, das Verweise auf alle Variablen enthält, die derzeit im globalen Gültigkeitsbereich des Skripts definiert sind. Die Variablennamen sind die Schlüssel des Arrays.

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);

Ausgabe

string 'local' (length=5)
string 'global' (length=6)
null
string 'global' (length=6)

Im obigen Beispiel wird $myLocal nicht das zweite Mal angezeigt, da es in der Funktion test() deklariert und nach dem Schließen der Funktion $myLocal wird.

Global werden

Zur Abhilfe gibt es zwei Möglichkeiten.

Option eins: global Schlüsselwort

function test()
{
    global $myLocal;
    $myLocal = "local";
    var_dump($myLocal);
    var_dump($GLOBALS["myGlobal"]);
}

Das global Schlüsselwort ist ein Präfix für eine Variable, das es zwingt, Teil des globalen Bereichs zu sein.

Beachten Sie, dass Sie einer Variablen in derselben Anweisung wie das globale Schlüsselwort keinen Wert zuweisen können. Deshalb musste ich einen Wert darunter zuordnen. (Es ist möglich, wenn Sie neue Zeilen und Leerzeichen entfernen, aber ich denke nicht, dass es sauber ist. global $myLocal; $myLocal = "local" ).

Option zwei: $GLOBALS Array

function test()
{
    $GLOBALS["myLocal"] = "local";
    $myLocal = $GLOBALS["myLocal"];
    var_dump($myLocal);
    var_dump($GLOBALS["myGlobal"]);
}

In diesem Beispiel habe ich $myLocal den Wert von $GLOBAL["myLocal"] neu zugewiesen, da ich es einfacher finde, einen Variablennamen zu schreiben als das assoziative Array.

$_SERVER

$ _SERVER ist ein Array, das Informationen wie Header, Pfade und Skriptpositionen enthält. Die Einträge in diesem Array werden vom Webserver erstellt. Es gibt keine Garantie dafür, dass jeder Webserver eine dieser Möglichkeiten zur Verfügung stellt. Server können einige auslassen oder andere bereitstellen, die hier nicht aufgeführt sind. Allerdings ist eine große Anzahl dieser Variablen in der CGI / 1.1-Spezifikation berücksichtigt, daher sollten Sie diese erwarten können.

Eine Beispielausgabe davon könnte wie folgt aussehen (auf meinem Windows-PC mit WAMP ausführen)

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

Es gibt viel zu erleben, deshalb werde ich unten einige wichtige herausgreifen. Wenn Sie mehr darüber erfahren möchten, konsultieren Sie den Abschnitt "Indizes" der Dokumentation.

Ich könnte sie alle an einem Tag hinzufügen. Oder kann jemand unten eine gute Erklärung hinzufügen und hinzufügen? Hinweis, Hinweis ;)

Nehmen Sie für alle folgenden Erklärungen an, dass die URL http://www.example.com/index.php lautet

  • HTTP_HOST - Die Hostadresse.
    Dies würde www.example.com
  • HTTP_USER_AGENT - Inhalt des Benutzeragenten. Dies ist eine Zeichenfolge, die alle Informationen über den Browser des Clients einschließlich des Betriebssystems enthält.
  • HTTP_COOKIE - Alle Cookies in einer verketteten Zeichenfolge mit einem HTTP_COOKIE -Trennzeichen.
  • SERVER_ADDR - Die IP-Adresse des Servers, auf dem das aktuelle Skript ausgeführt wird.
    Dies würde 93.184.216.34
  • PHP_SELF - Der Dateiname des aktuell ausgeführten Skripts, relativ zum Dokumentstamm.
    Dies würde /index.php
  • REQUEST_TIME_FLOAT - Der Zeitstempel des Starts der Anforderung mit einer Genauigkeit im Mikrosekundenbereich. Verfügbar seit PHP 5.4.0.
  • REQUEST_TIME - Der Zeitstempel des Starts der Anforderung. Verfügbar seit PHP 5.1.0.

$_GET

Ein assoziatives Array von Variablen, das über die URL-Parameter an das aktuelle Skript übergeben wird.

$_GET ist ein Array, das alle URL-Parameter enthält. das ist was nach dem ist? in der URL.

Verwenden Sie http://www.example.com/index.php?myVar=myVal als Beispiel. Diese Informationen von dieser URL können durch Zugriff in diesem Format $_GET["myVar"] myVal . Das Ergebnis ist myVal .

Verwenden Sie Code für diejenigen, die nicht gerne lesen.

// URL = http://www.example.com/index.php?myVar=myVal
echo $_GET["myVar"] == "myVal" ? "true" : "false"; // returns "true"

Das obige Beispiel verwendet den ternären Operator .

Dies zeigt, wie Sie mit der $_GET Superglobal von der URL aus auf den $_GET können.

Nun noch ein Beispiel! keuchen

// URL = http://www.example.com/index.php?myVar=myVal&myVar2=myVal2
echo $_GET["myVar"]; // returns "myVal"
echo $_GET["myVar2"]; // returns "myVal2"

Es ist möglich, mehrere Variablen durch die URL zu senden, indem Sie sie mit einem Et-Zeichen ( & ) trennen.

Sicherheitsrisiko
Es ist sehr wichtig, keine vertraulichen Informationen über die URL zu senden, da diese in der Historie des Computers bleiben und für jeden sichtbar sind, der auf diesen Browser zugreifen kann.

$_POST

Ein assoziatives Array von Variablen, das über die HTTP-POST-Methode an das aktuelle Skript übergeben wird, wenn application / x-www-form-urlencoded oder multipart / form-data als HTTP-Inhaltstyp in der Anforderung verwendet wird.

$_GET ist sehr ähnlich, da Daten von einem Ort zum anderen gesendet werden.

Ich beginne mit einem Beispiel. (Ich habe das Aktionsattribut weggelassen, da dadurch die Informationen an die Seite gesendet werden, in der sich das Formular befindet.)

<form method="POST">
    <input type="text" name="myVar" value="myVal" />
    <input type="submit" name="submit" value="Submit" />
</form>

Oben ist ein Basisformular, für das Daten gesendet werden können. In einer realen Umgebung würde das value Attribut nicht gesetzt, dh das Formular wäre leer. Dies würde dann die vom Benutzer eingegebenen Informationen senden.

echo $_POST["myVar"]); // returns "myVal"

Sicherheitsrisiko
Das Versenden von Daten per POST ist ebenfalls nicht sicher. Durch die Verwendung von HTTPS wird sichergestellt, dass die Daten sicherer sind.

$_FILES

Ein assoziatives Array von Elementen, die über die HTTP-POST-Methode in das aktuelle Skript hochgeladen werden. Die Struktur dieses Arrays ist im Abschnitt Uploads der POST-Methode beschrieben .

Beginnen wir mit einer Grundform.

<form method="POST" enctype="multipart/form-data">
    <input type="file" name="myVar" />
    <input type="submit" name="Submit" />
</form>

Beachten Sie, dass ich das action (wieder!) Weggelassen habe. Außerdem habe ich enctype="multipart/form-data" hinzugefügt. Dies ist für jedes Formular wichtig, das sich mit Dateiuploads befasst.

// 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"]));
}

Hiermit wird eine Datei hochgeladen. Manchmal möchten Sie möglicherweise mehrere Dateien hochladen. Dafür gibt es ein Attribut, es heißt multiple .
Es gibt ein Attribut für alles . Es tut mir Leid

Unten sehen Sie ein Beispiel für ein Formular, das mehrere Dateien sendet.

<form method="POST" enctype="multipart/form-data">
    <input type="file" name="myVar[]" multiple="multiple" />
    <input type="submit" name="Submit" />
</form>

Beachten Sie die hier vorgenommenen Änderungen. Da sind nur ganz wenige.

  • Der Name der input hat eckige Klammern. Dies liegt daran, dass es sich jetzt um ein Array von Dateien handelt, und wir sagen dem Formular, dass ein Array der Dateien ausgewählt werden soll. Wenn die eckigen Klammern weggelassen werden, wird die Datei mit den letztgenannten Dateien auf $_FILES["myVar"] .
  • Das Attribut multiple="multiple" . Dies teilt dem Browser lediglich mit, dass Benutzer mehrere Dateien auswählen können.
$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;
    }
}

Dies ist ein sehr einfaches Beispiel, das Probleme wie nicht zulässige Dateierweiterungen oder mit PHP-Code benannte Dateien (wie ein PHP-Äquivalent einer SQL-Injektion) nicht behandelt. Siehe die Dokumentation .

Der erste Prozess prüft, ob Dateien vorhanden sind. Falls ja, legen Sie deren Gesamtzahl auf $total .

Mit der for-Schleife können Sie das $_FILES Array $_FILES und auf jedes Element $_FILES zugreifen. Wenn für diese Datei kein Problem auftritt, ist die if -Anweisung wahr und der Code aus der Einzeldatei wird ausgeführt.
Wenn ein Problem auftritt, wird der Schalterblock ausgeführt und ein Fehler wird entsprechend dem Fehler für diesen bestimmten Upload angezeigt.

Ein assoziatives Array von Variablen, das über HTTP-Cookies an das aktuelle Skript übergeben wird.

Cookies sind Variablen, die Daten enthalten und auf dem Computer des Kunden gespeichert werden.

Im Gegensatz zu den oben genannten Superglobalen müssen Cookies mit einer Funktion erstellt werden (und keinen Wert zuweisen). Die Konvention ist unten.

setcookie("myVar", "myVal", time() + 3600);

In diesem Beispiel wird ein Name für das Cookie angegeben (in diesem Beispiel ist es "myVar"), ein Wert ist angegeben (in diesem Beispiel ist es "myVal", aber eine Variable kann übergeben werden, um den Cookie dem Cookie zuzuordnen). und dann wird eine Ablaufzeit angegeben (in diesem Beispiel ist es eine Stunde, da 3600 Sekunden eine Minute sind).

Obwohl die Konvention zum Erstellen eines Cookies anders ist, wird auf dieselbe Weise wie auf die anderen zugegriffen.

echo $_COOKIE["myVar"]; // returns "myVal"

Um einen Cookie zu zerstören, muss setcookie erneut aufgerufen werden. Die setcookie ist jedoch auf einen beliebigen Zeitpunkt in der Vergangenheit festgelegt. Siehe unten.

setcookie("myVar", "", time() - 1);
var_dump($_COOKIE["myVar"]); // returns null 

Dadurch werden die Cookies aufgehoben und vom Clientcomputer entfernt.

$_SESSION

Ein assoziatives Array mit Sitzungsvariablen, die für das aktuelle Skript verfügbar sind. Weitere Informationen zur Verwendung dieser Funktion finden Sie in der Dokumentation zu den Sitzungsfunktionen .

Sitzungen ähneln Cookies, sie sind jedoch serverseitig.

Um Sitzungen zu verwenden, müssen Sie session_start() oben in Ihre Skripts session_start() um die Verwendung von Sitzungen zuzulassen.

Das Festlegen einer Sitzungsvariablen entspricht dem Festlegen einer anderen Variablen. Siehe Beispiel unten.

$_SESSION["myVar"] = "myVal";

Beim Starten einer Sitzung wird eine zufällige ID als Cookie festgelegt und als "PHPSESSID" bezeichnet. Sie enthält die Sitzungs-ID für die aktuelle Sitzung. Dies kann durch Aufrufen der Funktion session_id() werden.

Es ist möglich, Sitzungsvariablen mit der unset Funktion zu unset($_SESSION["myVar"]) diese Variable zerstört.
Die Alternative ist, session_destory() . Dadurch wird die gesamte Sitzung zerstört, was bedeutet, dass alle Sitzungsvariablen nicht mehr vorhanden sind.

$_REQUEST

Ein assoziatives Array, das standardmäßig den Inhalt von $_GET , $_POST und $_COOKIE .

Wie in der PHP-Dokumentation angegeben, handelt es sich hierbei lediglich um eine $_GET von $_GET , $_POST und $_COOKIE in einer einzigen Variablen.

Da es für alle drei dieser Arrays möglich ist, einen Index mit demselben Namen zu haben, gibt es in der php.ini Datei mit dem Namen request_order eine Einstellung, die php.ini kann, welcher der drei request_order Vorrang hat.
Wenn es beispielsweise auf "GPC" , wird der Wert von $_COOKIE verwendet, da von links nach rechts gelesen wird, was bedeutet, dass $_REQUEST seinen Wert auf $_GET , dann auf $_POST und dann auf $_COOKIE und da $_COOKIE letzte ist, ist dies der Wert, der in $_REQUEST .
Siehe diese Frage .

$_ENV

Ein assoziatives Array von Variablen, das über die Umgebungsmethode an das aktuelle Skript übergeben wird.

Diese Variablen werden aus der Umgebung, in der der PHP-Parser ausgeführt wird, in den globalen Namespace von PHP importiert. Viele werden von der Shell bereitgestellt, unter der PHP ausgeführt wird, und verschiedene Systeme führen wahrscheinlich unterschiedliche Arten von Shells aus. Eine endgültige Liste ist jedoch nicht möglich. In der Dokumentation Ihrer Shell finden Sie eine Liste der definierten Umgebungsvariablen.

Andere Umgebungsvariablen umfassen die CGI-Variablen, die dort platziert werden, unabhängig davon, ob PHP als Servermodul oder CGI-Prozessor ausgeführt wird.

Alles, was in $_ENV gespeichert ist, stammt aus der Umgebung, in der PHP ausgeführt wird.

$_ENV wird nur php.ini wenn es die php.ini zulässt.
In dieser Antwort finden Sie weitere Informationen dazu, warum $_ENV nicht belegt ist.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow