Im Explorer 6 und 7 fliegen die Sessions raus

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

  • Im Explorer 6 und 7 fliegen die Sessions raus

    Hallo,

    hab zu dem Thema zwar das eine oder andere gefunden, konnte aber nicht viel damit anfangen...

    Ich habe eine Datei, in der andere Dateien je nach Link includet werden.

    Die Hauptdatei heißt index2.php

    Wenn ich jetzt etwas anklicke, z.B. "Mitglieder suchen", dann geschieht das folgendermaßen:

    <a href="index2.php?inhalt=suchen>Link</a>

    und suchen.php wird includet.

    Die Session starte ich ganz normal mit

    PHP-Code:
    session_start();
    $id=$_SESSION['id']; 
    und zwar in jeder Datei.

    Wenn ich jetzt im IE ein paar Mal hin und her klicke, fliegt aber die Session raus!
    Komischerweise aber nicht bei allen Dateien und
    auch nicht beim ersten Aufruf, obwohl die alle mit

    session_start();
    $id=$_SESSION['id'];

    anfangen.

    Die üblichen Fehler kann man ausschließen:
    -Cookies werden akzeptiert
    -Keine Leerzeichen oder sonstige Ausgaben vor dem <?PHP
    -Syntanx ist in Ordnung, weil:

    Im Firefox funktioniert es!!

    Alles, was ich bisher gefunden haben, was vielleicht helfen könnte, ist dieses

    output_add_rewrite_var

    Aber ich steh absolut auf dem Schlauch, ob mir das was nützt, und wie ich es anwende.

    Das:

    output_add_rewrite_var(id(),$id());

    ist auf alle Fälle schonmal nicht korrekt...

    Weiß jemand weiter?

    Danke,
    Coniaric
    Gruß, Coni
    ~~ codito ergo sum - ich code, also bin ich! ~~

  • #2
    output_add_rewrite_var(session_name(),session_id());
    Slava
    bituniverse.com

    Kommentar


    • #3
      Hi!

      Und das hilft?
      Wie wendet man das in meinem Fall an?

      session_start();
      $id=$_SESSION['id'];

      output_add_rewrite_var(id(),$id());

      output_add_rewrite_var(session_name(),session_id());

      funktioniert nicht.

      session name ist doch id bei mir und session_id der Inhalt?

      Kommt das vor oder nach der Session?
      Was macht das genau?

      Danke nochmal.


      Hab es jetzt so drin stehen in den relevanten Dateien:

      PHP-Code:
      <?php
      session_start
      ();
      $id=$_SESSION['id'];

      output_add_rewrite_var('id','$id');
      Geht aber nicht... was mach ich noch falsch?
      .....
      Zuletzt geändert von Coniaric; 04.02.2007, 18:50.
      Gruß, Coni
      ~~ codito ergo sum - ich code, also bin ich! ~~

      Kommentar


      • #4
        Schau doch ma im Manual

        bool output_add_rewrite_var ( string name, string value )
        http://www.php.net/manual/de/functio...ewrite-var.php
        Killerspiele sollten in der Größenordnung von Kinder********************grafie eingeordnet werden.(G. Beckstein)
        - ...und solche Behauptungen in "falsches Resourcenmanagement"

        Kommentar


        • #5
          Hab ich schon.
          Ich werd aber nicht ganz schlau drauß.
          Da steht, daß es in der gleichen Art wie die Session-ID als GET-Parameter übergeben wird.

          Aber was bedeutet das für mein Script?

          Muß ich das nochmal irgendwie holen, so ähnlich wie

          $variable=$_GET['variable'];

          Ich hab jetzt einfach nur ganz oben

          PHP-Code:
          output_add_rewrite_var('id','$id'); 
          drinstehen.

          Reicht das vielleicht so nicht?
          Gruß, Coni
          ~~ codito ergo sum - ich code, also bin ich! ~~

          Kommentar


          • #6
            Dir ist klar, dass du mit
            PHP-Code:
            '$id' 
            den string $id übergibst, und nicht den Inhalt der Variable?
            Nieder mit der Camel Case-Konvention

            Kommentar


            • #7
              Ja, hab ich dann gemerkt. Bin jetzt auf folgendem Stand:

              (Hab mal etwas rumprobiert...)


              PHP-Code:

              <?php
              session_start
              ();
              $id=$_SESSION['id'];
              $tid=$_GET['tid'];

              if(
              $id!='')
              {
              output_add_rewrite_var('tid',$id);
              }

              if(
              $id=='')
              {
              $id=$tid;
              }

              ...
              Wenn ich den Link das erste Mal anklicke ist

              $id=9

              beim zweiten mal

              $id=9
              $tid=9

              beim dritten Mal

              $id=
              $tid=



              output_add_rewrite_var fliegt also genauso raus, wie die Session... was kann ich jetzt noch tun?
              Gruß, Coni
              ~~ codito ergo sum - ich code, also bin ich! ~~

              Kommentar


              • #8
                Woher nimmst du denn den Wert für $_SESSION['id']? Du glaubst doch nicht, dass das die Session-ID ist, oder?
                Die Session-ID bekommst du so:
                PHP-Code:
                $session_id session_id(); 
                Nieder mit der Camel Case-Konvention

                Kommentar


                • #9
                  Neenee, keine Sorge. Die ID ist eine ID aus der Datenbank, die eindeutig den User identifiziert.

                  Hab das ganze jetzt nur stark vereinfacht, damit ich andere Fehlerquellen ausschließen kann...
                  Gruß, Coni
                  ~~ codito ergo sum - ich code, also bin ich! ~~

                  Kommentar


                  • #10
                    Original geschrieben von Coniaric
                    Neenee, keine Sorge. Die ID ist eine ID aus der Datenbank, die eindeutig den User identifiziert.

                    Hab das ganze jetzt nur stark vereinfacht, damit ich andere Fehlerquellen ausschließen kann...
                    Gesundheit?

                    Du hast überhaupt nicht verstanden was Griecherus dich gefragt hat, oder?
                    Erstmal Grundlagen verstehen bitte
                    http://www.usegroup.de/software/phpt.../sessions.html
                    http://tut.php-q.net/sessions.html
                    und am besten die restlichen XYZ Suchergebnisse auch noch
                    http://www.google.de/search?client=f...G=Google-Suche
                    dann informierst du dich über trans_id, das ist nämlich im Endeffekt das, was du hier über ouput_add_rewrite_var zu erreichen versuchst

                    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                    Wie man Fragen richtig stellt

                    Kommentar


                    • #11
                      1)
                      Wenn ich Deinen google-Link aufmache,
                      sind alle Links der ersten beiden Seiten in der Farbe "bereits besucht"

                      2)
                      Ich hab schon verstanden. Diese Variable dient lediglich dazu,
                      um später aus der Datenbank die Daten genau dieses Users zu holen.

                      3)
                      Ich hab jetzt in den letzten 2 Stunden sicher zwei bis drei dutzend
                      Beiträge hier im Forum gelesen, die auch nur entfernt mit Sessions
                      oder diesem output_var-Dingens zu tun hatten.

                      Alle waren am Ende ohne Resultat, oder die Schreiber vergingen
                      sich in wüsten Beschimpfungen gegeneinander.

                      Ich werde es nicht so weit kommen lassen, hab nur das Gefühl,
                      daß man gleich als dämlich angesehen wird, wenn man irgendwo
                      einen Denkfehler gemacht hat.
                      Teilweise waren es sogar Moderatoren, die ziemlich schnell
                      ziemlich aggressiv reagiert hatten.
                      (Ich nenne jetzt bewußt keine Namen)

                      Klar gibt es gewisse Regeln, ich verstehe natürlich,
                      wenn einer alles in eine Zeile schreibt, daß das nicht lesbar ist.

                      Aber in einigen Fällen wurden Leuten, die eine Frage hatten,
                      irgendwelche unverständlichen Brocken hingeworfen und wenn er
                      die nicht gleich richtig verstanden hat, sind sie auf ihn gestürzt und
                      haben ihn verbal niedergeknüppelt.
                      Einer wurde sogar gebannt (hab ich hier noch nie gesehen),
                      möglicherweise ja zu recht! Aber wenn man den thread so liest,
                      fing er ganz harmlos an.

                      Aber dieses "Wir wollen nur helfen, aber..." klingt doch von einigen
                      sehr nach Heuchelei und "Ich bin der PHP-Gott und wenn Du mich
                      nicht verstehst, laß es eben mit dem Programmieren."
                      (Was ein paar sogar beinahe wörtlich so gesagt haben)

                      Damit meine ich jetzt nicht unbedingt Leute, die in DIESEM Thread
                      geschrieben haben, aber ich will es lieber auch nicht herausfinden.

                      Vielleicht liegt es am Wetter, aber es ist sicher besser,
                      ich geh jetzt ins Bett.
                      Gruß, Coni
                      ~~ codito ergo sum - ich code, also bin ich! ~~

                      Kommentar


                      • #12
                        Original geschrieben von Coniaric
                        1)
                        Wenn ich Deinen google-Link aufmache,
                        sind alle Links der ersten beiden Seiten in der Farbe "bereits besucht"
                        OffTopic:
                        Ja, :visited existiert in CSS - :understood aber nicht. Wenn das es täte, wären wohl Zweifel angebracht, ob der Selektor in diesem Falle Gültigkeit hätte.
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          Ich hab mir deinen Post gar nicht ganz durchgelesen, sonst werd ich wohl eh nur eingeschnappt x_X

                          Also, das Problem bei dir ist die SID!!! << merken

                          Was ist die SID? Siehe Google, ein 40 stelliger (ZUFÄLLIGER) String zur Identifizierung der Daten auf dem Server und korrekter Zuordnung zum jeweiligen Client (de facto also User)

                          Wie funktionieren Sessions?
                          Indem eben der Browser (User) an den Server eine Anfrage mit der SID schickt und somit sagt "hey, das bin ich, behandle mich auch so und nimm die Daten aus der Session"
                          Was passiert wenn die SID nicht übergeben wird?
                          Der Server denkt "Hey, den kenn ich nicht", d.h. öffnet die Session nicht

                          Das Problem ist also der Browser?
                          Nein, der Browser (/User) geht nur auf die URLs die du (Server) ihm gibst, d.h. man stelle sicher, dass überall die SID übertragen wird. Einfach, wenn nur Cookies erlaubt sind und diese auch aktiviert sind, doof, wenn Cookies nicht aktiviert sind~
                          Wie wird die SID übergeben, wenn Cookies nicht klappen?
                          Als Parameter per GET z.B.
                          http://example.com?par=blubb&sid=<die_40_stellen>
                          oder als hidden-Field im Formular z.B.
                          <form>
                          <input type="hidden" name="SID" value="<die_40_stellen>" />
                          </form>

                          da kein Programmierer Bock hat eben immer den Parameter an die Links anzuhängen, oder ins Form zu schreiben, wurde trans_id erfunden (oder eben alternativ output_add -blabla, die Funktion halt)
                          Du machst
                          echo "<a href=\"?par=blubb\"">derLink</a>";
                          das ganze wird durch den Output_Buffer geschubst, beim User/Browser kommt
                          <a href="?par=blubb&SID=<die_40_stellen>">derLink</a>
                          an

                          Damit das (automatisch) gemacht wird, musst du entweder trans_id anschalten (per php.ini, htaccess oder ini_set) oder halt die Funktion verwenden...
                          du hattest gerade:
                          PHP-Code:
                          $id=$_SESSION['id'];
                          $tid=$_GET['tid'];

                          if(
                          $id!='')
                          {
                          output_add_rewrite_var('tid',$id); 
                          das ist scheiße.
                          Es erfüllt gar keinen Zweck, die Zeile die schon gepostet wurde
                          PHP-Code:
                          output_add_rewrite_var(session_name(),session_id()); 
                          ist vollkommen okay und funktioniert wunderprächtig
                          z.B.
                          PHP-Code:
                          <?php

                          output_add_rewrite_var
                          ('test''id');

                          echo 
                          "<a href=\"test.php\">test</a>";
                          Code:
                          X-Powered-By: PHP/5.2.0
                          Content-type: text/html
                          
                          <a href="test.php?test=id">test</a>
                          Du kannst zum Testen einfach mal die Zeile eben (mit session_name() und session_id()) und ein echo session_id() in dein Skript schreiben. Wenn sich die SID nicht mehr ändert ist die session an sich in Ordnung und das Problem liegt an deinem restlichen Code, wenn doch, dann hast du irgendwas anderes in deinem Code was eben diese Zeile zerschießt, dann gilt es das Problem auf ein paar Zeilen Code zu reduzieren und langsam so zu erweitern, bis es irgendwann auf einmal nicht mehr klappt und man das Problem lokalisiert hat ... einfaches debugging halt

                          Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                          bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                          Wie man Fragen richtig stellt

                          Kommentar

                          Lädt...
                          X