$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.



  • @joelh

    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'


Anmelden zum Antworten