• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Login mit MySQL-Abfrage funktioniert nicht

hallojs

Mitglied
Hallo,

Ich habe folgendes einfaches Login geschrieben, doch wenn ich es ausführen möchte bekomme ich immer diese Fehlermeldung: SELECT `benutzername`, `passwort` FROM benutzerdaten WHERE benutzername = 'Jonas'
Warning: mysql_num_rows() expects parameter 1 to be resource, object given in [...] on line 30

Nach einigem Suchen bin ich nun immer noch nicht auf meinen Fehler gestoßen. Kann mir vielleicht jemand helfen?
Schon einmal danke!!!

Hier mein Code:
PHP:
<?php
session_start();
ini_set('display_errors', 1);

error_reporting(E_ALL);
// Wenn Benutzername und Passwort ausgefüllt sind
if ( empty($_POST['benutzername']) == FALSE &&
     empty($_POST['passwort']) == FALSE)
{
    require_once ('konfiguration_login.php');

    $db_link = mysqli_connect ( MYSQL_HOST,
                                MYSQL_BENUTZER,
                                MYSQL_KENNWORT,
                                MYSQL_DATENBANK );

    // Wenn Verbindung zu DB erfolgreich
    if ( $db_link )
    {
        $benutzername = $_POST['benutzername'];
        $passwort = md5($_POST['passwort']);

        $sql = "SELECT benutzername, passwort
                FROM benutzerdaten
                WHERE benutzername = '$benutzername'";

        echo "{$sql}\n";

        $erg = mysqli_query($db_link, $sql);
        $anzahl = mysql_num_rows($erg);

        // Wenn ein Treffer bei Suche nach benutzername
        if ( $anzahl > 0 )
        {
            $benutzernamedb = mysql_result($erg, 0, 'benutzername');
            $passwortdb = mysql_result($erg, 0, 'passwort');

            /*Wenn benuzername und passwort aus dem Formular mit den Daten
            (benutzernamedb und passwortdb) aus der DB übereinstimmen*/
            if ( $benutzername == $benutzernamedb &&
                 $passwort == $passwortdb )
            {
                $_SESSION['benutzername'] = $benutzername;
                $_SESSION['login'] = TRUE;
            }
        }

    }
    else
    {
        die('keine Verbindung möglich: ' . mysqli_error());
    }

}
else if ( $_POST['hidden'] == "v")
{
    $text = htmlentities("Bitte füllen sie beide Felder aus!");
    echo $text;
}

if ( empty($_SESSION['benutzername']) == FALSE &&
     $_SESSION['login'] == TRUE )
{
    echo "Login erfolgreich";
}

ausgabe_formular ( $_POST['benutzername'],
                   $_POST['passwort'] );


//Funktionen
function ausgabe_formular( $benutzername,
                           $passwort )
{
    echo '<form name="" action="';
    echo $_SERVER['PHP_SELF'];
    echo '" method="POST" enctype="text/html">';

    echo '<p>Benutzername: ';
    echo '<input type="text" name="benutzername" value="';
    echo $benutzername;
    echo '" size="20"';
    echo 'maxlength="50" />';
    echo '</p>';

    echo '<p>Passwort: ';
    echo '<input type="password" name="passwort" value="';
    echo $passwort;
    echo '" size="20"';
    echo 'maxlength="50" />';
    echo '</p>';

    echo '<input type="hidden" name="hidden" value="v" />';

    echo '<input type="submit" name="Login" value="login" />';

    echo '</form>';
}

?>

Güße hallojs
 
Werbung:
Werbung:
Noch ein paar Tipps:
  1. Den Benutzernamen sollten du einmal durch mysqli_real_escape_string jagen
  2. Die Where-Bedigung kannst du mit dem Passwort erweitern, dann ersparst du dir den späteren Vergleich
  3. Füttere google mal mit "PHP_SELF xss"
  4. Wieso gibst du das Formular mit 'zig echo's aus?
 
Danke für die Tipps!
Besonders der dritte, habe ich doch gelesen das man es genau so machen soll.:(

Grüße hallojs
 
Tja, manche Tutorials sind leider Schrott und/oder sind nicht auf dem aktuellen Stand der Technik.
 
Werbung:
Zurück
Oben