2014-01-21 172 views
1

我正在爲我的網站設置用戶註冊的步驟。我有這樣PHP hash()函數爲不同的輸入返回相同的值

<form action="registrate-user.php" method="POST"> <br/> 
    Username: <input type="text" id="username" name="username" value=""> <br/> 
    E-mail: <input type="text" id="email" name="email" value="Secret"> <br/> 
    Password: <input type="password" id="password" value=""><br/> 
    <input id="registratebutton" type="submit" value="Register"> 
</form> 

一種形式,像這樣

<?php 

    $username = $_POST['username']; 
    $email = $_POST['email']; 
    $password = $_POST['password']; 

    $hashedpass = hash('md5', $password); 

    echo $username . " " . $email . " " . $hashedpass; 

?> 

但是,當我輸入不同的密碼相同的值是呼應的接收器!爲什麼是這樣?

+2

表單元素必須具有'name'屬性才能從瀏覽器傳遞到網絡服務器....所以你沒有得到任何以$ _POST ['password']傳遞的東西....所以你總是散列相同的空值 –

+0

學習時嬰兒的腳步很好,但是應該單獨使用'md5'。它被認爲是不安全的密碼存儲。只是一個快速的「FYI」;-) –

+0

哦,好吧,我明白。發佈它作爲答案,我會接受它作爲解決方案。 @ Fred-ii-你建議我使用哪種算法? – user3195417

回答

4

$ _POST數組填充在具有屬性,而不是ID形式的所有字段,你的密碼輸入有沒有之一。您可以通過回顯未加密的密碼來確認。

要解決你的問題,只需添加name =「密碼」就像你在其他領域做的那樣。

<form action="registrate-user.php" method="POST"> <br/> 
    Username: <input type="text" id="username" name="username" value=""> <br/> 
    E-mail: <input type="text" id="email" name="email" value="Secret"> <br/> 
    Password: <input type="password" id="password" name="password" value=""><br/> 
    <input id="registratebutton" type="submit" value="Register"> 
</form> 

另外看看PHP中的新功能password_hash,它比MD5好。

+0

+1用於推薦password_hash –

相關問題