406 Shares 7053 views

PHP globale Variable in der Funktion. Machen Sie eine globale Variable in PHP

Um eine vollständige Website zu erstellen, die breite Funktionalität, die Sie brauchen viel zu wissen. Aber was kann ihn wirklich einzigartig machen – es PHP ist. Die globale Variable in der Programmiersprache nicht sehr oft verwendet wird, aber manchmal zu wissen, wie es funktioniert, ist es manchmal notwendig. Das ist die Studie von dem, was es ist und wie es funktioniert, werden wir in diesem Artikel tun.

Anwendungsbereich

So rufen Sie den Kontext, in dem der Variable und bestimmt. In den meisten Fällen haben sie nur einen Rahmen. Wenn PHP globale Variablen aus anderen Dateien geladen, dann kann es sein, einschließlich (enthalten) und benötigt (benötigen).

Standardmäßig werden sie auf den lokalen Funktionsumfang beschränkt. Und wie Variable gesehen Dateien in ihren Grenzen zu machen, was mehr könnte und nutzen? Zu diesem Zweck und ist in den PHP globalen Variablen zur Verfügung gestellt.

Das Schlüsselwort „global“

Und hier ist, wie eine globale Variable zu deklarieren PHP? In diesem Ziel wird uns das Wort „global“ helfen. Es ist notwendig, vor den Variablen zu setzen, die Sie einen globalen (narimer, global «Die Variable") machen wollen.

Nach der Durchführung eines solchen Hinweises, werden die Daten in der Lage sein, mit einer beliebigen Datei zu arbeiten. Wenn irgendwo dort Verweise auf diese Variable sind, wird das Programm immer die Aufmerksamkeit auf die globale Version bezahlen.

Warum solch eine fremde Sprache? Die Tatsache, dass es in der gleichen Zeit kann lokale Versionen sein. Aber sie werden ausschließlich für die Dateien, in denen angekündigt zur Verfügung. Und für den ganzen Rest wird globale Variablen PHP-Klasse handeln. Daher müssen Sie vorsichtig sein. Und das gibt es keinen Zweifel, hier ist ein Beispiel dafür, wie sie aussehen: global ein.

Denn wenn eine Datei Zugriff auf eine Reihe von Variablen hat, wird es dazu führen, sie zu widersprechen. Aber wir können nicht mit Sicherheit sagen – lokale oder globale Variable gelesen wird oder ganz ausfällt. Also, wenn es in einer Funktion registrieren ist, sollte es kein Problem sein. Aber die Verwendung einer Variablen für seine Grenzen problematisch. Daher nirgends die Struktur der Ausarbeitung des Codes notwendig, um genau zu überwachen und sicherstellen, dass es auch eine Voraussetzung für den genannten Konflikt entstand.

Eine weitere Ausführungsform des Aufzeichnungs

Ist es möglich, in PHP eine globale Variable in einer anderen Art und Weise zu schaffen? Ja, nicht einmal ein. Lassen Sie uns zuerst die $ GLOBALS betrachten. Dies ist eine assoziative Array. Der Schlüssel, um es – ist der Name. Da der Wert des Inhalts wirkt als globalen Variable. Es soll beachtet werden, dass die Anordnung nach der Ankündigung in jedem Bereich vorhanden ist. Dies gibt Grund zu glauben, es superglobal. Es sieht so: $ GLOBALS [ 'Variable'].

Vordefinierte / Superglobals

In jeder Programmiersprache gibt es einige Namen, die für einige seiner Funktionen gechartert werden. Daher ist in PHP globalen Variablen mit dem gleichen Namen erstellen wird nicht funktionieren.

Diese Programmiersprache hat seine eigenen Besonderheiten. So ist es wichtig, dass die vordefinierte Variablen hier nicht „super“ installieren, das heißt, sie sind nicht an allen Standorten verfügbar. Wie kann ich es beheben? Um vordefinierte Variablen zu einem bestimmten lokalen Bereich verfügbar war, muss es wie folgt deklariert werden :. Globale «Variable“ Es scheint das gleiche zu sein, wie schon gesagt, nicht wahr? Es ist wahr, aber nicht ganz. Schauen wir uns schon „kämpfen“ ein Beispiel aussehen:

  • global $ HTTP_POST_VARS;
  • echo $ HTTP_POST_VARS [ 'name'].

Sie spüren den Unterschied zwischen ihnen? Beachten Sie, dass globale Variablen in PHP nicht unbedingt innerhalb der Funktion verwendet werden müssen. Es kann sogar in einer Datei abgelegt werden, die in ihm enthalten ist.

Links und Sicherheit

Wie Sie sehen können, erstellen in PHP eine globale Variable ist kein Problem. Aber ist es bestimmte relative Links? Ja, es kann zu unerwartetem Verhalten, wenn global verwenden. Aber vorher, ein wenig Hintergrundgeschichte.

In der Version 4.2.0 die Richtlinie standardmäßig register_globals geändert von On-Zustand aus. Für die meisten Anwender ist dies nicht sehr wichtig, aber vergeblich. Immerhin, er betrifft direkt die Sicherheit des entwickelten Produktes. Wenn Sie die Variablen global zu machen brauchen, PHP-Richtlinie zu diesem Parameter wird nicht direkt betroffen. Jedoch kann eine falsche Verwendung bereits Präzedenzfälle Sicherheit schaffen.

Also, wenn register_globals eingeschaltet ist, bevor die Ausführung des geschriebenen Code die verschiedenen Variablen initialisiert, die benötigt werden, beispielsweise HTML-Formulare zu senden. Daher wurde beschlossen, um es auszuschalten.

Warum ist der Zustand dieser Richtlinie in PHP globale Variable viel verdankt? Tatsache ist, dass, wenn der Zustand der Entwickler nicht immer mit Sicherheit konnten sich die Frage beantworten, woher es kam. Auf der einen Seite ist es einfacher, Code zu schreiben. Aber auf dem anderen – es ist ein Sicherheitsrisiko. Deshalb, um Fehler zu vermeiden, sowie Daten Mischen und Richtlinie deaktiviert wurde.

Lassen Sie sich jetzt nicht / secure Code aussehen, und wie Fälle zu erkennen, wo die Ankündigung der globalen PHP-Variablen durch Manipulationsversuche mit Daten begleitet wird. Dies ist notwendig, um nicht nur schön zu schaffen, sondern auch stetig Baustellen, die nicht die erste verfügbare Person knacken.

Schadcode

Lassen Sie uns festgelegt, dass Variable für diejenigen gilt, die berechtigt sind:

if (authenticate_user ()) {
$ Autorisieren = true;
}

if ($ autorisieren) {
umfassen "/highly/sensitive/data.php";
}

In diesem Zustand kann der Variable automatisch eingestellt werden. Bedenkt man, dass die Daten können einfach ersetzt werden, und die Quelle ihrer Herkunft nicht gesetzt ist, dann kann man einen solchen Test bestehen und so tun, als jemand anderes zu sein. Falls gewünscht, kann der Angreifer (oder einfach nur neugierig, aber unerfahrene Person) kann, unsere Logik beeinträchtigt werden.

Wenn wir den Wert der Richtlinie zu ändern, wird dieser Code korrekt funktionieren, wie wir. Aber Initialisierung von Variablen ist nicht nur ein guter Ton in der Programmierung, sondern gibt uns auch eine gewisse Garantie für die Stabilität des Skripts.

Zuverlässige Version des Codes

Sie können Richtlinien ausschalten oder arbeiten, oder einen komplexeren Code verschreiben dieses Ziel zu erreichen. Zum Beispiel wie folgt aus:

if (isset ($ _ SESSION [ 'username'])) {

echo "Hallo {$ _ SESSION [ 'username']} ";

} Else {

echo "Hallo Gast
";
"Welcome Benutzer!" Echo;

}

Machen Sie eine Substitution in diesem Fall wird es schwierig sein. Aber nach wie vor – möglich. Um dies zu tun, müssen Sie darauf achten, dass die schnelle Reaktion Tools zur Verfügung gestellt wurden. Wenn Sie globale Variablen in PHP enthalten sein sollen, können Sie die folgenden Tools verwenden: Wenn wir wissen, was der Bereich der erhaltene Wert ist, ist es möglich, ein Skript registrieren dies mit einem Spiel zu überprüfen. Natürlich ist es garantiert auch nicht vollständigen Schutz gegen Ersatzwerte. Aber das ist zu viele Optionen erheblich erschweren.

Findet Versuche, Maskerade

Mal sehen, wie Sie früher geschrieben verstehen. In PHP globale Variablen in der Funktion, die unten angegeben werden, müssen Sie sich erklären. Wir können sagen, dass dies eine Art von Hausaufgaben auf die Assimilation der Lektion Thema. Hier ist der Code:

<? Php
if (isset ($ _ COOKIE [ 'C_COOKIE'])) {
} Elseif (isset ($ _ GET [ 'C_COOKIE']) || isset ($ _ POST [ 'C_COOKIE'])) {

Mail ( "[email protected]", "Achtung, wurde das Skript aufgezeichnet Versuch Einbruch und Manipulation von Daten", $ _SERVER [ 'REMOTE_ADDR']);
echo „Eine gebrochene Sicherheit oder versuchen, war den Administrator so benachrichtigt zu tun.“;
Ausgang;

} Else {
}
?>

Nun Erklärung dazu. Teilweise kommt C_COOKIE uns aus einer zuverlässigen Quelle. Um voll und ganz zufrieden nach dem erwarteten Ergebnis, überprüfen wir seinen Wert und den Administrator bei Problemen benachrichtigen. Wenn es nicht kommt, dann und keine Aktion brauchte nicht zu machen. Sie haben das einfach deaktivieren Direktive register_globals zu verstehen, nicht Ihren Code machen sicher ist. Daher wird jede Variable, die ein Skript vom Benutzer empfängt, sollte für den erwarteten Wert überprüft werden.

Abschluss

Hier im Allgemeinen, und alles, was Sie über die globalen Variablen wissen, erfolgreich und sicher sie in ihrer Arbeit verwenden. sie kann natürlich sagen, dass es eine vollständige Garantie, dass niemand verwendet nicht – Angreifer ihre Methoden und Fähigkeiten ständig zu verbessern. Es ist daher wünschenswert, die maximale Nutzung von globalen Variablen im Code zu begrenzen. Glücklicherweise können die Struktur und Design-Merkmale dieser Programmiersprache dieses Ziel erreichen. Viel Glück!