PHP strcmp没有正确比较

时间:2015-01-12 04:50:42

标签: php string webserver

我有一个用PHP编写的简单登录脚本,当我运行它时,应该比较彼此的2个密码哈希值。这是我正在使用的代码;

$UUID = $_POST['UUID'];
$pass = $_POST['pass'];

// finds the same user where the uuid is the same as the one given in the post request
$query  = "SELECT * FROM users WHERE UUID = '$UUID'";
$result = mysql_query($query) or die(mysql_error());

//gets the info
while($row = mysql_fetch_assoc($result)) {
    $Password = $row['UUIDPass']; // gets the hashed password from the server
    $salt = $row['salt']; // gets the salt from the server
}

// hashes the given password with the salt from the MYSQL server
$passcheck = hash("sha256", $pass . $salt);

// checks if the hashed password above is the same as the hash in the server
if (strcmp($Password, $passcheck))
{
    echo "Correct!";
}
else
{
    echo "Something went wrong!";
}

所以我在这里做的是,我正在比较用户给出的服务器密码。有什么问题?

2 个答案:

答案 0 :(得分:2)

这里有一个例子

<?php

    if(strcmp("Hello","Hello"))
    {
      echo "Match";
    }
    else
    {
       echo "No Match";
    }
?>

No Match因为您的检查不正确,因为成功的返回值为0,您必须使用

if(strcmp("Hello","Hello")==0)

也可以从手册本身确认

<强> strcmp

  

返回&lt;如果str1小于str2,则为0; &GT;如果str1大于str2则为0,如果它们相等则为0。

答案 1 :(得分:-2)

确保为加密使用相同的哈希值 你也必须在每个阶段都使用echo。 strcmp()函数在php中运行良好。