Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem mit Sessions

Einklappen

Neue Werbung 2019

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

  • Problem mit Sessions

    Hallo!
    ich hab folgendes Problem:
    ich versuche über Sessions Daten von einer Seite zu einer andernen zu übergeben und dabei geht anscheinend die SID verloren.
    ich starte beim ersten Seitenauf die Session mit session_start() und lass mir weiter unten auf der Seite die SID über echo SID anzeigen. Das klappt auch beim ersten aufruf der Seite noch und der Cookie mit der SID wird gesetzt.
    Beim laden der zweiten Seite sollte er ja die Session bei session_start() wieder aufnehmen, aber die alte Session wird nicht aufgenommen und auch keine neue gestartet. ich lasse mir wieder über echo SID die Session-ID anzeigen, aber der Bereich wo sie stehen solle bleibt leer.
    Dadurch das die alte Session nicht wieder korreck aufgenommen wird sind auch Daten aus dieser weg.

    was kann man da machen?

  • #2
    erst mal etwas quellcode... so den bereich um das session_start()

    weil so blind können die wenigsten was sagen
    Wie lautet die adäquate Antwort auf "ihr benehmt euch wie kleine Kinder!" ?

    "Er hat Angefangen!"

    Kommentar


    • #3
      also der erste Bereich ist bei beiden Seiten gleich:
      PHP-Code:
      <?php
      session_start
      ();
      echo 
      SID;
      ?>
      Dann bei der ersten Datei: (Hier wird die SID noch ausgegeben)
      PHP-Code:
      <?php
      $_SESSION
      ['Nickname'] = $_POST['Nick'];
      $_SESSION['Passwort'] = md5$_POST['Passw'] );
      //bis hier enhalten jetzt auch die Session-Variablen noch die Daten
      ?>
      bei der zweiten Datei: (Hier wird die SID nicht mehr ausgegeben)
      PHP-Code:
      <?php
      if( isset( $_SESSION['Nickname'] ) && isset( $_SESSION['Passwort'] ) ) {
        include(
      "./user.php");
      } else {
        include(
      "./fehler.php");
        
      //wird immer eingebunden
      }
      ?>

      Kommentar


      • #4
        du musst bei dem Link oder Weiterleitung die SID mit drann hängen, falls Cookies abgelehnt werden
        PHP-Code:
        <?
        session_start();
        $_SESSION['username'] = 'bla';

        echo '[url="zweite_datei.php?'.session_name().'='.session_id().'"]weiter[/url]';
        ?>
        auch ein Forum (PHP)

        Kommentar


        • #5
          einfacher ->

          PHP-Code:
          <?php
          echo '[url="zweite_datei.php?'SID .'"]weiter[/url]'

          ?>

          Kommentar


          • #6
            hab ich schon probiert, geht auch nicht.

            außerdem bin ich mir sicher, dass mein Browser Cookies annimmt.

            Kommentar


            • #7
              du musst in der zweiten datei auch session_start(); als erstes ausführen
              auch ein Forum (PHP)

              Kommentar


              • #8
                poste doch mal beide dateien 1zu1 und zwar so:

                datei1.php
                ganze inhalt (in [ php ] [ /php ])

                datei2.php
                ganze inhalt (in [ php ] [ /php ])

                dann sieht mans eher

                Kommentar


                • #9
                  Zitat von HK
                  einfacher ->
                  PHP-Code:
                  <?php
                  echo '[url="zweite_datei.php?'SID .'"]weiter[/url]'
                  ?>
                  oder so, wobei SID nur verfügbar ist, wenn Cookies abgelehnt wurden, sonst ist SID:
                  PHPSESSID=
                  (meistens)
                  auch ein Forum (PHP)

                  Kommentar


                  • #10
                    hab jetzt erstma festgestellt, dass die Session wieder aufgenommen wird und wenn ich über echo session_name().'='.session_id() und nicht über SID die Session-ID ausgeben lasse da auch die richtige SID angezeigt wird.

                    mit dem Posten der Dataien könnte es schwierig werden, da viele Dinge darin über include laufen und das insgesamt zu viel Code zum Posten wäre.

                    Kommentar


                    • #11
                      Hier mal eine die Dateien, bzw. Dateiteile in denen die Variablen gesetzt und ausgelelsen werden: (vorher komm jeweils natürlich noch ein session_start() )

                      login.php (hier werden die Variablen gesetzt)
                      PHP-Code:
                      <?php
                      $Nick 
                      $_POST['L_User'];
                      $Pass md5$_POST['L_Passwd'] );

                      if ( ! 
                      connect() ) die("Fehler beim Verbinden mit der Datenbank!");

                      $sql "SELECT * FROM `Member` WHERE Nick='".$Nick."'";
                      $result mysql_query$sql );
                      $User_dat mysql_fetch_object$result );

                      if ( 
                      $User_dat->Passwort == $Pass ) {
                               
                      $login_msg =  1;  //OK
                               
                      set_loggedintime() ); //Cookie setzten
                                 //Daten in die Session speichern
                               
                      $_SESSION['Nickname'] = $Nick;
                               
                      $_SESSION['Passwort'] = $Pass;
                          
                      $_SESSION['Vorname'] = $User_dat->Vorname;
                               
                      $_SESSION['Name'] = $User_dat->Name;
                               
                      $_SESSION['Strasse'] = $User_dat->Strasse;
                               
                      $_SESSION['Ort'] = $User_dat->Ort;
                               
                      $_SESSION['Geburtstag'] = $User_dat->Geburtstag;
                               
                      $_SESSION['Beruf'] = $User_dat->Beruf;
                               
                      $_SESSION['Interessen'] = $User_dat->Interessen;
                               
                      $_SESSION['EMail'] = $User_dat->EMail;
                               
                      $_SESSION['Website'] = $User_dat->Website;
                               
                      $_SESSION['ICQ'] = $User_dat->ICQ;
                               
                      $_SESSION['MSN'] = $User_dat->MSN;
                               
                      $_SESSION['Yahoo'] = $User_dat->Yahoo;
                               
                      $_SESSION['Rang'] = $User_dat->Rang;
                               
                      $_SESSION['Games'] = $User_dat->Games;
                               
                      $_SESSION['Motto'] = $User_dat->Motto;
                               
                      $_SESSION['Datenzeigen'] = $User_dat->Datenzeigen;
                      } else {
                          
                      $login_msg =  2;  //Fehler
                      }
                      ?>
                      die Funktion, die prüfen soll ob Nickname und Passwort gesetzt sind
                      PHP-Code:
                      <?php
                      function login_check$include_Datei) {
                          if( isset(
                      $_SESSION['Nickname']) && isset($_SESSION['Passwort']) ){
                                       include( 
                      $include_Datei );
                               } else {
                                       include(
                      "./nichteingeloggt.php");
                               }
                      }
                      ?>
                      die funkion läd dann immer nur die Datei nichteingeloggt.php, da Nickname und Passwort leer sind

                      Kommentar


                      • #12
                        hab jetzt selber gefunden woran es liegt. ich hab eine Funktion zum Logout geschrieben, die eigntlich nur aufgerufen wird, wenn ich auf Logout klicke:
                        PHP-Code:
                        <?php
                        function logout() {
                            
                        setcookie"Login"""time()-3600"/" ); //Cookie entfernen
                                 
                        session_destroy(); //Session entfernen
                                 
                        setcookie"PHPSESSID"""time()-3600"/" ); //Cookie mit der Session-ID entfernen
                        }
                        ?>
                        wenn ich bei der Funktion jetzt das session_destroy() entferne, dann bleibendie Variablen gesetzt.

                        Hat jemand ne Ahnung woran das liegt, dass session_destroy() auch ausgefürt wird, wenn die Funktion nicht aufgerufen wird? Die Cookies, die von der Funktion auch entfernt werden bleiben ja bestehn, also wird sie nicht ausgefüht.

                        Kommentar

                        Lädt...
                        X