2016-04-18 19 views
0

Ich mache eine PHP-Anmeldung und es hat vorher funktioniert, aber ich habe versucht, das Benutzername-Feature unabhängig von Groß- und Kleinschreibung zu machen, und der Code hat seitdem nicht funktioniert. Ich habe alle Sachen gelöscht, die ich hinzugefügt habe, um zu versuchen, es case-insensitive zu machen, d. Strtolower(). Alles, was auf der Seite angezeigt wird, ist "Bitte geben Sie einen Benutzernamen und ein Passwort ein." aber ich habe eine html-datei, die erscheinen soll und die login anzeigen soll. Hier ist der Code (habe ich die persönliche Datenbank Informationen in der mysql heraus verbinden Bereich):PHP Login-Problem; unbekannt

<?php 

session_start(); 

$username = $_POST["username"]; 
$password = $_POST["password"]; 

if ($username&&$password) 
{ 
    $connect = mysql_connect("","","") or die("No Database"); 
    mysql_select_db("") or die("Couldn't find database"); 

    $query = mysql_query("SELECT * FROM login WHERE  username='$username'"); 

$numrows = mysql_num_rows($query); 

if($numrows !=0) 

{ 
    while ($row = mysql_fetch_assoc($query)) 
    { 
     $dbusername = $row['username']; 
     $dbpassword = $row['password']; 
    } 
    if ($username==$dbusername&&$password==$dbpassword) 
    { 
     echo "Login succesful. <a href='/memberarea.php'>Members</a>"; 
     $_session['username']=$dbusername; 

    } 
    else 
     echo "Incorrect Password"; 
} 

else 
    die("Username does not exist"); 
} 
else 
    die("Please enter a username and password."); 

?> 
+0

Sie sind weit offen [** SQL-Injection **] (https://www.owasp.org/index.php/SQL_Injection). Fügen Sie auch einige Leerzeichen in Ihren Code ein. '$ username && $ password' ist unglaublich schwer zu lesen. –

+0

Sehen Sie einen Fehler, der das nur auf die Seite bringt? http://prntscr.com/atldqb –

+0

Sie müssen auch die Seite vor dieser, die den Benutzernamen und das Passwort akzeptiert, wie es dort ein Fehler dort ist, dass es nicht die $ -POST-Parameter festgelegt werden soll. (Oh, und das Speichern des Benutzernamens in einem Session-Cookie ist eine * sehr * schlechte Idee!) –

Antwort

0

ich mysql_real_escape_string() um Ihre Post Werte gesetzt haben, um SQL-Injection

auch zu verhindern mysqli ist die neueste Art und Weise zu verbinden zu mySQL-Datenbank, aber hinzugefügt habe ich nicht, dass, um Ihren Code:

session_start(); 

$username = mysql_real_escape_string($_POST["username"]); 
$password = mysql_real_escape_string($_POST["password"]); 

if ($username&&$password) 
{ 
    $connect = mysql_connect("","","") or die("No Database"); 
    mysql_select_db("") or die("Couldn't find database"); 

    $query = mysql_query("SELECT * FROM login"); 

    while ($row = mysql_fetch_assoc($query)) 
    { 
     $dbusername = $row['username']; 
     $dbpassword = $row['password']; 

    if ($username == $dbusername && $password == $dbpassword) 
    { 
     echo "Login succesful. <a href='/memberarea.php'>Members</a>"; 
     $_session['username']=$dbusername; 

    } 
    } 

    else { 
     echo "Incorrect Password"; 
    } 
} 
+0

Warum haben Sie die Abfrage ohne WHERE-Klausel verwendet? Wenn Sie 1000 Daten haben und Ihre Übereinstimmung die letzte sein wird, wird diese "while" -Schleife 999 mal durchführen, was nutzlos ist. –