session: Variablen weitergabe

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

  • session: Variablen weitergabe

    Hallo,

    ich hänge an einem problem mit sessions und und Variablen weitergabe.

    folgender code:

    index.php

    PHP-Code:
    <?PHP
        session_start
    ();

    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
       <head>
       </head>
          Seiteninhalt mit includeanweisungen

        <body>
       </body>
    </html>
    dann habe ich eine seite login (welche per include auf den screen gebracht wird)
    login.php

    PHP-Code:
        <?php
                session_start
    ();
                  
    $_SESSION["user_check"] = $user_check;
                  
    $_SESSION["pwd_check"] = $pwd_check;

            if (
    $_SESSION["user_check"]&&$_SESSION["pwd_check"])
                   {
                          
    mach den benutzerbereich sichtbar
                    
    }
                   else
                   {
                       
    frag nach namepasswort
                   
    }
            
    ?>
    und dann noch die

    benutzerbereich.php

    PHP-Code:
            <?php
                session_start
    ();
                if (
    $_SESSION["user_check"]&&$_SESSION["pwd_check"])
                            {
                               
    zeige benutzerbereich
                            
    }
                           else
                           {
                                 
    unberechtigter zugriff
                           
    }
    ?>
    jetzt will ich wenn ich mich eingeloggt habe und im Benutzerbereich bin und dann weitersurfe, ausserhalb des Benutzerbereichs, dann wieder auf den LINK gehe benutzerbereich, mir dieser auch sofort angezeigt wird, ohne das ich mich nochmal einloggen muss.

    Mir scheints, sobald ich den benutzerbereich verlasse, löscht sich auch die dazugehörige variable

  • #2
    Die Session-Variablen werden nicht gelöscht. Du benutzt nur eine andere Session. lass dir mal mit session_id() die aktuelle Session-ID ausgeben, dann wirst du es sehen.
    it's not a bug,
    it's a feature!

    Kommentar


    • #3
      habe mir jetzt die session_id()

      im ausgelogten zustand, dann im eingeloggten und dann wenn ich wieder auf login gehe angeschaut,

      session_id() = 3mal dieselbe;

      oder war es nicht das was du gemeint hast ?

      Kommentar


      • #4
        was bringt dir session_name()?
        it's not a bug,
        it's a feature!

        Kommentar


        • #5
          ebenfalls in allen drei fällen das gleiche:PHPSESSID

          Kommentar


          • #6
            dann nimm mal das session_start() aus den include-Dateien raus und pack es in die Datei, die die anderen included. Somit wird nicht jedesmal eine Session gestartet. und schalte das error_reporting auf E_ALL. Da solltest du zur Zeit dann Wqarnungen erhalten.
            it's not a bug,
            it's a feature!

            Kommentar


            • #7
              mmh, habe in der php.ini jetzt alles was mit error_reporting zu tun hat aktiviert (kommentar rausgenommen) den pc neugestartet, aber da kommen keine meldungen
              die session_start() habe ich aus den beiden rausgenommen.
              es geht ja dann um die variablen

              achso hier der zeilenausschnitt zu den variablen

              PHP-Code:
                              if (isset($_REQUEST['check_pwd']))
                  {
                  
              $pwd_check false;
                  
              $user_check false;

                  
              $check_pwd mysql_fetch_array(mysql_query ("SELECT user,pwd FROM verify WHERE user like '".$_REQUEST['enter_user']."'"));
                  if (
              $_REQUEST['enter_pwd'] == $check_pwd[pwd] && strtolower($_REQUEST['enter_user']) == strtolower($check_pwd[user]))
                  {
                      
              $pwd_check true;
                      
              $user_check true;
                      echo 
              '<script language="Javascript">
                          javascript:window.location.href = "studio.php?id=termine";
                      </script>'
              ;
                  }
                  else
                  {
                  echo 
              '<div class="partner_text"><div class="text">Ihr Benutzername oder Passwort ist nicht korrekt</div></div>';
                  }

              edit:

              ich habe gerade gelesen/gesehen das ich evtl. session_register("Variable") eine globale variable erzeuge.

              Daran wirds liegen ab wie mache ich das ?

              habe jetzt folgendes ausprobiert:

              login.php

              PHP-Code:
                      session_register("user_check");
                      
              session_register("pwd_check"); 
              benutzerbereich.php

              PHP-Code:
                  if ($user_check&&$pwd_check
              allerdings hat er wohl ein problem beim auslesen der variablen

              den ich bekomme dann immer (auch wenn ich authorisiert bin)

              "Keine Berechtigung zum anzeigen"
              Zuletzt geändert von speeedy018; 02.03.2007, 15:34.

              Kommentar


              • #8
                $_SESSION["user_check"] ist eine globale Variable.
                error_reporting(E_ALL); in deine index.php noch vor session_start einfügen
                it's not a bug,
                it's a feature!

                Kommentar


                • #9
                  ich denke das ist das interessante:

                  EDIT:

                  <b>Notice</b>: Undefined variable: user_check in <b>C:\Program Files\xampp\htdocs\login.inc.php</b> on line <b>2</b><br />

                  <br />
                  <b>Notice</b>: Undefined variable: pwd_check in <b>C:\Program Files\xampp\htdocs\login.inc.php</b> on line <b>3</b><br />
                  <b>Notice</b>: Undefined variable: PHPSELF in <b>C:\Program Files\xampp\login.inc.php</b> on line <b>41</b><br />

                  Kommentar


                  • #10
                    Und wegen dieser Notices bist du imme rausgeloggt. Du weist in der login.php deiner session den Wert von user_check und pwd_check zu. Diese Werte sind jedoch Null zu diesem Zeitpunkt. Dann prüfst du, ob deine Session gesetzt ist, was sie loischerweise nicht sein kann, wenn du sie vorher mit Null befüllst.
                    it's not a bug,
                    it's a feature!

                    Kommentar


                    • #11
                      ???

                      ganz doof gefragt, wie mache ich das, das diese variable dann überschrieben wird sobald ich eingelogt bin
                      mache ich das nicht mit

                      PHP-Code:
                          $pwd_check false;
                          
                      $user_check false;

                          
                      $check_pwd mysql_fetch_array(mysql_query ("SELECT user,pwd FROM verify WHERE user like '".$_REQUEST['enter_user']."'"));
                          if (
                      $_REQUEST['enter_pwd'] == $check_pwd[pwd] && strtolower($_REQUEST['enter_user']) == strtolower($check_pwd[user]))
                          {
                              
                      $pwd_check true;
                              
                      $user_check true

                      Kommentar


                      • #12
                        PHP-Code:
                        if(!empty($user_check)) {
                           
                        //schreibe was in die SESSION

                        it's not a bug,
                        it's a feature!

                        Kommentar


                        • #13
                          das hat sporadisch funktioniert komme jetzt aber gar nicht mehr in den login bereich, ist das jetzt richtig eingepflegt worden ?

                          habe jetzt in der
                          index.php

                          PHP-Code:
                          <?php
                              session_start
                          ();
                              if (!empty(
                          $user_check))
                                  {
                                      
                          $_SESSION["user_check"] = $user_check;;
                                  }
                              if (!empty(
                          $pwd_check))
                                  {
                                      
                          $_SESSION["pwd_check"] = $pwd_check;
                                  }
                          ?>
                          und in

                          login.php und benutzerbereich.php

                          PHP-Code:
                          if ($_SESSION["user_check"]&&$_SESSION["pwd_check"]) 
                          bei der login.php habe ich noch folgendes zum schreiben der beiden variablen

                          PHP-Code:
                              if (isset($_REQUEST['check_pwd']))
                              {
                              
                          $check_pwd mysql_fetch_array(mysql_query ("SELECT user,pwd FROM verify WHERE user like '".$_REQUEST['enter_user']."'"));
                              if (
                          $_REQUEST['enter_pwd'] == $check_pwd[pwd] && strtolower($_REQUEST['enter_user']) == strtolower($check_pwd[user]))
                              {
                                  
                          $pwd_check true;
                                  
                          $user_check true;
                                  echo 
                          '<script language="Javascript">
                                      javascript:window.location.href = "studio.php?id=termine";
                                      </script>'
                          ;
                              }
                              else
                              {
                              echo 
                          '<div class="partner_text"><div class="text">Ihr Benutzername oder Passwort ist nicht korrekt</div></div>';
                              }

                          bekomme folgenden fehler (line 2 = was in login.php und benutzerbereich.php w.o. zu sehen ist, die if abfrage), seltsamerweise meckert er das pwd_check nicht an.

                          EDIT:
                          <b>Notice</b>: Undefined index: user_check in <b>C:\Program Files\xampp\htdocs\benutzerbereich.inc.php</b> on line <b>2</b><br />
                          Zuletzt geändert von speeedy018; 02.03.2007, 17:05.

                          Kommentar

                          Lädt...
                          X