Login-System mit PHP und MYSQL

@matze
das versteh ich ja aber er ist auch null wen er einen passenden eintrag gefunden haben sollte. ich weiß net irgedwas stimmt da nicht und ich weiß net was.
 
@alexbot

Zwischen sollen und haben ist leider ein großer Unterscheid.

Dein Passwort hast du aber schon mit vor dem Speichern in der Datenbank mit md5 verschlüsselt oder?

Weil wenn dies nicht der fall sein sollte, dann ist es auch kein Wunder, dass er nichts findet, da du ja das Passwort bei der Abfrage mit md5 verschlüsselst.

Weshalb arbeitest du den eigentlich mit dem REQUEST?

Aus Sicherheitsgründen würde ich bei Logins nur mit POST und SESSION arbeiten, da diese Inhalte nicht einfach mit der Adresszeile weitergegeben bzw. eingegeben werden können.

Mit folgendem kannst du dir übrigens das gesamte Array ausgeben lassen:

PHP:
echo nl2br(print_r($_POST, true));

Ich habe dir noch dein Script mal so überarbeitet, wie ich es verwenden würde:

PHP:
$sql ="SELECT ID, Benutzer, Vorname, Nachname FROM otb_infologin WHERE
        Benutzer = '".$_POST['coname']."' AND  
        Kennwort = '".md5 ($_REQUEST['pass'])."' LIMIT 1";
  echo $sql;
  $result = mysql_query($sql) OR DIE (mysql_error());
  echo $result;
  $data=mysql_fetch_assoc($result);
  if($data['ID'] != NULL) 
  {
        $_SESSION["user_id"] = $data["ID"];
        $_SESSION["user_benutzer"] = $data["Benutzer"];
        $_SESSION["user_vorname"] = $data["Vorname"];
        $_SESSION["user_nachname"] = $data["Nachname"];
        header ("Location: intern.php");
        } 
        else 
        { 
        header ("Location: formular.php?fehler=1"); 
        } 
        
?>

Die HEADER dürften aber nicht funktionieren, solange du davor noch die ECHO´s hast, da diese an vorher keine andere Ausgabe an den Browser erlauben.

Gruß Matze202.
 
Zuletzt bearbeitet:
@Matze danke, ich glaub du hast grad meinen Fehler gefunden, denn genau diese md5 verschlüsselung hab ich nicht vorgenommen, sondern das passwort so wie auch die anderen benutzer information einfach in phpmyadmin erstellt. kennst du einen methode wie ich so auch das passwort md5 verschlüsseln kann ohne das direkt mit php zu machen?
gruß alex
 
@alexbot,

du wirst leider das Passwort mit md5() verschlüsselt abspeichern müssen, dazu lässt du es dir einmal anzeigen:

PHP:
echo md5('deinpasswort');

dann trägst du es in die Datenbank ein und schon kannst du das verschlüsselte Passwort überprüfen.

Vergiss aber nicht, bei der Registration auch das Passwort verschlüsselt einzutragen, sonst haben deine User genau das selbe Problem.

md5 ist übrigens eine Art der Verschlüsselung, welche nicht direkt entschlüsselt werden kann, sondern man nur im Verschlüsselten Modus vergleichen kann.

Gruß Matze202.
 
@ matze hab grad gefunden wie ich die md5 auch in phpmyadmin hinbekomme

Kann ich denn die Funtion des Feldes Kennwort denn schon im vorhinein auf md5 stellen oder geht das nur wenn ich ne neue Zeile zu tabelle hinzufüge
 
@alexbot

Wenn du dies z.B.: für ein Forum brauchst, wo dieser User sich damit gleichzeitig einlogen soll, dann kannst du es z.B. auch wie folgt verwenden.

$_SESSION['pass'] = md5($_POST['pass']);

Somit kannst du das $_SESSION['pass'] sowohl in der Dateinbankabfrage der Seite verwenden, oder auch in anderen Unterseiten, so vielleicht fertige Scripte verwendet sind.

Diese sollten aber ebenfalls die md5-Verschlüsselung verwenden und du solltest bei der Registrierung der User diese Daten automatisch mit in deren User-Tabelle eintragen.

Gruß Matze202.
 
@Matze
Erstmal Danke das du so fleißig antwortest. DANKE.
jetzt sind die Passwörter in der tabelle verschlüsselt, genauso wie die wenn ich die eingebe und mir mit echo anzeigen lass. aber die die If schleife spricht immer noch nicht an, sondern geht über else in die abruchbedingung auch wenn name und passwort 100% richtig sind. Es geht weder mit deinem vorschlag einfach die ID zu nehmen , noch mit mysql_num_rows., vielleicht weißt du ja noch rat.
gruß alex
 
@Matze
Erstmal Danke das du so fleißig antwortest. DANKE.
jetzt sind die Passwörter in der tabelle verschlüsselt, genauso wie die wenn ich die eingebe und mir mit echo anzeigen lass. aber die die If schleife spricht immer noch nicht an, sondern geht über else in die abruchbedingung auch wenn name und passwort 100% richtig sind. Es geht weder mit deinem vorschlag einfach die ID zu nehmen , noch mit mysql_num_rows., vielleicht weißt du ja noch rat.
gruß alex

Was gibt er dir aus, wenn du mein Beispiel verwendest und am Dateiende ein:

PHP:
echo $data['ID'];

einträgst?

Gruß Matze202.

PS.: Hast du auch das Feld in der Tabelle mit einem großen ID benannt und bei den anderen Einstellungen Extra = "auto_increment" und das Radio des Primärschlüssels aktiviert?
 
@ Matze
Der Witz ist er gibt mir gar nix aus , bei echo $data['ID'];

Zu deinem PS.: Ja hab ich alle gemacht. ID, auto_inc., und primärschlüssel

So sieht die Tabelle zum diesem Zeitpunkt aus wenn ich mir sie bei phpmyadmin per sql ausgeben lasse.
SO:
SQL-Abfrageergebnis
Host:
Datenbank:
Erstellungszeit: 21. April 2007 um 12:57
Erstellt von: phpMyAdmin 2.5.1
SQL-Befehl: SELECT * FROM `otb_infologin` LIMIT 0, 30;

ID Benutzer Vorname Nachname Kennwort
1 matt Matt Hart 51dc30ddc473d43a6011
3 jo nils harris 8ff32489f92f33416694

wenn ich mir mysql_num_rows per echo anzeigen lasse und vorher über das vormular zum beispiel Benutzer = matt und passwort = peter eingeb sagt er mir mysql_num_rows ist gleich null. obwohl der abgleich über md5 gleich ist. also er mir peter richtig in md5 übergibt und es mit dem in der tabelle übereinstimmt
 
Zuletzt bearbeitet:
poste bitte nochmal wie der Quelltext bei dir aussieht und das mit dem mysql_num_rows kannste weglassen, da es sich bei dem Login sowieso nur um einen handelt und das mysql_num_rows sonst alle übereinstimmenden nur zählen würde.

Besser ist es, wenn du wie von mir mit eingetragen das LIMIT 1 drin hast, denn somit nimmt er auch wirklich nur einen eintrag und nicht 2e, was ja eigentlich nicht vorkommen dürfte, aber man weiß ja nie.

Gruß Matze202.
 
Zurück