register_global=off kompatibel programmieren

bspainkf36

Erfahrenes Mitglied
hey leute :)

habe gestern einen artikel über register_global=off gelesen und das
es probleme geben kann ab php 4.2 ...

könnt ihr mir dazu ein paar infos geben und auch vielleicht ein wenig auf die
syntax eingegen (was ist oki und was net)

danke euch :)

gruß kon
 
Hm, soviel ich weiss musst du da nur auf eines achten, und zwar, dass per Formular, URL oder Cookie übertragene Variablen nicht mehr so: $variable, sondern so: $_POST["variable"], $_GET["variable"] oder $_COOKIE["variable"] (oder allgemein: $_REQUEST["variable"]) notiert werden.
 
PHP:
<?php
// Das script wird mit den GET-Parametern ID = 1 und name = Jens aufgerufen.
echo "ID: " . $id . "<br/>\n";
echo "Name: " . $name . "<br/>\n";
// Diese Anweisungen werden im Register-Globals=0-Fall die Variablen nicht ausgeben, da diese nicht existieren.
// So sollte man es machen:
echo "ID: " . $_GET["id"] . "<br/>\n";
echo "Name: " . $_GET["name"] . "<br/>\n";
// Get-Variablen werden neuerdings ( :rolleyes: ) im superglobalen $_GET-Array gespeichert, 
// ebenso Post-Variablen, welche man in $_POST wiederfindet,
// Session-Variablen in $_SESSION und Cookie-Werte in $_COOKIE.
// Man greift auf die Variablen mit dem Key zu, so:
// echo $_SESSION["vorname"];
// oder
// if ($_COOKIE["username"] == "Jens")
// oder, oder, oder...
?>

Register-Globals = On ist Pfui! :)
 
was meinst du mit "werder" post, get
meinst du $_REQUEST[] ?

aber wie mein vorredner schon sagte, globals on gilt als schlechter stilt und wird z.b. in artikeln des phparch's als "sicherheitslückenträchtig" gehantdelt....
 
Ich denke es war ein kleiner Rechtschreibfehler und er meinte,
"und das soll bei allen Methoden gemacht werden (post,get)"

Das $_REQUEST[] Array stellt keine weitere Methode dar sondern ist lediglich
ein Sammelarray, für faule Programmierer :p da dort drin sämtliche Elemente der
Post,Get,Cookie,Session (Session bin ich nicht ganz sicher) enhalten sind.

Früher waren auch noch die Werte des $_FILES Array enthalten, aber um mal
php-homepage.de zu zitieren
" Seit PHP 4.3.0 gibt es in $_REQUEST keine FILE-Informationen von $_FILES mehr."
 
ahso gut dann habe ich den fehler falsch interpretiert ;)

naja was heisst faul, wenn ich sowohl get und post zulassen will zur parameterübermittlung nehme ich gerne $_REQUEST ;)
 
Wie wäre es, wenn man sich einfach seinen eigenenen $_REQUEST[] Array bastelt und da einfach alle anderen Array zusammenfasst, die man braucht ?

Geht das so ohne weiteres per array_merge ?
 
hmm

dh im klartext

Wenn ich meine Session Varibalen bei Register-Globals=0 nur einmal registrier auf der Login seite dann kann ich in zukunft auch nur mehr mit

$_SESSION['vorname']

drauf zugreifen? oder doch noch mit $vorname

Ich dachte immer dass man mit dem befehl $_SESSION['vorname'] eine Variabel $vorname anlegt und dann immer draufzugreifen kann wenn man mit der richtigen SID rumhängt :-) oder

Check nicht ganz was da gemeint ist

$_POST['vorname'] verwend ich wenn es um ein Post event bei einer Form handelt oder
 
Post ist kein Event sondern die Art der Übergabe der Daten.
Dabei gibt es prinzipiell POST (Übergabe per Header) und GET (Übergabe per URL).
Via $_SESSION['varname'] kannst du prinzipiell alles anstellen, was du auch
mit einer normalen Variablen anstellst. Also Werte zuweisen, via = oder per
echo ausgeben oder mit isset() oder ähnlichem überprüfen und mit unset()
wieder löschen.
 
Zurück