PHP Sessions, Problem und Frage

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP Sessions, Problem und Frage

    Hallo

    Alle meine bisherigen Scripte basieren noch auf session_register() session_unregister() etc....

    Nun schreibe ich gerade mein Gästebuch neu und wollte heute die Session neu schreiben. Allerdings komme ich trotz lesen zahlreicher Threads nicht ganz klar, sprich: Ich bin mir nicht sicher, ob ich alles verstanden habe.

    1. Anstatt session_register() und _unregister() liest man Variablen jetzt einfach per $_SESSION['varname'] aus oder? Ist also jede Variable automatisch als Sessionvariable gespeichert? Auch variablen innerhalb von Funktionen? Wie kann ich Variablen welche innerhalb von eine Funktion erstellt werden, auf der nächsten Seite auslesen?

    2. Gibt es somit kein Session_unregister() mehr? Gibt es einen Erstatz oder arbeitet ihr ohne?

    3. Mein Host hat vor 2 Monaten register_globals ausgeschaltet. Trotzdem gehen alle meine Scripts problemlos welche per session_register() und unregister() arbeiten. Ich habe in einem Thread gelesen, dass wenn man auf nummer sicher gehen will, man mit $_SESSION arbeiten soll, ist das wahr?

    Hmmm in Punkt eins hab ich auch gleich meine Frage gestellt merke ich. Vieleicht kann mir ja jemand helfen. Ich möchte eben nicht auf Dinge setzen, von welchen ich nicht 100% ausgehen kann. Danke vielmals!

    Thx
    Phish

  • #2
    session-variabeln stehen jetzt alle in dem array $_SESSION
    • setzen einer session-variable: $_SESSION['foo']='bar';
    • auslesen einer session-variable: echo $_SESSION['foo'];
    • entfernen einer session-variable (sessioN-unregister): unset($_SESSION['foo']);
    dieses array ist superglobal, d. h. es ist auch innerhalb von funktionen in deiner php-datei bekannt und du musst nix mehr mittels global reinholen
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      es ist aber dochnicht so das AUTOMATISCH ALLE VARIABLEN in $_session["asd"] gespeichert werden!!! Natürlich muß man noch "Session_register" oder:
      $_session["asd"] = "blablabla";

      machen!!!
      Die Musikreview Seite

      hi, i'm a signature virus. copy me into your signature to help me spread.

      Kommentar


      • #4
        Super...

        Danke vielmals, jetzt ist mir einiges klar. Hat auch alles super geklappt nachdem ichs übertragen habe. Aber:

        Ich definiere auf seite $_SESSION['timestamp']= time();
        Seite zwei zeigt mir $_SESSION['timestamp'] an. Wenn ich auf Seite 3 wechsle, sprich die selbe seite zum zweiten mal neu aufrufe ist $_SESSION['timestamp'] weg. ???

        Mach ich was falsch?

        Danke vielmals
        Phish

        Kommentar


        • #5
          Seite 1
          PHP-Code:
          <?php
          session_start
          ();
          $_SESSION['timestamp']=time();
          ?>
          <a href="seite2.php">Seite 2</a>
          Seite 2
          PHP-Code:
          <?php
          session_start
          ();
          if (isset(
          $_SESSION['timestamp']))
            echo 
          'Sessionvariable gesetzt. Wert: '.$_SESSION['timestamp'];
          ?>
          sieht das so aus bei dir?

          das sollte nämlich gehen
          Ich denke, also bin ich. - Einige sind trotzdem...

          Kommentar


          • #6
            Hallo

            Ja so in etwa sieht das bei mir aus... die Variable wird auch übergeben, allerdings nur ein mal. Dann verschwindet sie. Ich fürchte es liegt wohl nicht an der Variable sondern am Aufbau meiner Seite. Das ganze schaut etwa so aus.

            index.php bildet die eigentliche website welche navigation und layout steuert. Sie liest aus einer mySQL DB den content aus. In der mySQL DB steht jeweils der inhalt der einzelnen Seiten. Auf der Seite des Gästebuches steht in der DB der Code um ein weiteres .php file zu inkludieren: gb.php. Die Session wird bereits in index.php gestartet, da bereits dort einige Variablen gespeichert werden müssen. Funktioniert alles wunderbar, allerdings och mit _register() und _unregister(). Mach ich gleich nachher auf der Arbeit mal weg und schreibs neu. Im gb.php wird keine neue Session gestartet, da gb.php ja in index.php inkludiert wird.

            Is alles ein wenig verschachtelt....

            Naja vieleicht find ich ja noch nen Fehler wenn ich auf der Arbeit bin. Die Sessionvariable wird aber zumindest einmal übergeben.

            Seite 1: Variable wird definiert
            klick auf einen link der auf phpself zeigt
            Seite 2: Variable ist da
            klick auf einen link der auf phpself zeigt
            Seite 3: Variable ist weg

            Thx
            Phish

            Kommentar


            • #7
              Re

              Ich habe index.php jetz umgeschrieben. Alle läuft problemlos wie zuvor. Trotzdem habe ich immernoch das Problem mit dem Gästebuch.

              Seite1: $_SESSION['var'] = hallo
              klick auf link nach phpself
              Seite2: $_SESSION['var'] wird ausgegeben
              klick auf link nach phpself / F5 / refresh
              Seite3: nix mehr da von $_SESSION['var']

              Da muss wo der Wurm drin sein, ich scheine aber alles richtig zu machen was die Variableneklaration angeht. Was kann so ein Verhalten evtl noch hervorrufen?

              Thx
              Phish

              Kommentar


              • #8
                die Session ID is aber noch vorhanden ?

                gruss

                Kommentar


                • #9
                  Hallo

                  Ja, die Session ID geht net verloren. Ich habe sie mir in index.php und in gb.php ausgeben lassen. Sie erscheint auf der Webseite also zweimal und ist immer die gleiche...

                  Thx
                  Phish

                  Kommentar


                  • #10
                    Hallo

                    Ich hab was gefunden.

                    Folgendes: Die problematische Variable speichert time(). Ich habe das mal in "Hallo" verändert und siehe da: Die Variable verliert ihren Wert nicht mehr. Auch mit $_SESSION['var'] = 1134 hat die Seite keine Probleme.

                    Fällt jemandem von euch eine Lösung ein? Ich sollte die Zeit eines Postings festahlten können. Ich hab bereits folgendes versucht:

                    $timenow = time();
                    $_SESSION['timestamp'] = $timenow;

                    Aber das kommt ja auf`s selbe raus ich schreibe time() in eine Variable. Ich hätte immer gedacht das sowas kein Problem sein sollte.... Tortzdem habe ich nun das Problem, dass es immer noch net geht. Hat irgend jemand eine Ahnung wie ich so eine timestamp variable erstellen kann, welche die ausgabe von time() festhält und in der session überlebt.

                    Danke vielmals
                    Phish
                    Zuletzt geändert von Phish; 30.05.2003, 12:05.

                    Kommentar


                    • #11
                      Du solltest evtl. versuchen, das als string abzuspeichern - obwohl ich bezweifle das sich dadurch etwas ändert.

                      Also anstelle von:
                      PHP-Code:
                      $timenow time();
                      $_SESSION['timestamp'] = $timenow
                      das ...
                      PHP-Code:
                      $timenow time();
                      $_SESSION['timestamp'] = "$timenow"
                      Eventuelle Tippfehler bei PHP-Beispielen können durchaus vorkommen, aber es geht um die grundsätzliche Möglichkeit der Anwendung.

                      Es war einmal ein Benutzer, der hatte ein Problem mit ... PHP (http://de3.php.net/manual/de/) MySQL (http://dev.mysql.com/doc/mysql/de/) HTML (http://www.selfhtml.org/)

                      Wer suchet, der findet: http://www.php-resource.de/forum/search.php
                      Immer noch nichts? Dann frag!


                      Mit freundlichen Grüßen,
                      @4u

                      Kommentar


                      • #12
                        Hallo

                        Nein, hat leider nix gebracht *snif*

                        Ich geb bald auf.... das ist soooo unlogisch...

                        thx
                        Phish

                        Kommentar

                        Lädt...
                        X