2015-02-23 57 views
1

我试图建立散列与PHP的密码,我的代码来设置密码哈希选中是:PHP集哈希是不一样的,与斯威夫特应用

$user = $_POST['email']; 
$pass = $_POST['password']; 
$hashed = hash("md5", $pass); 
$sql = "UPDATE Users set password=" . $hashed . " where email=" . email; 

这将设置我想要的散列版本的密码。 但是,当我尝试检查,使用:

$user = $_POST['email']; 
$pass = $_POST['password']; 
$hashed = hash("md5", $pass); 
$sql = "SELECT * FROM Users where email=" . $user . " and password=" . $hashed; 

具有完全相同的输入,代码不返回任何东西。有谁知道为什么?我不确定它是否相关,但我正在使用Swift应用程序进行发布。

+0

您是否证实'$ pass'和$ $ hashed'在两种情况下都是相同的,并且/或者它们有何不同?这段代码实际上应该是一个SQL语法错误,因此我会假设这不是你的*实际*代码。此外,不要使用MD5来散列密码,请使用'password_hash' API。 – deceze 2015-02-23 04:44:05

+0

@Ealau看到我的答案,如果它解决了你的问题,不要忘记检查是否正确;-) – 2015-02-26 19:23:43

回答

0
$user = $_POST['email']; 
$pass = $_POST['password']; 
$hashed = hash("md5", $pass); 
$sql = "UPDATE Users set password='" . $hashed . "' where email='" . email . "'"; 


$user = $_POST['email']; 
$pass = $_POST['password']; 
$hashed = hash("md5", $pass); 
$sql = "SELECT * FROM Users where email='" . $user . "' and password='" . $hashed . '''; 
0

这两个SQL语句在两个字符串周围缺少引号。我没有看到mysqli_ *或PDO代码来实际执行$ sql语句。