PHP-Problem
|
Verfasser |
Nachricht |
|
Beiträge: 287
Registriert seit: Feb 2012
Status:
offline
|
PHP-Problem
Guten Abend,
ich habe gerade ein kleines Problem.
Und zwar möchte ich mir mit PHP und MySQL ein kleines Login Script inkl. Registrierung realisieren.
Das Registrierungs Script hab ich schon, funktioniert auch einwandfrei.
Aber bei dem Login-Script hakts richtig. Es kommt ständig die Fehlermeldung, dass die Daten falsch wären.
Hier ein Bild der MySQL Datenbank:
So sieht meine register.php aus:
<?php include('mysql_connect.php'); //Formular-Daten übermittlung an die Variablen if(isset($_POST['username'])) $username=$_POST['username']; if(isset($_POST['password'])) $password=md5($_POST['password']); if(isset($_POST['password2'])) $password2=md5($_POST['password2']); if(isset($_POST['email'])) $email=$_POST['email']; if(isset($_POST['name'])) $name=$_POST['name']; //Prüfen ob die Variablen einen Wert enthalten if(isset($username,$password,$password2,$email,$name)) { //Prüfen ob die Formular-Felder leer sind if($username=="" OR $password=="" OR $password2=="" OR $email=="" OR $name=="") { echo 'Bitte füllen Sie alle Felder aus!'; } else { //Prüfen ob die beiden Passwörter übereinstimmen if($password==$password2) { //MySQL-Abfrage, ob der eingegebene Benutzername bereits vorhanden ist //Anschließende Abfrage der Spalte. $result = mysql_query("SELECT id FROM login WHERE username LIKE '$username'"); $menge = mysql_num_rows($result); //Prüfen ob keine Spalte mit dem Benutzername vorhanden ist. if($menge==0) { //Wenn ja, in die Tabelle username, password, email und name eintragen //Anschließende speicherung des Ergebnises in die Variable $eintragen $eintrag = "INSERT INTO login (username, password, email, name) VALUES ('$username', '$password', '$email', '$name')"; $eintragen = mysql_query($eintrag); //Prüfen ob erfolgreich gespeichert wurde if($eintragen==true) { echo 'Sie haben sich erfolgreich registriert und können sich nun einloggen!'; } else { echo 'Registrierung fehlgeschlagen, bitte versuchen Sie es erneut!'; } } else { echo 'Benutzername wird bereits verwendet, bitte versuchen Sie es erneut!'; } } else { echo 'Die Passwörter müssen übereinstimmen!'; } } } ?>
Und so sieht im Moment die login.php aus:
<?php session_start(); include('mysql_connect.php'); mysql_select_db('test') or die('Die Datenbank konnte nicht ausgewählt werden!');
if(isset($_POST['username'])) $username=$_POST['username']; if(isset($_POST['password'])) $password=md5($_POST['password']); if(isset($_POST['password2'])) $password2=md5($_POST['password2']);
if(isset($username,$password,$password2)) {
if($username=="" OR $password=="" OR $password2=="") { echo 'Bitte füllen Sie alle Felder aus!'; exit; } $query_ergebnis = mysql_query("SELECT username, password FROM login WHERE username LIKE '$username' LIMIT 1"); $row = mysql_fetch_object($query_ergebnis); if($row->password == $password) { $_SESSION['username'] = $username; echo 'Willkommen',$username,',Sie haben sich erfolgreich eingeloggt.'; } else { echo 'Die eingegebenen Daten waren leider falsch, versuchen Sie es bitte erneut!'; }
}
?>
Bitte helft mir .
Ich komm da einfach nicht mehr weiter...
MfG
On the 8th day, god created Linux.
|
|
02.10.2012 21:40 |
|
|
Beiträge: 3.413
Bewertung: 33
Registriert seit: Oct 2010
Status:
offline
|
|
02.10.2012 21:44 |
|
|
Beiträge: 287
Registriert seit: Feb 2012
Status:
offline
|
RE: PHP-Problem
Das mit md5 hab ich auch zuerst gedacht, aber ich lasse es als md5 eintragen und vergleichen.
Ich weiß das es nicht sicher ist, soll auch nur zur Übung sein, da ich mir gerade PHP aneigne .
On the 8th day, god created Linux.
|
|
02.10.2012 21:49 |
|
|
Beiträge: 71
Bewertung: 0
Registriert seit: Jul 2012
Status:
offline
|
RE: PHP-Problem
Ok da sollten ein paar kleine sachen geändert werden.
ich fange mal mit der Datenbank an:
Ich sehe das Problem, dass das passwort Feld zu klein ist. eine md5 summe hat mehr als 25 zeichen. Hier mal ein bsp 68e2ee4fecb8e89aaa54f11835b35f95.
Des weiteren solltest du die eingaben welche durch die Eingabefelder kommen erst mal überprüfen, da man sonst SQL-Injections durchführen kann. Das tust du unteranderem mit [Link: Registrierung erforderlich] .
Danach würde ich die MYSQL befehle noch bisschen ändern. Du hast bisher "INSERT INTO login (username, password, email, name) VALUES ('$username', '$password', '$email', '$name')"; aber besser währe es per "INSERT INTO login (`username`, password, email, name) VALUES ('$username', '$password', '$email', '$name')"; . Also damit gemeint sind die `spaltenname` so aussehen sollten.
Solltest du die datenbank von 25 Zeichen auf 32 geändert haben wenn ich mich nicht verzählt habe sollte es nun gehen aber natürlich erst neues passwort welches nicht abgeschnitten wurde setzen.
Gruß Marco
|
|
02.10.2012 22:02 |
|
|
Beiträge: 287
Registriert seit: Feb 2012
Status:
offline
|
RE: PHP-Problem
Vielen Dank Marco .
Jetzt geht es einwandfrei .
Ich bin so blöd ^^
Ein einfacher Leichtsinnsfehler ^^
MfG
On the 8th day, god created Linux.
|
|
02.10.2012 22:11 |
|
|