PHP: register_globals

Hallo zusammen

Ich habe folgendes Problem: Ich habe RedHat9.0 installiert; Apache2 PHP4.x.y. Der Server hat ohne irgendwelche Probleme funktioniert... bis heute... :(
folgende funktionienen werden nicht mehr interpretiert: get/post!
Habe folgendes ausprobiert und das hat nicht funktioniert:

Code:
<?
echo $daten;
?>
das habe ich als daten.php abgespeichert.
Danach wollte ich mit URL: http://myurl/daten.php?daten=test das Script ausführen... und es hat nicht funktioniert.
Ich habe jetzt herausgefunden (nach neuisntallation von php/apache2) dass im php.ini register_globals=on steht, jedoch mit folgendem Script: <? phpinfo(); ?> steht unter register_globals=off ... hm... strange!!!

Apache habe ich neu gestartet... ;)

Hat jemand eine Idee an was das liegen könnte???

--Keymaker
 
Schau mal ob es wirklich der Server ist, auf den du zugreifst.
Redhat installiert ja Einiges womit es vllt. nicht auszuschliessen ist, dass du 2 Server laufen hast.
Beende mal deinen Apache und probiere danach einen weiteren Zugriff.
 
Hi, mit dem Problem habe ich auch schon gekämpft. Ich hab als sichere Lösung folgende gefunden.

Code:
<?php
// Daten via GET oder POST kannst du so abfragen
echo '$_REQUEST -> '.$_REQUEST["daten"].'<br>';

// Im Array $_POST[] werden Daten gespeichert, welche mittels POST zum Server gesand wurden
echo '$_POST -> '.$_POST["daten"].'<br>';

// Im Array $_GET[] werden Daten gespeichert, welche via GET zum Server geschickt wurden
echo '$_GET -> '.$_GET["daten"];
?>
versuchs mal, und ruf dann die Page so auf: http://myurl/daten.php?daten=test

sollte eigentlich funktionieren ...

das deine phpinfo -> global: off anzeigt, könnte daran liegen, daß php im safe-mode läuft ... was ich jetzt aber nur vermute, da ich deine php.ini net kenne.
 
Objektorientiert hin oder her das ganze Spielchen ist auf eine Aenderung von PHP4.1 auf 4.2 zurueckzufuehren wo aus sicherheitstechnischen Gruenden der Zugriff auf diese und einige andere Variablen veraendert wurde.
Wie also schon erwaehnt findest du deinen Wert in $_POST['daten'] und $_REQUEST['daten'] wieder wobei letzeres aber mit Vorsicht zu geniesen ist.

In PHP 4.2.0 and later, the default value for the PHP directive register_globals is off. This is a major change in PHP. Having register_globals off affects the set of predefined variables available in the global scope. For example, to get DOCUMENT_ROOT you'll use $_SERVER['DOCUMENT_ROOT'] instead of $DOCUMENT_ROOT, or $_GET['id'] from the URL http://www.example.com/test.php?id=3 instead of $id, or $_ENV['HOME'] instead of $HOME.
Predefined variables

-thand
 
vielen Dank erstmal für die zahlreichen tipps! :)
das mit register_globals=on habe ich bereits versucht - es hat nicht funktioniert. Die anderen Sachen werde ich ausprobieren!
Danke erstmal!!! :D
 
!NEIN! lass register_globals aus, register globals ist gefährlich. Damit können leute bei dir code einschleusen, deine webseite faken etc.
Für übertragungsmethoden über mehrere seiten gibt es ja wie bekannt POST und GET, bei POST kannst du soviele Variablen übertragen wie du willst, weil sie nicht in der form ?variable1=blubb&variable2=bla übertragen werden sondern intern. Get ist abhängig von der URL und kann so nur eine bestimmte länge an variablen benutzen.
Abrufen kannst du die Variable auf der neuen seite mit
neuevariable = $HTTP_POST_VARS["namedervariable"];
neuevariable = $HTTP_GET_VARS["namedervariable"];
Bei den neuen Serversoftwares und den Apache Updates sollte mittlerweile auch die kurzform $_GET["variablenname"] gehen.
Aber - niemand register_globals aktivieren, register globals is evil. google mal danach.
 
vielen Dank für die Hinweise betreffend register_globals! Werde ich mir ansehen!
Das script hat übrigens nach einer neuinstallation von php ohne probleme funktioniert!!
Besten Dank an alle!

--Keymaker
 
Zurück
Oben