Werteübergabe in URL

Alles, was PHP betrifft, kann hier besprochen werden.

Werteübergabe in URL

Postby Ottopl » 08. May 2006 13:07

Ich hab da mal ne ganz dumme Frage. Bisher habe ich werte zwischen PHP Seiten immer in der URL übergeben.

http://127.0.0.1/test.php?wert=test


Im neuen Script konnte ich dann die Werte ganz einfach weiterverwenden und habe eine Ausgaben bekommen.

echo "Ohne Get: ".$wert;


So läuft auch bei mir eine Anwendung bei meinem ISP (1und1). Jetzt habe ich mir gedacht das ich mal ne neue Xampp Version installiere. (hab schön länger nicht aktualisiert) Und schon funktioniert meine ganze Anwendung nicht mehr. Alle Werte die ich per URL übergebe kommen nicht mehr an. Oder besser gesagt sie werden nicht mehr erkannt. Wenn ich das Ganze wie folgt mache

echo "Mit Get: ".$_GET['wert'];


kann ich mit den Werten wieder arbeiten.
Mein Problem ist nun warum funktionierte früher alles ohne GET (so wie bei meinem ISP jetzt noch)? Kann man das irgendwo umschalten und vor allem muss ich meine Ganze Anwendung umschreiben? Ehrlich gesagt dazu hab ich keine große Lust ;)

Dank Euch schon einmal im voraus.

Otto
Ottopl
 
Posts: 6
Joined: 08. May 2006 12:52

Postby gfaust » 08. May 2006 13:20

Hallo,

ohne länger darauf rumreiten zu wollen:

Bei Dir sind die register_globals = off (so wie es eigentlich sein sollte) und bei Deinem Hoster sind register_globals = on.

Die Methode mit $_GET funktioniert aber auf jeden Fall!

Guido
gfaust
 
Posts: 41
Joined: 06. December 2005 18:31

Postby Ottopl » 08. May 2006 13:51

Ich habe jetzt einmal die register_globals in Xampp im Verzeichnis X:\Apachefriends\xampp\php\php.ini von OFF auf ON gestellt. Leider funktioniert es noch nicht.

Otto
Ottopl
 
Posts: 6
Joined: 08. May 2006 12:52

Postby gfaust » 08. May 2006 13:52

Hallo,

Du musst die php.ini in xampp/apache/bin/ ändern und den Apache danach neu starten.

Guido
gfaust
 
Posts: 41
Joined: 06. December 2005 18:31

Postby Wiedmann » 08. May 2006 14:36

Mein Problem ist nun warum funktionierte früher alles ohne GET (so wie bei meinem ISP jetzt noch)?

Weil sich das Standardverhalten von PHP in diesem Punkt vor 4 Jahren geändert geändert hat.

BTW konnte/sollte man auch schon vor dieser Änderung die entspr. superglobalen Arrays benutzen. Steht auch schon lange genug so im PHP-Manual...

und vor allem muss ich meine Ganze Anwendung umschreiben?

Hättest dich halt gleich mal ans Manual gehalten (oder ist die Anwendung älter wie 4 Jahre alt?) ;-)

BTW gibt es mit dem nächsten major Release von PHP keine register_globals mehr. Also...
Ehrlich gesagt dazu hab ich keine große Lust

... solltest du besser die Lust dazu haben. Immerhin tut dann die Anwendung auf jedem Server (du brauchst kein Glück, dass du einen veralteten ISP erwischt *g*) und auch in Zukunft läuft sie noch.

Ganz abgesehen vom Sicherheitsaspekt, wieso man die sowieso nicht benutzen sollte.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby gfaust » 08. May 2006 14:43

Hallo,

Ich kann Wiedmann nur beipflichten - register_globals = on sollte nur noch zum Refactoring verwendet werden, um zu sehen, wie verhält sich die alte und wie die neue Version!

Guido
gfaust
 
Posts: 41
Joined: 06. December 2005 18:31

Postby Ottopl » 08. May 2006 14:49

Ja ich gebe zu das ich es mit den Handbüchern nicht so hab. Wie gesagt habe ich schon ne ganze Weile keine neue Version von PHP installiert und bin damit nicht so ganz auf dem Laufenden. Dank der Hilfe von gfaust funktioniert es jetzt erst einmal wieder. Aber so wie es aussieht komm ich wohl um die Änderung nicht rum. Ich hoffe nur das mir keine Variable durchrutscht. :shock:

Otto

PS: Das mit dem ON kann ich aber bei 1und1 schlecht ändern.
Ottopl
 
Posts: 6
Joined: 08. May 2006 12:52

Noch einmal ich

Postby Ottopl » 09. May 2006 13:38

Ich habe da noch etwas lustiges gefunden. Ich habe jetzt den Parameter register_globals = Off gesetzt. Nun funktioniert aber meine session_id() nicht mehr. Eigentlich müsste doch folgender Aufruf

Code: Select all
session_start();
echo '01 '.session_id();
echo '<br>';
echo '02 '.$PHPSESSID;


2 Mal die Session ID zurück liefern. Das passiert aber nicht. Ich bekommen nur 1 Ausgabe. Wenn ich die register_globals = On setzte funktioniert es wieder. Kann mir da vielleicht einer noch einmal weiterhelfen?

Otto
Ottopl
 
Posts: 6
Joined: 08. May 2006 12:52

Postby Wiedmann » 09. May 2006 15:25

Nun funktioniert aber meine session_id() nicht mehr

Wie kommst du darauf?

2 Mal die Session ID zurück liefern. Das passiert aber nicht. Ich bekommen nur 1 Ausgabe.

Und von welcher Zeile bekommst du die Ausgabe?


BTW:
Mach am Anfang deiner Scripte beim Entwickeln mal diese Zeile rein:
Code: Select all
error_reporting(E_ALL);
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Ottopl » 09. May 2006 15:51

Wie ich darauf komme? Ganz einfach (zumindest denke ich das). Ich rufe das Script auf.

Code: Select all
session_start();
echo '01 '.session_id();
echo '<br>';
echo '02 '.$PHPSESSID;


Wenn ich die register_globals = off setzte bekomme ich nur eine Zeile mit der ID zurück. Und zwar die Erste (Zeile 01). Setzte ich register_globals = on bekomme ich 2 Zeilen mit ID zurück (Zeile 01 und 02).

So wie es aussieht wird bei register_globals = off die Variable $PHPSESSID nicht zurück gegeben.
Ottopl
 
Posts: 6
Joined: 08. May 2006 12:52

Postby Wiedmann » 09. May 2006 16:37

Wenn ich die register_globals = off setzte bekomme ich nur eine Zeile mit der ID zurück. Und zwar die Erste (Zeile 01).

Das mein ich ja. Wie kommst du dann auf die Behauptung:
Ottopl wrote:Nun funktioniert aber meine session_id() nicht mehr

Eben in Zeile 1 benutzt du ja session_id()...

So wie es aussieht wird bei register_globals = off die Variable $PHPSESSID nicht zurück gegeben.

Wie auch, selbst bei "register_globals = off" ist $PHPSESSID keine Variable die PHP selber setzt (beim ersten Aufruf des Scriptes). Erst beim 2. Aufruf des Scriptes kommt diese über das $_COOKIE- oder $_GET-Array herein.
Ergo das selbe Verhalten was wir oben schon hatten.

BTW: vergess das error_reporting nicht...
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Ottopl » 10. May 2006 13:49

Danke für die Hilfe.

Ich hab jetzt auch error_reporting(E_ALL); in mein Script mit eingebaut.

Die Variable $PHPSESSID hab ich halt benötigt um mir die aktuelle Session ID zurückgeben zu lassen. Aber das scheint ja auch mit session_id() zu funktionieren.

Mal sehen wie weit ich jetzt komme.
Ottopl
 
Posts: 6
Joined: 08. May 2006 12:52

Postby Wiedmann » 10. May 2006 16:38

Die Variable $PHPSESSID hab ich halt benötigt um mir die aktuelle Session ID zurückgeben zu lassen

Wie kann man denn auf die Idee kommen? ;-) Immerhin ist ja nicht mal sichergestellt, dass diese Variable sich immer "$PHPSESSID" nennt... (könnte auch anders heissen)

Aber das scheint ja auch mit session_id() zu funktionieren.

session_id() gibt dagegen immer eine gültige Session ID zurück. Mal abgesehen davon, dass man mit dieser Funktion auch korrekt prüfen kann, ob überhaupt eine Session gestartet ist.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany


Return to PHP

Who is online

Users browsing this forum: No registered users and 1 guest