Login-Script will einfach nicht

  • Ich habe ein Problem mit diesem Code:
    [php:1:96ec10da94]
    <?php
    session_start();

    // Variablen, die im ganzen Skript gebraucht werden
    $benutzername = $_POST['benutzername'];
    $benutzerpasswort = $_POST['benutzerpasswort'];

    // Funktion echo_login-error()
    function echo_login_error() {
    echo "<table width=\"100%\" bgcolor=\"#000000\" cellspacing=\"1\" cellpadding=\"5\">\n";
    echo " <tr>\n";
    echo " <td><b style=\"color:#ffffff;font-family:arial;font-size:12px;\">\n";
    echo " Fehler[/b]\n";
    echo " </td>\n";
    echo " </tr>\n";
    echo " <tr>\n";
    echo " <td bgcolor=\"#ffffff\" style=\"font-family:arial;font-size:12px;\">\n";
    echo " Bitte gehen Sie <a href=\"javascript:history.back()\">zur&uuml;ck</a> und korrigieren Sie Ihre Eingabe\n";
    echo " </td>\n";
    echo " </tr>\n";
    echo "</table>";
    }

    // Verbindung zur Datenbank herstellen
    include "dbconnect.inc.php";

    // Überprüfen, ob die Benutzerdaten gemacht wurden/übereinstimmen
    if (!($benutzername == "") AND !($benutzerpasswort == "")) {
    $sql = "SELECT benutzerid, benutzername, benutzerpasswort FROM benutzer WHERE benutzername = '$benutzername'";
    $result = mysql_query($sql) or die (mysql_error());
    $abfrage = mysql_num_rows($result) or die (mysql_error());
    if ($abfrage) {
    $benutzerdaten = mysql_fetch_assoc($result) or die (mysql_error());
    $benutzerpasswort = md5($benutzerpasswort);
    if (($benutzername == $benutzerdaten['benutzername']) AND ($benutzerpasswort == $benutzerdaten['benutzerpasswort'])) {
    echo "<a href=\"inside_index.php>weiter</a>\"";
    } else {
    echo_login_error();
    }
    } else {
    echo_login_error();
    }
    } else {
    echo_login_error();
    }
    ?>[/php:1:96ec10da94]
    Die Variablen $benutzername und $benutzerpasswort werden per POST aus einem Formular auf der vorigen Seite übergeben.
    Das Script arbeitet nicht so, wie es soll:
    1. Wenn man richtige Daten eingibt, wird die echo_error_login() aufgerufen
    2. Gibt man nichts ein, wird eine leere Seite angezeigt

    Ich denke, aus dem Code müsste man sehen, was das Script eigentlich (!) tun sollte.

    Ich hoffe, mir kann jemand helfen, mach schon lange daran rum.
    Danke schon im Voraus!

    Hier meine phpinfo():
    http://www.maucher-pm.de/info.html

  • Zitat von Pie

    1. Wenn man richtige Daten eingibt, wird die echo_error_login() aufgerufen


    ..wär intressant zu wissen, welchen von den 3 er ausgibt. geh mal auf fehlersuche. damit mein ich nicht, dass du den "code" durchackerst, sondern nach dem was-passiert-wenn-prinzipt vorgehst.

    außerdem kommt mit das:
    [php:1:a33efdb858]<?php
    if (!($benutzername == "") AND !($benutzerpasswort == ""))
    ?>[/php:1:a33efdb858]

    nicht ganz gut vor.... wie wärs mit if ($benutzer != "") oder (isset($benutzer))

  • Ok, werde mich mal um die Fehlermeldungen kümmern, gebe halt jeweils noch einen echo aus.

    Mit isset klappt's irgendwie net, aber ich probier's mit != ""

    edit:
    1. Habe jetzt von oben nach unten unter die drei echo_login_error echo "Fehler1", "Fehler2" oder "Fehler3" eingefügt

    Wenn ich die richtigen Daten angebe, erschein(en!) die Fehler 1 + 2
    Wenn ich nichts angebe, erscheint Fehler 3 - müsste ja stimmen
    Wenn ich Müll eingebe, erscheint die leere Seite

    2. Sollte ich die beiden != Vergleiche jeweils in Klammern setzen oder nicht? Ich kann da nämlich keinen Unterschied erkennen.

    edit: Habe jetzt folgendes gemacht, wegen dem isset, aber das Ergebnis ist nach wie vor das gleiche.
    [php:1:a4eff34bb4]<?php
    if (isset($benutzername) AND isset($benutzerpasswort)) {

    ?>[/php:1:a4eff34bb4]

  • [php:1:05ad86cea5]<?php
    #...
    $benutzerdaten = mysql_fetch_assoc($result) or die (mysql_error());
    $benutzerpasswort = md5($benutzerpasswort);
    if (($benutzername == $benutzerdaten['benutzername']) AND ($benutzerpasswort == $benutzerdaten['benutzerpasswort'])) {
    echo "<a href=\"inside_index.php>weiter</a>\"";
    } else {
    echo_login_error();
    #...
    ?>[/php:1:05ad86cea5]

    mach da eine while schleife drum rum.

    z.b. while ($benutzerdaten = mysql_fetch_assoc($resul)) {...

  • ...und das erste else lass weg

  • Hab's jetzt so, und jetzt kommt immer eine leere Seite

    [php:1:25a4a555be]
    <?php
    session_start();

    // Variablen, die im ganzen Script gebraucht werden
    $benutzername = $_POST['benutzername'];
    $benutzerpasswort = $_POST['benutzerpasswort'];

    // Funktion echo_login-error()
    function echo_login_error() {
    echo "<table width=\"100%\" bgcolor=\"#000000\" cellspacing=\"1\" cellpadding=\"5\">\n";
    echo " <tr>\n";
    echo " <td><b style=\"color:#ffffff;font-family:arial;font-size:12px;\">\n";
    echo " Fehler[/b]\n";
    echo " </td>\n";
    echo " </tr>\n";
    echo " <tr>\n";
    echo " <td bgcolor=\"#ffffff\" style=\"font-family:arial;font-size:12px;\">\n";
    echo " Bitte gehen Sie <a href=\"javascript:history.back()\">zur&uuml;ck</a> und korrigieren Sie Ihre Eingabe\n";
    echo " </td>\n";
    echo " </tr>\n";
    echo "</table>";
    }

    // Verbindung zur Datenbank herstellen
    include "dbconnect.inc.php";

    // Überprüfen, ob die Benutzerdaten gemacht wurden/übereinstimmen
    if (isset($benutzername) AND isset($benutzerpasswort)) {
    $sql = "SELECT benutzerid, benutzername, benutzerpasswort FROM benutzer WHERE benutzername = '$benutzername'";
    $result = mysql_query($sql) or die (mysql_error());
    $abfrage = mysql_num_rows($result) or die (mysql_error());
    if ($abfrage) {
    while ($benutzerdaten = mysql_fetch_assoc($result) or die (mysql_error())){
    $benutzerpasswort = md5($benutzerpasswort);
    if (($benutzername == $benutzerdaten['benutzername']) AND ($benutzerpasswort == $benutzerdaten['benutzerpasswort'])) {
    echo "<a href=\"inside_index.php>weiter</a>\"";
    }
    }
    } else {
    echo_login_error();
    } echo "Fehler2";
    } else {
    echo_login_error();
    echo "Fehler3";
    }

    ?>[/php:1:25a4a555be]

    Hab ich dich falsch verstanden?