3 MySQL-Spalten überprüfen - Login Script mrhappieness

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

  • 3 MySQL-Spalten überprüfen - Login Script mrhappieness

    Hallo,

    ich schreibe gerade an einem Login-Script. Dazu habe ich das Tutorial von mrhappieness etwas ergänzt und unter anderem noch 2 weitere MySQL Spalten eingebaut, nämlich "aktivierung_act" und "aktivierung_user". Warum, weshalb, weswegen sei mal in den Raum gestellt. Jedenfalls möchte, dass wenn sich der User einloggt, überprüft wird, ob halt schon ne Session vorhanden ist und wenn nicht eine erstellen, macht das Script auch. Ich will jetzt noch, dass überprüft wird, ob die beiden Spalten "aktivierung_act" und "aktivierung_user" den Wert 1 enthalten, wenn ja, dann wird der User eingeloggt, wenn nicht, dann halt nicht.
    Hier ist mal der Code:
    PHP-Code:
    function check_user($benutzername$pass)
    {
        
    $pass=md5($pass);
        
    $sql="SELECT id, aktivierung_act, aktivierung_user FROM login WHERE benutzername='".$benutzername."' AND pass='".$pass."' LIMIT 1";
        
    $result=mysql_query($sql) or die (mysql_error());
        
        if(!
    mysql_errno())  
        {
              while(
    $row mysql_fetch_array($resultMYSQL_ASSOC))
              {
                    
    $aktivierung_act $row['aktivierung_act'];
                    
    $aktivierung_user $row['aktivierung_user'];
              }
        }
        else
        {
              echo(
    "<p>Es ist ein Fehler aufgetreten. Bitte versuchen Sie es später noch einmal</p>");
              exit();
        }
        
        if ((
    mysql_num_rows($result)==1) && ($aktivierung_act==1) && ($aktivierung_user==1))
        {
            
    $user=mysql_fetch_assoc($result);
            return 
    $user['id'];        
        }
        else return 
    false;    

    Wenn ich das Script nur so schreibe (Original von mrhappieness), dann funktioniert es, aber meine beiden Spalten werden ja da noch nicht abgefragt:
    PHP-Code:
    function check_user($benutzername$pass)
    {
        
    $pass=md5($pass);
        
    $sql="SELECT id, aktivierung_act, aktivierung_user FROM login WHERE benutzername='".$benutzername."' AND pass='".$pass."' LIMIT 1";
        
    $result=mysql_query($sql) or die (mysql_error());
        
        if (
    mysql_num_rows($result)==1)
        {
            
    $user=mysql_fetch_assoc($result);
            return 
    $user['id'];        
        }
        else return 
    false;

    Hat jemand eine Lösung oder einen Tipp für mich??

    Danke, Kathrin

  • #2
    fehler-/Problembeschreibung?

    Kommentar


    • #3
      Ich bekomme immer den Fehler "Ihre Anmeldedaten waren nicht korrekt". Der Satz kommt von einer anderen Datei (login.php) mit folgendem Code:
      PHP-Code:
      if (isset($_POST['login']))
      {
          
      $userid=check_user($_POST['benutzername'], $_POST['pass']);
          if (
      $userid!=false)
              
      login($userid);        
          else
          {       echo 
      'Ihre Anmeldedaten waren nicht korrekt!';

          }
      }
      if (!
      logged_in())
          echo 
      '<form method="post" action="login.php">
                <p>Benutzername: 
                  <input name="benutzername" type="text">
              </p>        
                <p>Passwort: 
                  <input type="password" name="pass">
              </p>
                <p><input name="login" type="submit" value="Einloggen"></p>
              </form>'
      ;
      else echo 
      '<a href="logout.php">Ausloggen</a><br>';

      echo 
      '<a href="logged_in.php">Check</a>'
      Von diesem Code aus wird wie man sieht meine "Problemfunktion" aufgerufen.

      Kathrin

      Kommentar


      • #4
        hast du $aktivierung_act und $aktivierung_user mal geprüft über ne testausgabe mit echo?

        warum schreibst du nicht
        Code:
        WHERE benutzername='".$benutzername."' 
        AND pass='".$pass."' 
        AND aktivierung_act=1
        AND activierung_user=1
         LIMIT 1"
        ?
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          dann mach mal bitte ein paar testausgaben. ob die werte wirklich 1 sind.

          Kommentar


          • #6
            Ja, Testausgaben habe ich gemacht und sind korrekt. Es geht jetzt :-))). Danke an mrhappieness, Dein Tipp war supi. hab zu kompliziert gedacht.

            Danke, Kathrin

            Kommentar


            • #7
              nicht nur zu kompliziert, sondern auch noch falsch *g*

              um deine beiden zusätzlichen spalten auszulesen, hast du den ersten zurückgelieferten datensatz mit mysql_fetch_array ausgelesen was ja durchaus korrekt ist

              nachdem du die werte auf gültigkeit geprüft hast, willst du einen weiteren, nicht vorhandenen, datensatz mit mysql_fetch_assoc auslesen, da knallt's dann natürlich
              Ich denke, also bin ich. - Einige sind trotzdem...

              Kommentar

              Lädt...
              X