2ter SELECT liefert 0

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

  • 2ter SELECT liefert 0

    Moin,
    ich habe ein Script geschrieben, dass nach dreimaliger falscher
    Eingabe denn Account spert.

    Jetzt zu meinem Problem:

    PHP-Code:
    ...
    $result mysql_query("SELECT UserName, logtry, time FROM
    users WHERE UserName = '"
    .$_POST['username']."'");
    $row mysql_fetch_assoc($result);
    if (
    $row['time'] !== '')    {
        
    $sql "UPDATE users SET time='', logtry='' WHERE time <= ".$invalidly;
        
    mysql_query($sql);
    }  
       
    if(
    $row['logtry'] < '3') {

    ... 
    So klappt mein Script, jedoch ist dort ein Fehler. Wenn time und logtry auf 0 gesetzt werden,
    stimmt der Datensatz für die if Abfrage nicht mehr,
    da logtry ja schon vor dem Update abgefragt wurde.

    Deswegen habe ich es so versucht:
    PHP-Code:
    ...
        
    $result mysql_query("SELECT time FROM users
        WHERE UserName = '"
    .$_POST['username']."'");
        
    $row mysql_fetch_assoc($result);
        if (
    $row['time'] !== '')    {
            
    $sql "UPDATE users SET time='', logtry='' WHERE time <= ".$invalidly;
            
    mysql_query($sql);
        }  
        
    $result mysql_query("SELECT UserName, logtry FROM users
    WHERE UserName = '"
    .$_POST['username']."'");
    $row mysql_fetch_assoc($result);

           if(
    $row['logtry'] < '3') {
    ... 
    Wenn ich mir $row['logtry'] ausgeben lasse bekomme ich immer 0
    auch wenn in der DB z.B. 2 steht. Auch wenn ich andere Variablen
    nehme z.B. $result2 ändert sich nichts.

    Hat jemand ne Idee. Bin über jede Hilfe dankbar.

    7th Freet

  • #2
    Re: 2ter SELECT liefert 0

    Original geschrieben von 7th Freet
    Hat jemand ne Idee.
    Ja - formuliere bitte erst mal klar und deutlich, was dein Script machen soll.
    Bin über jede Hilfe dankbar.
    Dann ermögliche uns bitte, dir zu helfen - in dem du erst mal eine Problembeschreibung verfasst, die sich auch für Außenstehende nachvollziehen lässt.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Lass dir mal $_POST['username'] ausgeben... evtl. liegt da der Wurm begraben, weil dein query sollte passen und wenn du sonst allse richtig angelegt hast müsste er dir dann auch deine 2 ausspucken...

      falls es das nicht ist, musst nochmal genau erklären was du meinst

      Kommentar


      • #4
        Ja - formuliere bitte erst mal klar und deutlich, was dein Script machen soll.
        Das Script zählt die fehlgeschlagenen Logins und nach drei versuchen
        sperrt den Account für eine bestimmte Zeit.

        Am anfang des Scriptes (der von mir gepostete Teil) wird geprüft
        ob in der Datenbank ein Sperrzeit hinterlegt ist und ob diese noch
        gültig ist oder nicht. Wenn nicht wird die Anzahl der Versuche und
        die Sperrzeit zurück auf null gesetzt.

        Dann ermögliche uns bitte, dir zu helfen - in dem du erst mal eine Problembeschreibung verfasst,
        die sich auch für Außenstehende nachvollziehen lässt.
        Wenn die SperrZeit nicht mehr Gültig ist wird sie und die Anzahl der
        versuche (logtry) zurück auf Null gesetzt. Danach erfolgt eine If
        Abfrage die nach dem Wert von logtry fragt, jedoch ist $row['logtry']
        nach dem löschen nicht mehr aktuell, da der Select VOR dem Update
        stattfindet. Die if abfrage bekommt also immernoch 3 obwohl logtry schon 0 ist.
        Was das Script auf die falsche Bahn führt.

        Jetzt wollte ich das problem umgehen in dem ich erst nach dem
        Löschen das SELECT für logtry mache. Doch dann hat $row['logtry']
        denn Wert 0 obwohl in der DB der Wert 2 eintragen ist.

        So hoffe das ist jetzt Verständlich, klar, Deutlich und
        für Aussenstehende verständlich.

        //Edit: Nein an $_POST['username'] liegt es nicht.

        Danke

        7th Freet
        Zuletzt geändert von 7th Freet; 20.02.2006, 16:38.

        Kommentar


        • #5
          Original geschrieben von 7th Freet
          Wenn die SperrZeit nicht mehr Gültig ist wird sie und die Anzahl der versuche (logtry) zurück auf Null gesetzt. Danach erfolgt eine If Abfrage die nach dem Wert von logtry fragt, jedoch ist $row['logtry'] nach dem löschen nicht mehr aktuell, da der Select VOR dem Update
          stattfindet. Die if abfrage bekommt also immernoch 3 obwohl logtry schon 0 ist.
          Dann gehe doch anders vor ...
          Code:
          SELECT ...
          $logtry = $row['logtry'];
          
          if(bedingung) {
             UPDATE ...
             $logtry = 0;
          }
          - und arbeite danach mit $logtry weiter ...
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Danke , funtzt prima.. nachdem ich einen fehler meinerseits behoben
            habe. Denn time !== '' ist nicht gleich mit time !== '0' . Das
            stach mir plötzlich in die Augen als ich den Code änderte.
            Trotzdem find ich deine Lösung komfortabler als meine.

            7th Freet

            Kommentar

            Lädt...
            X