Variablendeklaration - Kollision mit $_Session?

Diskutiere mit über: Variablendeklaration - Kollision mit $_Session? im Web-Programmierung Forum

  1. 2nd

    2nd Thread Starter MacUser Mitglied

    Beiträge:
    8.902
    Zustimmungen:
    242
    Registriert seit:
    25.07.2004
    Hi Leute, brauche mal Hintergrundinfo: Eine Variable ist folgendermassen deklariert:

    PHP:
    $bildLink "draussen.jpg"
    Die Session hat diese Deklaration:

    PHP:
    $_SESSION['bildLink'] = $bildLink
    Kommen die Namen sich in die Quere? Ich habe ein Projekt, wo es in einem Fall geht, d. h. es ist kein Problem und heute habe ich ein Problem mit dieser Deklaration - wenn ich die Sessionvariable umbennen funktioniert es dann. Darf man Sessionvariablen mit denselben Name belegen wie normale Variablen?

    Danke für Hilfe,

    2nd
     
  2. koli.bri

    koli.bri Gast

    Kommt das nicht auf die PHP-Version und auch die Art, wie PHP eingestellt ist an?

    Ich meine, das Stichwort sei da "Register Globals".
    Ich kann ja auch einstellen, ob ich GET-Parameter mit $_GET['var'] oder $var anspreche. Ebenso verhält sich das doch auch mit $_SESSION['var'].

    gruß
    Lukas
     
  3. 2nd

    2nd Thread Starter MacUser Mitglied

    Beiträge:
    8.902
    Zustimmungen:
    242
    Registriert seit:
    25.07.2004
    Es war auf ON gestellt (XAMPP halt), habe es auf OFF gestellt, aber es fkt. tortzdem nicht. Ich verstehe es nicht, da es in einem anderen Teil des Projektes geht.

    Wenn ich mit

    PHP:
    unset($bildLink);
    meine Variable lösche, ist die SessionVar auch weg :kopfkratz:

    Ich habe jetzt erstmal alle SessionVars umbenannt, bis ich genau weiss, wie das Verhalten der Variablen ist. Hat noch jemand einen Hinweis?

    2nd
     
  4. Pinacolada

    Pinacolada MacUser Mitglied

    Beiträge:
    419
    Zustimmungen:
    41
    Registriert seit:
    26.04.2005
    muss mit register_globals zusammenhängen.


    schau mal bitte per phpinfo() nach, ob es wirklich ausgeschaltet ist.
     
  5. wegus

    wegus MacUser Mitglied

    Beiträge:
    15.029
    Zustimmungen:
    1.314
    Registriert seit:
    13.09.2004
    Es gibt neben resgister_globals noch so etwas wie GPC ( steht für GET, POST und Cookie). Dadurch wird festgelegt, in welcher Reihenfolge die superglobals ausgewertet werden ( und wer wen überschreiben darf).

    Grundsätzlich ist

    $xyz eine Variable mit Page-Scope

    ist register_globals on, so werden alle per Get,Post,Cookie vorhandenen Variablen in der def. Reihenfolge übertragen. Session-Vars bleiben ja auf dem Server. Dabei sind in $_SESSION['xyz'] die xyz nur Indizes und keinesfalls mit Variablen identisch ($xyz ist etwas ganz anderes).

    Dabei ist es nat. gern genommen Code a la

    $user_id=$_SESSION['user_id'];

    zu schreiben. Das sollte man aber in der Tat nicht machen. Weil es (a) zu Verwechslungen führen kann, (b) hier redundant ist - es kann ja wirklich die Session ausgelesen werden und (c) für Einbrüche (er GET/POST) geradezu eine Einladung! Mehr Sinn macht da schon ein:

    $page_user_id=$_SESSION['user_id'];

    oder ein anderer Text davor.
     
  6. 2nd

    2nd Thread Starter MacUser Mitglied

    Beiträge:
    8.902
    Zustimmungen:
    242
    Registriert seit:
    25.07.2004
    Habe ich schon - steht auf OFF. Also liegt es daran - wenn ich R_G auf ON habe, kann ich direkt mit den Variablennamen auf den Inhalt ohne $_SESSION [''] zugreifen?

    Ich werde wohl nochmal bei Gelegenheit testen. Kann ich das irgendwo nachlesen?

    2nd
     
  7. wegus

    wegus MacUser Mitglied

    Beiträge:
    15.029
    Zustimmungen:
    1.314
    Registriert seit:
    13.09.2004
    Naja die manuals bei www.php.net/manual/en sind recht gut ( auch von usern ) kommentiert. Da steht eigentlich alles drinn ( man muß es nur in der schieren Menge finden).

    Das es da eine Koinzidenz gibt, zeigt mir aber folgendes Google-Ergebnis:

    Das war nur eine von vielen Quellen, die genauen Einstellungen aus der php.ini sowie die betroffenen PHP-Versionen standen nat. nicht dabei. Es ist eines der Probleme von PHP, das da teilweise erst spät aufgeräumt wurde. Somit ist einiges an Code an bestimmte PHP-Versionen gebunden und einige "So geht es richtig"-Lösungen eben leider out of date..
     
  8. 2nd

    2nd Thread Starter MacUser Mitglied

    Beiträge:
    8.902
    Zustimmungen:
    242
    Registriert seit:
    25.07.2004
    Hmm :kopfkratz:

    Habe folgendes ausprobiert:

    PHP:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    <title>Session Test</title>
    </head>

    <body>
    <?php 
        $reportPicLinksFrontend 
    "Das ist ein Test<br>";
        echo 
    "Zugriff auf die Var: ".$reportPicLinksFrontend;
        
        
    $_SESSION['reportPicLinksFrontend'] = $reportPicLinksFrontend;
        echo 
    "<br>Zugriff auf dei SessionVar: ".$_SESSION['reportPicLinksFrontend'];
        
        echo 
    "<br>Variable wird gelöscht.<br><br>";
        unset(
    $reportPicLinksFrontend);
        
        echo 
    "<br><br>Zugriff auf die Var nach Löschung der Var:".$reportPicLinksFrontend."<br><br>";
        echo 
    "Zugriff auf die SessionVar nach Löschung der Var: ".$_SESSION['reportPicLinksFrontend'];

    ?>

    </body>
    </html>


    Sowohl mit GLOBAL_REGISTERS = ON als auch OFF funktioniert alles so, wie es soll, die Variable wird gelöscht und die Sessionvariable bleibt. Warum ging das gestern nicht?

    @Karsten: Ich hole mir die Variablen für die Session nicht aus $_POST Arrays, das sind Strings, die sich zu Laufzeit ergeben (aus dem Datum).

    Bin ratlos,

    2nd
     
  9. koli.bri

    koli.bri Gast

    Hm, heute gehts wieder? Hab ich das richtig verstanden?
    Wohlmöglich musste die Session erst zerstört werden?
    nur so als Idee... Das sich da was im Cahce verfangen hat...

    gruß
    Lukas
     
  10. 2nd

    2nd Thread Starter MacUser Mitglied

    Beiträge:
    8.902
    Zustimmungen:
    242
    Registriert seit:
    25.07.2004
    @Lukas: Mit dem anderen Bsp. geht es heute (Post #8). Das ursprüngliche ging heute früh nicht, bis ich die Variablennamen geändert habe, seitdem geht es.

    2nd
     
Die Seite wird geladen...
Ähnliche Themen - Variablendeklaration Kollision $_Session Forum Datum
PHP - Objekte in $_SESSION weitergeben geht einmal und dann nicht mehr Web-Programmierung 24.11.2008

Diese Seite empfehlen

Benutzerdefinierte Suche