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

Login FUnktioniert einfach nicht

Ich möchte jetzt mal etwas klar stellen.
Ich weiß, wie man PHP programmiert. Ich kann nichts dafür, dass der Login von heute auf Morgen nicht funktioniert.

Ich habe folgendes Script angewandt:
PHP:
EINGESETZT AB ZEILE 24
if (isset ($_REQUEST["login"]))
{
$md5_password = md5($password);
$res = mysql_query("SELECT * FROM wehab_login WHERE name = '" . mysql_real_escape_string($name) . "' and '" . mysql_real_escape_string($md5_password) . "'") or die(mysql_error());
if (mysql_num_rows($res) === 1)
      {
      echo "Eingeloggt!";
            echo $res;
      }
      else
      {
      echo "FEHLER! Benutzername oder Kennwort falsch!";
      echo $res;
      }
      }
      ?>

Ausgegeben wird, wie gesagt, Resource id #2
 
Sorry, aber ich habe über mindestens 10 Posts vergeblich versucht, dir zu erklären, wie du den Query-String ausgibst. Also praktisch, wie man den Wert einer Variablen ausgibt. Das sind die Grundlagen der Grundlagen. Dann schreibst du im Code noch etwas völlig anderes, als ich zwei- oder dreimal gepostet habe. Da kann ich schlicht und ergreifend nichts mehr machen. ;)
 
Ich habe bereits gepostet, dass ich alle Variablen ausgegeben habe. Und es schlich tund ergreifend, bei der Passwört übergabe hakt
 
„Eingeloggt“ soll ausgeben werden, wird aber nicht ausgegeben. Das bedeutet, dass die Bedingung drumrum nicht erfüllt ist. (Angenommen, $_REQUEST['login'] ist gesetzt, aber davon bin ich jetzt ausgegangen. Falls das nicht der Fall ist, wird der Code überhaupt nicht erreicht.)

PHP:
if (mysql_num_rows($res) === 1)
      {
      echo "Eingeloggt!";
      }

Das bedeutet also, die Query gibt nicht genau einen Datensatz zurück.

Da hielt ich es für sinnvoll, herauszufinden, was die Query zurückgibt.

Dazu ist es sinnvoll, die Query unabhängig vom Code auszuführen (etwa in phpMyAdmin).

Dazu ist es sinnvoll, den fertigen Query-String, den das Script erzeugt, ausgeben zu lassen, um ihn kopieren zu können.
 
Mh, verstehe.
Aber im Prinzip klappt es ja.ALso, beim korrekten Passwort werde ichauch eingeloggt. Aber, sobald irgendwas mit 3 stellen eingetippt wird, ist man auch eingeloggt, bei 4 stellen oder mehr, nicht
 
Wie gesagt, mein Gedanke wäre dazu, dir die Query ausgeben zu lassen und mal zu gucken, was sie für bestimmte Abfragen (mit 3 Zeichen, mit mehr Zeichen, …) genau an Daten liefert.
 
Danke für die Hilfe.
Ich weiß allerdings jetzt nicht, wie ich den Query ausgeben lasse?
Also, wenn ich $res ausgebe, kommt ja immernoch das gleiche. Welche Variable muss ich ausgeben?

Ich weiß, du verlierst langsam die Geduld, hab verständnis
 
Du hast diesen Code im Beitrag 21 gezeigt:

PHP:
[..]$res = mysql_query("SELECT * FROM wehab_login WHERE name = '" . mysql_real_escape_string($name) . "' and '" . mysql_real_escape_string($md5_password) . "'") or die(mysql_error());
if (mysql_num_rows($res) === 1)[..]
Das SQL-Statement ist dabei genau das:

Code:
SELECT * FROM wehab_login WHERE name = '" . mysql_real_escape_string($name) . "' and '" . mysql_real_escape_string($md5_password) . "'
Alles andere ist php-Code.

Änder den o.g. Code mal in

PHP:
[..]$sql = "SELECT * FROM wehab_login WHERE name = '" . mysql_real_escape_string($name) . "' and '" . mysql_real_escape_string($md5_password) . "'";
$res = mysql_query($sql) or die(mysql_error());
if (mysql_num_rows($res) === 1)[..]
Dadurch steht das SQL-Statement in einer extra Variable die dann an mysql_query() zur Ausführung übergeben wird.

Um das SQL-Statement für dich ausgeben zu lassen ergänze nun einfach ein echo von $sql. Also:

PHP:
[..]$sql = "SELECT * FROM wehab_login WHERE name = '" . mysql_real_escape_string($name) . "' and '" . mysql_real_escape_string($md5_password) . "'";
echo $sql;
$res = mysql_query($sql) or die(mysql_error());
if (mysql_num_rows($res) === 1)[..]
Dann siehst Du bei der nächsten Loginabfrage dieses Statement in deiner Seite. Kopiere es, führe es im phpmyadmin aus. Dann müsstest Du sehen wie viele Ergebnisse dabei herauskommen.
 
Krass,
wenn ich das Dreistellige Passworte eintippe, gibts garkein Ergebnis.
Wenn ich aber das korrekte Passwort eingebe, kommt dann nur meine Spalte
 
Ab Post #21 fehlt da übrigens ein "password =" in der Query.

Wenn ich's nicht besser wüsste, würde ich so langsam sagen, dieser Thread ist ein (geglückter) Trollversuch. Nehmt's mir nicht übel.

Es ist kaum möglich, zu Fantasiecode etwas zu sagen.
 
Jetzt erstmal ein riesiges Dankeschön, dass du mich so gut unterstützt hast.
Um so Dümmer der Fehler:
Habe für das MD5 Passwort nur 30 Zeichen Platz in der Datenbank gegeben, demnach wurde es nicht exakt gespeichert
 

Neueste Beiträge

Zurück
Oben