2016-10-23 5 views
-1

Ich versuche, ein Login-Formular mit XML und PHP zu machen, aber immer bekomme ich einen Fehler. Meine HTML-Datei:XML PHP Login Fehler

<form action="login.php" method="post"> 
 
    <input type="text" name="username" /> 
 
    <br> 
 
    <br> 
 
    <input type="password" name="pass" /> 
 
    <br> 
 
    <br> 
 
    <input type="submit" value="Login!" /> 
 
</form>

Und meine PHP-Datei:

<?php 

$xml = simplexml_load_file('users.xml'); 
$usr = $_POST['username']; 
$pass = $_POST['pass']; 
if(empty($usr)) { 
    die('Please enter an username!'); 
} elseif(empty($pass)) { 
    die('Please enter a password!'); 
} 
$l_usr = null; 
$pass_e = md5($pass); 
foreach($xml->user->username as $username) { 
    if($username == $usr) { 
     $l_usr = $username; 
    } 
} 
if(empty($l_usr)) { 
    die('User Not Found!'); 
} 
if(!$xml->user->$l_usr->password == $pass_e) { 
    die('Wrong Password!!'); 
} 

echo 'Hello, '.$l_usr; 

Ist mein Codes. Es funktioniert nicht. Und users.xml-Datei ist wie folgt:

<users> 
<user> 
    <username>doruk.ayar</username> 
    <password>96b9c62c86f35c209c5b8c302ba34175</password> 
</user> 
<user> 
    <username>mina.alpturer</username> 
    <password>32250170a0dca92d53ec9624f336ca24</password> 
</user> 
<user> 
    <username>efe.gormus</username> 
    <password>32250170a0dca92d53ec9624f336ca24</password> 
</user> 
</users> 

Es funktioniert nicht. Wenn ich den korrekten Benutzernamen und das richtige Passwort schreibe, heißt es "User Not Found!". Kann mir jemand helfen?

HINWEIS: Das passiert:

doruk.ayar: 123pass 
efe.gormus: pass123 
mina.alpturer: pass123 
+0

any (special) Grund Sie nicht mit Hilfe einer Datenbank? es ist auch viel weniger Arbeit als Textdateien und sicherer. –

+0

Sie sollten auch nicht MD5 verwenden, Sie sollten diesen Code überhaupt nicht verwenden, nicht wenn es live geht oder bereits live ist. Du wirst ** gehackt werden. –

+0

Ignorieren Sie nicht meine Kommentare, wieder ... ** Sie werden gehackt werden ** dann werden Sie wieder weinen zu uns sagen: * "Meine Website wurde gehackt, was soll ich tun ?? !!" * –

Antwort

2

Ich habe Ihren Code debuggen und der Benutzer gefunden korrekt ist, aber ich habe einen anderen Fehler in folgenden Teil des Codes

if(!$xml->user->$l_usr->password == $pass_e) 

Diese Rückkehr immer NULL und Operator bemerkt „!“ hier ist nutzlos

$xml->user->$l_usr->password 

Ich habe es feste effizienter und korrekten Code zu schreiben

<?php 
$xml = simplexml_load_file('users.xml'); 
$usr = $_POST['username']; 
$pass = $_POST['pass']; 
if(empty($usr)) { 
    die('Please enter an username!'); 
} elseif(empty($pass)) { 
    die('Please enter a password!'); 
} 
$pass_e = md5($_POST['pass']); 
$valid=false; 
foreach($xml->user as $userNode) 
{ 
    if($userNode->username==$usr && $userNode->password==$pass_e) 
{ 
    $valid=true; 
    break; 
} 
} 

if($valid==false) 
{ 
    die('Wrong password or username'); 
} 

echo 'Hello, '.$usr; 
0

Sie Fehler in XML-Datei haben tag.you haben </users> schließen Tag verpasst

xml

<?xml version="1.0" encoding="UTF-8"?> 
<users> 
<user> 
    <username>doruk.ayar</username> 
    <password>96b9c62c86f35c209c5b8c302ba34175</password> 
</user> 
<user> 
    <username>mina.alpturer</username> 
    <password>32250170a0dca92d53ec9624f336ca24</password> 
</user> 
<user> 
    <username>efe.gormus</username> 
    <password>32250170a0dca92d53ec9624f336ca24</password> 
</user> 
</users> 

Aktualisiert

<?php 

$xml = simplexml_load_file('users.xml'); 

echo "<pre>"; 
print_r($xml); 
$usr = $_POST['username']; 
$pass = $_POST['pass']; 
$pass_e = md5($pass); 


foreach($xml->user as $username) { 

    if($username->username == $usr && $username->password==$pass_e) { 
     echo "user found"; 
     break; 
    } else{ 
    echo 'user not found'; 
    } 
} 




?> 
+0

Funktioniert immer noch nicht. –

+0

Welchen Fehler erhalten Sie – iCoders

+0

Es wird gesagt, Benutzer nicht gefunden, aber eigentlich schreibe ich den richtigen Benutzernamen und korrigieren pass –