


Ein tiefes Eintauchen in PHP Superglobals: Beyond `$ _get` und` $ _post`
PHP Superglobals umfassen $ _get, $ _post, $ _Request, $ _Session, $ _cookie, $ _server, $ _files, $ _env und $ global, die jeweils unterschiedliche Zwecke dienen, die über die nur den nur Handlingsformulardaten hinausgehen. Sie ermöglichen die staatliche Verwaltung, Serverinteraktion und den Zugriff auf Umgebungen. 1. $ _Request kombiniert $ _get, $ _post und $ _cookie, stellt jedoch Sicherheitsrisiken aufgrund der Eingabequelle ein, sodass es vermieden werden sollte, sofern dies nicht erforderlich ist. 2. $ _Session verwaltet den Benutzerzustand über Anfragen hinweg nach dem Aufrufen von Session_start (), wobei Best Practices für Sicherheitsvorschriften einschließlich der Vermeidung sensibler Datenspeicherung und Verwendung von Session_regenerate_id () nach dem Login zur Verhinderung von Fixierungsangriffen verwendet werden. 3.. 4.. $ _Server bietet Anforderungs- und Umgebungsmetadaten wie Request_Method, Remote_Addr und http_user_agent, aber Werte wie http_referer und http_user_agent sollten nicht vertrauenswürdig sein, da sie ausgefallen sind. 5. $ _files verarbeitet das Upload von Dateien, indem er auf temporäre Dateidaten zugreift und Fehlerprüfungen, MIME -Validierung und sichere Speicher außerhalb des Webroots erfordern, um Ausführungsrisiken zu verhindern. 6. $ _env greifen auf Umgebungsvariablen zu, wenn es in php.ini aktiviert ist, obwohl moderne Anwendungen in der Regel .Env -Dateien mit dedizierten Ladern verwenden. 7. $ globals enthüllt alle globalen Variablen und ist hauptsächlich nützlich, um den globalen Zustand innerhalb von Funktionen zu debugieren oder zu ändern. Zu den Best Practices der Sicherheit gehören die Validierung und Desinfektion aller Eingaben von Superglobals, unter Verwendung von vorbereiteten Anweisungen für SQL -Abfragen, die Ausgabe von HTMLSpecialChars (), um XSSS zu verhindern, und die Superglobaldaten niemals als vertrauenswürdige, Engagement robuse und sichere PHP -Anwendungen zu behandeln.
Wenn die meisten Entwickler an PHP -Superglobale denken, springen ihre Gedanken direkt auf $_GET
und $_POST
- und aus gutem Grund. Dies sind die Arbeitspferde der Form des Formularhandlings und der URL -Parameterverarbeitung in Webanwendungen. Aber die Superglobals von PHP gehen weit über nur Daten an. Wenn Sie das vollständige Satz von Superglobals verstehen, können Sie einen tieferen Einblick in die Verwaltung von Status, die Verarbeitung von Sitzungen und die Interaktion mit der Serverumgebung erhalten. Schauen wir uns alle Superglobale genauer an und wie sie effektiv und sicher verwendet werden können.

Was sind Superglobals?
Superglobale sind integrierte PHP-Variablen, die unabhängig vom Umfang immer zugänglich sind. Sie können sie in Funktionen, Klassen oder überall in Ihrem Skript verwenden, ohne sie globalisiert zu müssen. Sie beginnen mit einem $
und einem Unterstrich wie $_GET
und werden von PHP vordefiniert.
Die vollständige Liste der Superglobals enthält:

-
$_GET
-
$_POST
-
$_REQUEST
-
$_SESSION
-
$_COOKIE
-
$_SERVER
-
$_FILES
-
$_ENV
-
$GLOBALS
Wir werden über die Grundlagen hinausgehen und die weniger verwendeten und ihre praktischen Anwendungen erkunden.
$_REQUEST
: Bequemlichkeit mit einer Sicherheitsvorbehalt
$_REQUEST
ist ein fusioniertes Array, das den Inhalt von $_GET
, $_POST
und $_COOKIE
enthält (in dieser Reihenfolge standardmäßig). Dies bedeutet, wenn ein Schlüssel in mehr als einer Quelle vorhanden ist, überschreibt der spätere den früheren.

// Wenn? Name = alice in der URL ist und ein Formular postname = bob echo $ _Request ['Name']; // Ausgibt 'Bob'
Warum es riskant ist: Da $_REQUEST
aus mehreren Eingangsquellen stammt, kann es Ihre Anwendung weniger vorhersehbar und anfälliger für Injektionsangriffe machen, wenn sie nicht sorgfältig gefiltert werden.
? Best Practice: Vermeiden Sie $_REQUEST
es sei denn, Sie benötigen speziell ein input-agnostisches Handling. Bevorzugen Sie $_GET
oder $_POST
um explizit darüber zu sein, woher Daten stammen.
$_SESSION
: Verwalten des Staates über Anfragen hinweg hinweg
HTTP ist staatenlos, aber $_SESSION
hilft dabei, den Benutzerzustand über Seiten hinweg aufrechtzuerhalten. Es speichert Daten auf dem Server und assoziiert sie mit einem Benutzer über eine Sitzungs -ID (normalerweise in einem Cookie gespeichert).
Session_Start (); $ _Session ['user_id'] = 123; $ _Session ['loggd_in'] = true;
Schlüsselpunkte:
- Call Session_Start () immer auf
$_SESSION
auf callsession_start()
aufzurufen. - Sitzungsdaten bleiben bestehen, bis die Sitzung zerstört oder abläuft.
- Speichern Sie niemals sensible Daten wie Passwörter in Sitzungen - nur Kennungen.
? Sicherheitstipp: Session -IDs nach Anmeldung mit session_regenerate_id()
regenerieren, um die Sitzungsfixierungsangriffe zu verhindern.
$_COOKIE
: Client-Seite-Speicher lesen
Cookies sind kleine Daten, die am Client gespeichert sind. $_COOKIE
lässt sie in PHP lesen.
if (isset ($ _ cookie ['thema'])) { Echo 'bevorzugtes Thema:'. $ _Cookie ['thema']; }
Verwenden Sie setcookie()
(nicht $_COOKIE
-das ist schreibgeschützt), um ein Cookie festzulegen, um setCookie () zu verwenden:
setcookie ('thema', 'dark', time () (86400 * 30)); // 30 Tage
? Sicherheitshinweise: Verwenden Sie die Flaggen httponly
und secure
wenn Sie Cookies einstellen, um XSS- und MITM -Risiken zu reduzieren:
setcookie ('session_id', $ token, [ 'abläuft' => time () 3600, 'Pfad' => '/', 'Secure' => true, 'httponly' => true, 'samesit' => 'streng' ' ]);
$_SERVER
: Metadaten über die Anfrage und Umgebung
Dieses Superglobal enthält Informationen zu Header, Pfaden und Servereinstellungen. Es ist schreibgeschützt und vom Webserver besiedelt.
Häufige nützliche Schlüssel:
-
$_SERVER['REQUEST_METHOD']
- Get, Post usw. -
$_SERVER['HTTPS']
- Überprüfen Sie, ob die Verbindung sicher ist -
$_SERVER['REMOTE_ADDR']
- Client IP -Adresse -
$_SERVER['HTTP_USER_AGENT']
- Browserinformationen -
$_SERVER['SCRIPT_NAME']
- Aktueller Skriptpfad -
$_SERVER['HTTP_REFERER']
- vorherige Seite (Beachten Sie die Fehlscheibe)
if ($ _server ['request_method'] === 'post') { // Prozessform }
⚠️ Vorsicht: Vertrauen Sie niemals $_SERVER
-Werte blind. HTTP_USER_AGENT
und HTTP_REFERER
können gefälscht werden. Verwenden Sie sie zur Protokollierung oder Analyse, nicht zur Authentifizierung.
$_FILES
: Datei -Uploads behandeln
Wenn ein Formular enctype="multipart/form-data"
verwendet, sind hochgeladene Dateien in $_FILES
verfügbar.
Ein typisches Datei -Upload -Array sieht aus wie:
$ _Files ['avatar'] = [ 'name' => 'foto.jpg', 'Typ' => 'Bild/JPEG', 'TMP_NAME' => '/TMP/PHP/PHP58UT12', 'Größe' => 98123, 'Fehler' => 0 ];
Um die hochgeladene Datei zu verschieben:
if ($ _files ['avatar'] ['Fehler'] === Upload_err_ok) { $ tmp_name = $ _files ['avatar'] ['tmp_name']; $ upload_dir = 'Uploads/'; move_uploaded_file ($ tmp_name, $ upload_dir. BasisName ($ _ files ['avatar'] ['name'])); }
✅ Best Practices:
- Überprüfen Sie immer
$_FILES['field']['error']
zuerst. - Validieren Sie den Dateityp mit
mime_content_type()
oder fileInfo, nicht nur der Erweiterung. - Speichern Sie Uploads außerhalb des Web -Roots oder beschränken Sie den direkten Zugriff.
$_ENV
und $GLOBALS
: Umwelt und globaler Umfang
$_ENV
Enthält Umgebungsvariablen, die an PHP übergeben wurden. Oft leer, es sei denn, variables_order
in php.ini
enthält 'e'.
echo $ _env ['db_host'] ?? 'localhost';
Die meisten modernen Apps verwenden .env
-Dateien mit Bibliotheken wie vlucas/phpdotenv
anstatt sich auf $_ENV
zu verlassen.
$GLOBALS
Eine assoziative Reihe aller globalen Variablen im Skript.
$ a = 10; echo $ global ['a']; // 10
Es ist selten benötigt, aber nützlich, um den globalen Staat aus Funktionen zu debuggen oder zu manipulieren.
Sicherheitserinnerungen bei der Verwendung von Superglobals
- Niemals Eingabe vertrauen: Überprüfen und sanieren Sie Daten immer von
$_GET
,$_POST
,$_COOKIE
und$_SERVER
. - Verwenden Sie vorbereitete Aussagen: Wenn Sie Superglobal -Daten in SQL -Abfragen einfügen.
- Fluchtausgabe: Verwenden Sie
htmlspecialchars()
um XSS zu verhindern. - Filterdatei -Uploads: Überprüfen Sie die Größe, tippen Sie und führen Sie niemals hochgeladene Dateien aus.
Letzte Gedanken
Während $_GET
und $_POST
unerlässlich sind, entsperren die gesamte Palette von PHP -Superglobals die Kontrolle über das Verhalten, die Sicherheit und die Benutzererfahrung Ihrer Anwendung. Von der Verwaltung von Sitzungen mit $_SESSION
bis hin zum Parsen von Uploads über $_FILES
dient jedem Superglobal einen bestimmten Zweck.
Zu verstehen, wann und wie man sie benutzt - und genauso wichtig, wie man sie nicht missbraucht - ist ein Kennzeichen eines ausgereiften PHP -Entwicklers.
Behandeln Sie im Grunde alle superglobalen Daten als nicht vertrauenswürdig, und Sie werden auf dem richtigen Weg sind.
Das obige ist der detaillierte Inhalt vonEin tiefes Eintauchen in PHP Superglobals: Beyond `$ _get` und` $ _post`. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Passbyvaluemeansacopyofthedataispassed, SochangesinsidetheFunctionDonotaffektheoriginalvariable, AsseenincwithPrimitivesorpythonWithimmutabletypen.2.PassbyReferencemeansTheFunctionReveverceferencetothoTothoTothoTothoTothoTothoTothoTothoTothooriginal, SomodificationSinicationsinactiona

TypedPropertiesinphp7.4 erlaubteDirectTyPeclreferforClasProperties, Verbesserung der Aussage, Idesupport und Kodeklarität; 2.TheyEnforcetypeSafety, Reduzierung, Reduzierung, enableBetterautocompletion und MinimizeconChocks;

PhpSuperGlobalSinclude $ _get, $ _ Post, $ _ Anfrage, $ _ Session, $ _ Cookie, $ _ Server, $ _ Dateien, $ _ ENV und $ GLOBALS, EveryServingDistinctPurpose sbeyondjusthandlingFormData; Theenablestatemanagement, Serverinterction, AndenvironmentAccess.1. $ _ RequestCombines $ _get, $ _ Post,

Variable Variablen verwenden den Wert einer Variablen als Name einer anderen Variablen über die $$ VAR -Syntax. 2. Wenn $ myvar beispielsweise "Hallo" ist, entspricht $$ myvar $ hello und kann ein Wert zugewiesen werden. 3. In praktischen Anwendungen kann es verwendet werden, um Datendaten dynamisch zu verarbeiten, z. 4.. Es gibt Probleme wie schlechte Lesbarkeit, hohe Sicherheitsrisiken und statische Analysen, insbesondere die Vermeidung der Verwendung von $$ für Benutzereingaben. 5. Es wird empfohlen, Arrays oder Objekte zu verwenden, anstatt dynamische Variablen zu erstellen, z. B. das Speichern von Daten in $ Data -Array, anstatt dynamische Variablen zu erstellen. 6. Verwenden $ {$ var} Curly Brace -Syntax kann die Code -Klarheit verbessern, insbesondere in komplexen Szenarien. Variable Änderung

Avoidusingtheglobalkeywordunnecessarilyasitleadstocodethatishardertotest,debug,andmaintain;instead,usefunctionparametersandreturnvaluestopassdataexplicitly.2.Replaceglobalvariableswithpurefunctionsthatdependonlyontheirinputsandproduceoutputswithoutsi

Constantscannotbechangedafterdefinition, während variablescan; 1. variablessTartWith $, aremable, Scoped, andidealfordynamicdata; 2.Constantsusedefine () orconst, Haveno $, ahmbar, weltweit und buchfixierte ValuseklikuikuikuikuikeConifferation;

Aphpvariable'SlifecyclebinswithmemoryAllocationviazvalcreation, die storestorhehevalue, Typ, ReferenceCount, Andreferenzflag.2

ISSET () checksifAvariableisDeclaredandnotnull, returningReforeMptyStrings, 0, '0', False, und TempyArrays; UseIntoconstrirMAVariableExistsandhasbeenset, SuchaverifictingformInputShy $ _post ['E-Mail']
