Ankündigung

Einklappen
Keine Ankündigung bisher.

Sessions - Variabeln werden beim ersten Mal nicht gespeicher

Einklappen

Neue Werbung 2019

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

  • Sessions - Variabeln werden beim ersten Mal nicht gespeicher

    Hallo,

    mein Login Script funktioniert eigentlich einwandfrei, wenn da nicht dieser kleine Fehler wäre.

    Beim ersten Einloggen wird man zwar kurzzeitig eingeloggt (alle $_SESSION Variabeln werden gesetzt und werden auch mit echo "$_SESSION['variabel'] angezeigt), aber wenn man danach auf eine andere Seite geht sind die Session Variabeln wieder leer. Wenn man sich dann nochmal einloggt funktioniert alles einwandfrei. Komisch oder?!

    Noch seltsamer ist, dass eine andere Variabel $_SESSION['userid'] bestehen bleibt, $_SESSION['username'] jedoch wird erst beim zweiten einloggen "richtig" gespeichert.

    Leider gibt es keine Fehlermeldung. Ich vermute mal das es daran liegt das ich in meinem Script später nocheinmal $_SESSION['username'] benutze....aber kann mir das nicht erklären.

    Code vom Login ist in Ordnung, da er ohne in das Design eingebunden zu sein funktioniert.

    Kann mir das nicht erklären. Kann mir vielleicht einer helfen?


  • #2
    Wie wäre es, wenn du uns mal deinen Code zeigen würdest?

    Langsam solltet ihr doch kapieren, dass wir hier keine Glaskugeln rumliegen haben -.-

    Code vom Login ist in Ordnung
    Gehe niemals davon aus, dass ein Code in Ordnung ist, nur weil er unter anderen Umständen funktionierte - zu funktionieren scheint. Wenn etwas nicht funktioniert, dann gilt generell sämtlicher Code als möglicherweise fehlerhaft. Natürlich kann man sich Gedanken machen, in welchen Codes der Fehler stecken könnte/müsste/sollte, aber niemals nur vom Gefühl her einen Code als "fehlerfrei" abstempeln!

    Kommentar


    • #3
      Ich würde ja liebend gerne den Code posten, aber der ist sehr sehr lang!
      Meine Seite wird durch mehrere includes erstellt. Ohne diese includes funktioniert das Script. Ich poste einfach mal den Login Code, vielleicht hat sich ja doch ein Fehler eingeschlichen:


      PHP-Code:
      <?php

      session_name
      (klickreich);
      session_start();

      $sessionid=session_id();
      $sessionname=session_name();

      //Variablen bestimmen
      $username=$_POST['username'];
      $passwortmd5=md5($_POST['passwort']);



      //Suche nach Benutzername
      $count=mysql_query("SELECT count(id) FROM members where username='$username'"); 
      list(
      $anzahl) = mysql_fetch_row($count); 

      if(
      $anzahl=="0"

      echo
      "Du musst uns schon einen gültigen Benutzernamen geben ;-)!"




      //Benutzerdaten überprüfen
      $abfragen  =  mysql_query("select id,username,passwort,sessionid,aktiviert from members WHERE username = '$username'");
      while  (
      $row  =  mysql_fetch_row($abfragen)) 



      {
      if(
      $username == $row[1] && $passwortmd5 == $row[2])
      {



      //Testen ob Account aktiviert ist
      if($row[4]==1)
      {



      //MemberArea
      echo"Du hast dich erfolgreich eingeloggt

      "
      ;




      //Parameter definieren
      $_SESSION['passwort']=$passwortmd5;
      $_SESSION['username']=$_POST['username'];
      $_SESSION['userid']=$row[0];

      }
      //aktiviert
      }
      }

      ?>

      Kommentar


      • #4
        ]Ohne diese includes funktioniert das Script
        dann zeig uns doch mal "diese" includes.

        Abgesehen von sicherheitsmängeln ist dein Login-code ok.

        Kommentar


        • #5
          Also das würde wirklich hier den Rahmen sprengen
          Muss den Fehler woanders suchen. Interessant ist nur, dass wenn ich ein Formular nehme, dass nicht ins Design eingebunden nehme, dass es dann funktioniert. Muss also irgendwie was mit dem Formular passieren

          Kommentar


          • #6
            Also das würde wirklich hier den Rahmen sprengen Wink
            Muss den Fehler woanders suchen
            dazu:

            Ein Mann geht auf der Straße entlang und sieht jemanden, der immer wieder um eine Straßenlaterne rumkriecht. Er geht zu ihm hin, und fragt ihn, was er denn mache. Der Mann antwortet: "Ich suche schon seit 30 minuten einen 20€ Schein, den ich verloren habe." "Wenn sie schon so lange suchen, kann es dann nicht sein, dass der Schein wo anders liegt?" "Das wäre möglich." "Und warum suchen sie dann immernoch hier?" "Hier ist nunmal das beste Licht."
            Ich hoffe mal, ich konnte den Witz einigermaßen gut reproduzieren, ich hab nämlich nur eine ungefähre AHnung, wie der mal ging...

            Kommentar


            • #7
              Ok ich kann euch gerne alle include Dateien geben, wenn ihr dann auch wirklich die dateien durchgeht. Hab kein Bock hier alles zusammenzustellen und dann wirds sowieso nicht gelesen.

              Ach ja und mal so nebenher....wie kann bitte ein Formular irgendwie geändert werden, dass es ohne Zusätze mit dem Login Script funktioniert und mit dem Design nur erst beim zweiten Mal?????? Das ist doch verhext!!

              Kommentar


              • #8
                Es wär vielleicht wirklich ganz hilfreich, wenn du die entsprechenden Ausschnitte mal veröffentlichen würdest. Wenn du selbst schon sagst, es liegt am Formular, dann kopier doch einfach mal den Bereich hier rein und man wird sehen, ob es daran liegt

                Kommentar


                • #9
                  Ich hab die Ursache jetzt selbst behoben, weiss aber nicht warum das fehlerhaft war. Bevor der oben angegebene LoginScript aufgerufen wird, wird der User Status angezeigt (also ob online oder offline).
                  Das sieht so aus:

                  [php]<?php


                  ####### ZUSATZ ########


                  if($_GET['p']=="login")
                  {
                  $_SESSION['username'] = $_POST['username'];
                  $_SESSION['passwort'] = md5($_POST['passwort']);

                  $abfragen = mysql_query( "select id from members WHERE username = '$username'");
                  while ($row = mysql_fetch_row($abfragen))
                  {
                  $_SESSION['userid'] = $row[0];
                  }

                  }

                  ######################





                  $userid = $_SESSION['userid'];
                  $username = $_SESSION['username'];
                  $passwortmd5 = $_SESSION['passwort'];

                  //Benutzerdaten überprüfen
                  $abfragen = mysql_query( "select username,passwort,aktiviert from members WHERE id = '$userid'");
                  while ($row = mysql_fetch_row($abfragen))
                  {

                  if($username == $row[0] && $passwortmd5 == $row[1] && $row[2]=="1")
                  {
                  $count=mysql_query("SELECT count(id) FROM pn where zu='$username' && gelesen='0'");
                  list($anzahlpn) = mysql_fetch_row($count);
                  echo"<font color=\"#00FF00\" size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\">ID $userid · $username</font> <font color=\"#000000\" size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\">· <a href=\"index2.php?p=pn&$sessionname=$sessionid\">$ anzahlpn</a> neue Nachrichten · <a href=\"index2.php?p=ausloggen&$sessionname=$sessio nid\">ausloggen</a> :.</font>";



                  } //ende if benutzerdaten ok
                  else
                  {

                  echo"<font color=\"#FF0000\" size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\">nicht
                  eingeloggt</font><font size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\">
                  &middot; <a href=\"index2.php?p=einloggen&$sessionname=$sessio nid\">einloggen</a> :.</font>";

                  } //ende else
                  } //ende while

                  ?>

                  Daran ist nichts dran falsch....
                  Aber da das Script ja vor dem Login angezeigt wird und der User dann schon als ONLINE angezeigt werden soll habe ich unter ZUSATZ was hinzugefügt für den Fall das gerade Loggedin wird.

                  Ohne Zusatz gehts mit leider nicht. Was ist an diesem kurzen Code Stück falsch. Ich vermute mal, dass der irgendwie mit dem Login Code koelliert.

                  Kommentar

                  Lädt...
                  X