2016-10-23 163 views
-1

我正在嘗試使用XML和PHP創建登錄表單,但始終出現錯誤。我的HTML文件:XML PHP登錄錯誤

<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>

我的PHP文件:

<?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; 

是我的代碼。它不工作。 users.xml文件是這樣的:

<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> 

它不工作。當我編寫正確的用戶名和密碼時,它會顯示「未找到用戶!」。有人能幫我嗎?

注:通行證:

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

你不使用數據庫的任何(特殊)的原因嗎?它也比文本文件少得多,並且更安全。 –

+0

你也不應該使用MD5,你不應該使用這個代碼,而不是如果它已經上線或已經生效。你**會被黑客入侵。 –

+0

不要忽視我的意見,再次... **你會被黑客攻擊**然後你會回來向我們說:「我的網站被黑了,我該怎麼辦?!!」* –

回答

2

我已經調試你的代碼和用戶正確地找到,但我注意到在你的代碼

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

這種回報總是NULL和運營商的以下部分另一個錯誤「!」這裏沒用

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

,我已經修復它編寫更有效和更正確的代碼

<?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

你在XML文件中的錯誤tag.you已經錯過了結束標記</users>

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> 

更新

<?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

仍然無法正常工作。 –

+0

你得到什麼錯誤 – iCoders

+0

這是說用戶沒有找到,但實際上我正在寫入正確的用戶名和正確的傳球 –