PHP
Superglobale Variablen PHP
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ürdewww.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 einemHTTP_COOKIE
-Trennzeichen. -
SERVER_ADDR
- Die IP-Adresse des Servers, auf dem das aktuelle Skript ausgeführt wird.
Dies würde93.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.
$_COOKIE
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.