Szukaj…


Wprowadzenie

Superglobale to wbudowane zmienne, które są zawsze dostępne we wszystkich zakresach.

Kilka predefiniowanych zmiennych w PHP to „superglobale”, co oznacza, że są one dostępne we wszystkich zakresach skryptu. Nie ma potrzeby wykonywania global $variable; aby uzyskać do nich dostęp w ramach funkcji lub metod.

PHP5 SuperGlobals

Poniżej znajdują się superglobale PHP5

  • $ GLOBALNE
  • _ _ WNIOSEK
  • $ _GET
  • $ _POST
  • $ _FILES
  • $ _SERVER
  • $ _ENV
  • $ _COOKIE
  • $ _SESSION

$ GLOBALS : Ta zmienna SuperGlobal służy do uzyskiwania dostępu do zmiennych globalnych.

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

$ _REQUEST : Ta zmienna SuperGlobal służy do zbierania danych przesłanych przez formularz HTML.

<?php
if(isset($_REQUEST['user'])){
    echo $_REQUEST['user'];
}
//This will print value of HTML Field with name=user submitted using POST and/or GET MEthod
?>

$ _GET : Ta zmienna SuperGlobal służy do zbierania danych przesłanych przez formularz HTML metodą get .

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

$ _POST : Ta zmienna SuperGlobal służy do zbierania danych przesłanych przez formularz HTML metodą post .

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

$ _FILES : Ta zmienna SuperGlobal przechowuje informacje o przesłanych plikach metodą HTTP Post.

<?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 : Ta zmienna SuperGlobal przechowuje informacje o skryptach, nagłówkach HTTP i ścieżkach serwera.

<?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 : Ta szczegółowa zmienna środowiska SuperGlobal, w której działa PHP.

$ _COOKIE : Ta zmienna SuperGlobal służy do pobierania wartości Cookie z danego klucza.

<?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 : Ta zmienna superglobalna służy do ustawiania i pobierania wartości sesji przechowywanej na serwerze.

<?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
*/
?>

Wyjaśniono suberglobale

Wprowadzenie

Mówiąc prościej, są to zmienne, które są dostępne we wszystkich zakresach w twoich skryptach.

Oznacza to, że nie ma potrzeby przekazywania ich jako parametrów w funkcjach lub przechowywania ich poza blokiem kodu, aby były dostępne w różnych zakresach.

Co to jest superglobal?

Jeśli myślisz, że są jak superbohaterowie - nie są.

Od wersji PHP 7.1.3 istnieje 9 zmiennych superglobalnych. Są to:

  • $GLOBALS - $GLOBALS wszystkich zmiennych dostępnych w zasięgu globalnym
  • $_SERVER - Informacje o serwerze i środowisku wykonawczym
  • $_GET - Zmienne HTTP GET
  • $_POST - zmienne HTTP POST
  • $_FILES - $_FILES przesyłania plików HTTP
  • $_COOKIE - Pliki cookie HTTP
  • $_SESSION - Zmienne sesji
  • $_REQUEST - Zmienne żądania HTTP
  • $_ENV - Zmienne środowiskowe

Zobacz dokumentację .

Powiedz mi więcej, powiedz mi więcej

Przykro mi z powodu referencji Grease! Połączyć

Czas na wyjaśnienie tych super bohaterów globalnych.

$GLOBALS

Tablica asocjacyjna zawierająca odwołania do wszystkich zmiennych, które są obecnie zdefiniowane w globalnym zakresie skryptu. Nazwy zmiennych są kluczami tablicy.

Kod

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

Wynik

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

W powyższym przykładzie $myLocal nie jest wyświetlany po raz drugi, ponieważ jest zadeklarowany w funkcji test() a następnie zniszczony po zamknięciu funkcji.

Staje się globalny

Aby temu zaradzić, istnieją dwie opcje.

Opcja pierwsza: global słowo kluczowe

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

global słowo kluczowe jest przedrostkiem zmiennej, która zmusza ją do włączenia się w zakres globalny.

Zauważ, że nie możesz przypisać wartości do zmiennej w tym samym zestawieniu, co globalne słowo kluczowe. Dlatego musiałem przypisać wartość poniżej. (Jest to możliwe, jeśli usuniesz nowe linie i spacje, ale nie sądzę, żeby było global $myLocal; $myLocal = "local" . global $myLocal; $myLocal = "local" ).

Opcja druga: tablica $GLOBALS

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

W tym przykładzie przypisałem $myLocal wartość $GLOBAL["myLocal"] ponieważ łatwiej jest mi pisać nazwę zmiennej niż tablicę asocjacyjną.

$_SERVER

$ _SERVER to tablica zawierająca informacje takie jak nagłówki, ścieżki i lokalizacje skryptów. Wpisy w tej tablicy są tworzone przez serwer WWW. Nie ma gwarancji, że każdy serwer sieciowy zapewni którykolwiek z nich; serwery mogą pomijać niektóre lub udostępniać inne nie wymienione tutaj. To powiedziawszy, duża liczba tych zmiennych jest uwzględniona w specyfikacji CGI / 1.1 , więc powinieneś być w stanie się ich spodziewać.

Przykładowe dane wyjściowe mogą wyglądać następująco (uruchom na moim komputerze z systemem Windows za pomocą 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

Jest tam wiele do zrobienia, więc poniżej wybiorę kilka ważnych. Jeśli chcesz przeczytać o nich wszystkich, zajrzyj do sekcji indeksów w dokumentacji.

Mogę dodać je wszystkie poniżej jednego dnia. Czy ktoś może edytować i dodać dobre wyjaśnienie poniżej? Podpowiedź, podpowiedź ;)

W przypadku wszystkich poniższych wyjaśnień załóż, że adres URL to http://www.example.com/index.php

  • HTTP_HOST - adres hosta.
    www.example.com to www.example.com
  • HTTP_USER_AGENT - Zawartość HTTP_USER_AGENT użytkownika. Jest to ciąg znaków, który zawiera wszystkie informacje o przeglądarce klienta, w tym o systemie operacyjnym.
  • HTTP_COOKIE - Wszystkie pliki cookie w połączonym łańcuchu, z ogranicznikiem średnika.
  • SERVER_ADDR - adres IP serwera, na którym działa bieżący skrypt.
    93.184.216.34 to 93.184.216.34
  • PHP_SELF - Nazwa pliku aktualnie wykonywanego skryptu, względem katalogu głównego dokumentu.
    To zwróci /index.php
  • REQUEST_TIME_FLOAT - REQUEST_TIME_FLOAT początku żądania z dokładnością do mikrosekundy. Dostępne od PHP 5.4.0.
  • REQUEST_TIME - znacznik czasu rozpoczęcia żądania. Dostępne od PHP 5.1.0.

$_GET

Tablica asocjacyjna zmiennych przekazywanych do bieżącego skryptu za pomocą parametrów adresu URL.

$_GET to tablica zawierająca wszystkie parametry adresu URL; to jest to, co jest po? w adresie URL.

Jako przykład podaje http://www.example.com/index.php?myVar=myVal . Informacje z tego adresu URL można uzyskać, uzyskując dostęp w tym formacie $_GET["myVar"] a wynikiem będzie myVal .

Używanie kodu dla tych, którzy nie lubią czytać.

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

W powyższym przykładzie użyto operatora trójskładnikowego .

To pokazuje, jak można uzyskać dostęp do wartości z adresu URL za pomocą superglobalu $_GET .

Teraz kolejny przykład! łapanie tchu

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

Możliwe jest wysyłanie wielu zmiennych przez adres URL, oddzielając je znakiem ampersand ( & ).

Zagrożenie dla bezpieczeństwa
Bardzo ważne jest, aby nie wysyłać żadnych poufnych informacji przez adres URL, ponieważ pozostaną one w historii komputera i będą widoczne dla każdego, kto może uzyskać dostęp do tej przeglądarki.

$_POST

Tablica asocjacyjna zmiennych przekazywanych do bieżącego skryptu za pomocą metody HTTP POST, gdy w zgłoszeniu użyto application / x-www-form-urlencoded lub multipart / form-data jako typ zawartości HTTP.

Bardzo podobny do $_GET ponieważ dane są przesyłane z jednego miejsca do drugiego.

Zacznę od podania przykładu. (Pominąłem atrybut akcji, ponieważ spowoduje to wysłanie informacji do strony, na której znajduje się formularz).

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

Powyżej znajduje się podstawowa forma, do której można przesyłać dane. W prawdziwym środowisku atrybut value nie zostałby ustawiony, co oznacza, że formularz byłby pusty. Spowoduje to wysłanie wszelkich informacji wprowadzonych przez użytkownika.

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

Zagrożenie dla bezpieczeństwa
Przesyłanie danych przez POST również nie jest bezpieczne. Korzystanie z HTTPS zapewni większe bezpieczeństwo danych.

$_FILES

Tablica asocjacyjna elementów przesłanych do bieżącego skryptu za pomocą metody HTTP POST. Struktura tej tablicy jest opisana w sekcji przesyłania metodą POST .

Zacznijmy od podstawowej formy.

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

Zauważ, że pominąłem atrybut action (ponownie!). Dodałem także enctype="multipart/form-data" , jest to ważne dla każdej formy, która będzie zajmować się przesyłaniem plików.

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

Służy do przesłania jednego pliku. Czasami możesz przesłać więcej niż jeden plik. Istnieje atrybut, który nazywa się multiple .
Istnieje atrybut niemal wszystkiego . Przykro mi

Poniżej znajduje się przykład formularza przesyłającego wiele plików.

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

Zwróć uwagę na wprowadzone tutaj zmiany; jest tylko kilka.

  • Nazwa input ma nawiasy kwadratowe. Wynika to z tego, że jest to teraz tablica plików, dlatego mówimy formularzowi, aby utworzył tablicę wybranych plików. Pominięcie nawiasów kwadratowych spowoduje, że ostatni plik zostanie ustawiony na $_FILES["myVar"] .
  • Atrybut multiple="multiple" . To po prostu informuje przeglądarkę, że użytkownicy mogą wybrać więcej niż jeden plik.
$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;
    }
}

Jest to bardzo prosty przykład i nie obsługuje problemów, takich jak niedozwolone rozszerzenia plików lub pliki o nazwie z kodem PHP (jak odpowiednik wstrzyknięcia SQL w PHP). Zobacz dokumentację .

Pierwszym procesem jest sprawdzenie, czy są jakieś pliki, a jeśli tak, ustaw ich całkowitą liczbę na $total .

Użycie pętli for pozwala na iterację tablicy $_FILES i dostęp do każdego elementu pojedynczo. Jeśli ten plik nie napotka problemu, wówczas instrukcja if jest prawdziwa i uruchamiany jest kod z pojedynczego pliku do przesłania.
W przypadku napotkania problemu blok przełączania jest wykonywany i wyświetlany jest błąd zgodnie z błędem dla tego konkretnego przesyłania.

Tablica asocjacyjna zmiennych przekazywanych do bieżącego skryptu za pośrednictwem plików cookie HTTP.

Pliki cookie to zmienne, które zawierają dane i są przechowywane na komputerze klienta.

W przeciwieństwie do wyżej wspomnianych superglobali, pliki cookie muszą być tworzone za pomocą funkcji (bez przypisywania wartości). Konwencja jest poniżej.

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

W tym przykładzie podano nazwę pliku cookie (w tym przykładzie jest to „myVar”), podano wartość (w tym przykładzie jest to „myVal”, ale można przekazać zmienną w celu przypisania jej wartości do pliku cookie), a następnie podany jest czas ważności (w tym przykładzie jest to jedna godzina, ponieważ 3600 sekund to minuta).

Mimo że konwencja tworzenia plików cookie różni się, dostęp do nich jest uzyskiwany w taki sam sposób, jak inne.

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

Aby zniszczyć plik cookie, należy ponownie wywołać setcookie , ale czas wygaśnięcia jest ustawiony na dowolny czas w przeszłości. Patrz poniżej.

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

Spowoduje to rozbrojenie plików cookie i usunięcie ich z komputera klienta.

$_SESSION

Tablica asocjacyjna zawierająca zmienne sesji dostępne dla bieżącego skryptu. Zobacz dokumentację funkcji sesji, aby uzyskać więcej informacji o tym, jak to jest używane.

Sesje są bardzo podobne do plików cookie, z tym że są po stronie serwera.

Aby korzystać z sesji, musisz dołączyć session_start() na górze skryptu, aby umożliwić korzystanie z sesji.

Ustawienie zmiennej sesji jest takie samo jak ustawienie dowolnej innej zmiennej. Zobacz przykład poniżej.

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

Podczas rozpoczynania sesji losowy identyfikator jest ustawiany jako plik cookie i nosi nazwę „PHPSESSID” i będzie zawierał identyfikator sesji dla bieżącej sesji. Można to uzyskać, wywołując funkcję session_id() .

Możliwe jest zniszczenie zmiennych sesji za pomocą funkcji unset (takie, że unset($_SESSION["myVar"]) zniszczy tę zmienną).
Alternatywą jest wywołanie session_destory() . Spowoduje to zniszczenie całej sesji, co oznacza, że wszystkie zmienne sesji nie będą już istnieć.

$_REQUEST

Tablica asocjacyjna, która domyślnie zawiera zawartość $_GET , $_POST i $_COOKIE .

Jak stwierdza dokumentacja PHP, jest to tylko zestawienie $_GET , $_POST i $_COOKIE wszystko w jednej zmiennej.

Ponieważ wszystkie trzy tablice mogą mieć indeks o tej samej nazwie, w pliku php.ini znajduje się ustawienie o nazwie request_order które może określać, która z tych trzech ma pierwszeństwo.
Na przykład, jeśli został ustawiony na "GPC" , wówczas zostanie użyta wartość $_COOKIE , ponieważ jest ona odczytywana od lewej do prawej, co oznacza, że $_REQUEST ustawi swoją wartość na $_GET , następnie $_POST , a następnie $_COOKIE a ponieważ $_COOKIE jest ostatnim, jest to wartość z $_REQUEST .
Zobacz to pytanie .

$_ENV

Tablica asocjacyjna zmiennych przekazywanych do bieżącego skryptu za pomocą metody środowiska.

Te zmienne są importowane do globalnej przestrzeni nazw PHP ze środowiska, w którym działa parser PHP. Wiele z nich zapewnia powłoka, pod którą działa PHP, a różne systemy prawdopodobnie działają z różnymi rodzajami powłok, ostateczna lista jest niemożliwa. Zobacz dokumentację swojej powłoki, aby uzyskać listę zdefiniowanych zmiennych środowiskowych.

Inne zmienne środowiskowe obejmują zmienne CGI, umieszczone tam niezależnie od tego, czy PHP działa jako moduł serwera czy procesor CGI.

Wszystko przechowywane w $_ENV pochodzi ze środowiska, w którym działa PHP.

$_ENV jest wypełniane tylko wtedy, gdy php.ini na to pozwala.
Zobacz tę odpowiedź, aby uzyskać więcej informacji o tym, dlaczego $_ENV nie jest wypełniony.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow