Login mit PHP und MySql

PHP:
$sql = "SELECT name FROM user WHERE name='$user' AND password='$passwd' LIMIT 1";

Also wenn ich mich nicht irre Liest du nur das Feld name aus der tabelle user aus aber suchst den eintrag nach dem usernamen und den passwort raus. mach mal aus name *, also:

PHP:
$sql = "SELECT * FROM user WHERE name='$user' AND password='$passwd' LIMIT 1";

EDIT: Achja, oder du machst es per name und suchst das feld nur nach den namenr aus, dann kannst du einem user auch sagen ob es den usernamen nicht gibt oder er nur ein falsches pw eingegeben hat.

EDIT2: mhm.... ok, daran lags nicht was ich sagte. wird an deiner datenbank liegen. ich habs grad mal getestet und dein script funktioniert bei mir. überprüf nochmal alle namen und evtl. ob das gespeicherte pw auch wirklich md5 verschlüsselt ist.
 
Zuletzt bearbeitet:
Die MySql - Datenebnak sieht so aus:

Datenbank logintest

Tabellenstruktur für Tabelle user
Feld Typ Null Standard
id tinyint(4) Ja NULL
Name varchar(20) Ja
Password char(32) Ja

Daten für Tabelle user
1 test test

Ich habe das nach dem Tutorial von http://tut.php-quake.net/ gemacht.
Dort ist es allerdings nicht ausfürlich mit für php-MyAdmin erklärt.

Ich arbeite mit phpMyAdmin - 2.11.1.
Da gibt es soviele Funktionen...kann mir mal einer erklären wie ich was wo genau einstellen muss?
 
Also, ich geh mald avon aus bei den daten ist der name tets und das passwort test. und da liegt der fehler, das passwort in der datenbank ist nicht md5 verschlüsselt. in deinem script verschlüsselst du das passwort mit md5 und vergleicht es dann mit dem in der datenbank. also entweder du verschlüsselt das passwort noch ind er datenbank, oder du nimmst die md5 verschlüsselung aus dein script raus.
d.h. du machst aus
PHP:
$passwd = md5($_POST['passwd']);

das hier:

PHP:
$passwd = $_POST['passwd'];

dann müßte es gehen.
 
Zurück