mysql_fetch_array - Probleme

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

  • mysql_fetch_array - Probleme

    Guten morgen,

    ich hab mich jetzt hier schon mal ein bisschen durchgewühlt durch das Thema, aber ich komm trotzdem nicht auf einen grünen Zweig damit.

    Normal nutze ich das mysql_fetch_array nur in einer while-Schleife. Hier bekomm ich es damit aber irgendwie nicht funktionstüchtig hin.

    Ausschnitt aus der functions.inc
    PHP-Code:
        function anzahlen($abfragez) { 
            
    $ergebnis mysql_query("SELECT COUNT(*) AS anzahl FROM ".$abfragez);
        
    $row mysql_fetch_array($ergebnis);
            return 
    $row['anzahlen']; 
        } 
    Ich habe da einen Login erstellt und nutze diese Abfrage eben um zu garantieren, dass nicht zu oft in einem bestimmten Zeitraum falsch eingeloggt wurde.

    Problem hierbei ist, dass angeblich meine Zeile mit dem mysql_fetch_array angeblich fehlerhaft sein soll.
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in .../functions.inc.php on line 12
    Hier mal den Code der bei der Weiterleitung dann eben den Fehler ausspuckt.
    PHP-Code:
                    <?php
                
    if(isset($_REQUEST["submit"])) { // Wenn Formular abgeschickt
                        
    if(exist("mitglieder_dom WHERE name = '".strip_tags($_REQUEST["name"])."' AND passwort = '".md5($_REQUEST["passwort"])."'") && anzahlen("login WHERE ip = '".getenv("REMOTE_ADDR")."' AND erfolgreich =   'nein' AND timestamp > '".(time()-60*30)."'") < 4) { // Wenn Mitglied mit dem Namen und Passwort existiert! und wenn keine falschen logins in den letzten 30 Min. Wieso? um die Seite sicherer zu machen sonst können bruteforcer leicht hacken!
                          
    $eintragen mysql_query("INSERT INTO login_dom (name, ip, timestamp, erfolgreich) VALUES ('".strip_tags($_REQUEST["name"])."', '".getenv("REMOTE_ADDR")."', '".time()."', 'ja')"); // Eintrag in Login
                
                          
    $abfrage "SELECT id FROM mitglieder_dom WHERE name = '".strip_tags($_REQUEST["name"])."' LIMIT 0,1";
                          
    $ergebnis mysql_query($abfrage);
                              while(
    $row mysql_fetch_object($ergebnis))
                               {
                                  
    $_SESSION["login"] = $row->id// Login
                               
    }
                          echo 
    "<meta http-equiv=\"refresh\" content=\"0\"; URL=\"member.php\">"// Weiterleitung 
                      
    } else { // Wenn falsch eingeloggt
                          
    $eintragen mysql_query("INSERT INTO login_dom (name, ip, timestamp, erfolgreich) VALUES ('".strip_tags($_REQUEST["name"])."', '".getenv("REMOTE_ADDR")."', '".time()."', 'nein')"); // Eintrag in Login!
                    
    echo "Login schlug fehl.";
                       } 
                } 
    ?>
    Wahrscheinlich stell ich mal wieder grunddämlich an und seh den offensichtlichen Fehler nicht, aber ich sitz da jetzt schon ein paar Tage dran und bekomms einfach nicht richtig hin. Login alles funktioniert, nur das wird mir als Fehler ausgegeben.

    Danke fürs drübersehen und ich würde mich wirklich freuen, wenn mir da wer helfen kann.

    Liebe Grüße

  • #2
    Problem hierbei ist, dass angeblich meine Zeile mit dem mysql_fetch_array angeblich fehlerhaft sein soll.
    Die Zeile ist fehlerbehaftet, weil der vorhergehende Query fehlgeschlagen ist.

    mysql_error() könnte dir sagen, was da falsch läuft.


    AS anzahl
    ...........
    return $row['anzahlen'];
    anzahlen ist nicht das gleiche wie anzahl
    Wir werden alle sterben

    Kommentar


    • #3
      Vielen Dank, an error-Ausgabe in dem Fall hab ich nich gedacht. Ich hab bei der Tabelle nen Buchstaben vergessen... darauf wär ich nie gekommen >.>

      Vielen Dank für die schnelle Hilfe

      Kommentar


      • #4
        Du solltest auch deine Sicherheitslücken stopfen. Es fehlt überall das SQL-Escaping.

        Verwende kein $_REQUEST, sondern $_GET oder $_POST (GET um Daten abzufrageben, POST um Daten zu verändern).

        Die mysql_* Funktionen sind veraltet und werden in naher Zukunft aus PHP entfernt. Verwende stattdesse mysqli oder PDO.

        Kommentar


        • #5
          Ok, danke werd mich da mal einlesen

          Kommentar

          Lädt...
          X