$GLOBALS unter dem neuen php?
-
in der aktuellen php-version sind die register globals per default auf off gestellt.
das ist nun kein problem, variablen müssen entweder mit den alten HTTP__VARS "abgeholt" werden oder über die neuen $_GET und $POST superglobalen.
(achtung: auch HTTP__VARS soll wohl perspektivisch verschwinden)nun mein problem:
auch andere $GLOBALS erscheinen nicht mehr. keine $REMOTE_ADDR, keine pfade..
damit laufen bei mir viele skripte nicht die mit genau diesen globalen arbeiten, um pfade dynamisch zu erkunden.
muss ich jetzt tatsächlich immer statische pfade eingeben? oder gibt es da eine art "trick"?
zum beispiel beim upload sind meine skripte damit gearbeitet...thanks for information
-
Ich würde sagen, dass du entweder die Programme ändern (also HTTP_SERVER_VARS benutzen) oder eben wieder register_globals auf true setzt.
-
du hast mich mal wieder nicht verstanden..
es geht hier NICHT um die normalen variablen.. die werde ich ab jetzt über die $_GET und $_POST bearbeiten (bzw. $HTTP_*_VARS)
lies genauer.. die ganzen $GLOBALS sind aus.
keine automatische generierung mehr zu deinem skript.. noch nicht mal $PHP_SELF ist möglich.. geschweige denn die schönen uploads...
dieses hier sind die einzigen, die dann gehen (logisch)
HTTP_POST_VARS--->Array _POST--->Array HTTP_GET_VARS--->Array _GET--->Array HTTP_COOKIE_VARS--->Array _COOKIE--->Array HTTP_SERVER_VARS--->Array _SERVER--->Array HTTP_ENV_VARS--->Array _ENV--->Array HTTP_POST_FILES--->Array _FILES--->Array _REQUEST--->Array GLOBALS--->Array key--->GLOBALS value--->GLOBALS
aber solche NICHT mehr: (beispielauszüge)
HTTP_REFERER--->http://127.0.0.1/2002/ HTTP_USER_AGENT--->Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; QXW0335n) PHP_SELF--->/2002/globals.php SERVER_NAME--->127.0.0.1 DOCUMENT_ROOT--->d:/apache/htdocs
dummerweise habe ich zumindest den useragent auf arbeit schon oft gebraucht ebenso die document_root.
mist.. und mir gehören die server nun nicht, auf denen ich arbeite.. ich hoffe mal, daß die admins in den städten so klug sind, nicht einfach die globals auf off zu setzen..
-
das werden sie nicht tun, denn dadurch würden momentan wohl 80-90% aller Scripte nimmer laufen.
-
haben sie schon..
stell das register globals auf off
und dann versuch mal die globals auszulesen...
foreach ($GLOBALS as $key=>$value) echo $key." ".$value;
ich brauche dringend eine funktion, die mir die ip aus dem header rauszieht.. ich arbeite oft mit $REMOTE_ADDR, vor allem für sicherheitsabfragen.. ebenso mit dem $HTTP_USER_AGENT.
und natürlich auch mit $PHP_SELF, was ja nun nicht das problem ist, die pfade krieg ich auch so über funktion...
bloß für die ip.. ich finde keine geeignete... *such*wenn das wirklich kommt, hab ich zwei monate arbeit um die ganzen aufträge des letzen jahres anzupassen.. es waren relativ große aufträge, die alle total "durchgestylt" laufen. sie jetzt umzubauen heißt fast, alles neu zu schreiben...
na doll
gibt es eine möglichkeit, die globals skriptweise anzuschalten? wie die gpc, die man für die laufzeit des skriptes ja per funktion auf on/off schalten kann??
*weitersuch und sich in leichte panik bring --- die schönen weihnachstferien ...:( *
zum glück kann man mit dem einen webadmin reden... und ihn überzeugen, daß er viele kleine programmierer ins unglück stürzt, wenn er sie auf off läßt..
-
[OT]Wie heisst das immer bei Apollo 13 ?? 'Houston, wir haben ein Problem!!!' oder so, naja ich mach mich mal schlau, vielleciht weiss ja irgend jemand was, hast es schon auf der php Mailingliste probiert ?
[ZUSATZEDIT]
Aber mal was anderes wenn du einfach eine include vor deine Scripte einbaust das ungefähr so aussiht =><?php $REMOTE_ADDR = $_SERVER[REMOTE_ADDR]; .... ?>
Dann solltest du die Vars wieder haben.
Oder du gehst mit FIND/REPLACE über die Scripte und ersetzt den Kram.
[ Dieser Beitrag wurde am 24.10.2002 um 10:04 Uhr von JoelH editiert. ]
-
thanks joelh
ich teste das nachher mal...
mit copy and paste kann ich auf arbeit da nicht ran, aber zumindest krieg ich meine ips irgendwie, daß ist ja schon eine erleichterung.. so es geht
wenn' nicht funzt, meld ich mich wieder :))
-
[OT]Hab dir eh eine Mail gesendet Also 'bitte Melde dich !' [/OT]
-
Sind die Variablen HTTP_REFERER (und die anderen) nicht alle entweder in _ENV oder _SERVER? Müssten doch eigentlich...
-
jo
that's it
$REMOTE_ADDR = $_SERVER[REMOTE_ADDR];
das gibt ne menge schreibarbeit
thanks
-
schreib dir doch einfach ein Script
-
hab ich schon...
für die umwandlung von den get's und post's hab' ich es mit variablen variablen gemacht... klappt wunnebar... nur für die einzelfälle... eben die remote_addr..
da lohnt es wohl nich'