Sponsor-Board.de

Normale Version: PHP-Problem
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
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:

[attachment=1121]

So sieht meine register.php aus:

PHP-Code:
<?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-Code:
<?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 Smile.
Ich komm da einfach nicht mehr weiter...

MfG

du musst das Passwort aus der Datenbank auch mit md5() vergleichen edit: (oops, falsch gesehen)

das Skript ist aber nicht wirklich sicher, nebenbei
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 Wink.
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 Wink aber natürlich erst neues passwort welches nicht abgeschnitten wurde setzen.

Gruß Marco
Vielen Dank Marco Smile.
Jetzt geht es einwandfrei Smile.
Ich bin so blöd ^^
Ein einfacher Leichtsinnsfehler ^^

MfG
Referenz-URLs