0
<?php
date_default_timezone_set('Asia/Kolkata');
$xmlfile='xml/adminpwd.xml';
$xml = simplexml_load_file($xmlfile);

if (!empty($_POST['password'])) {
    extract($_POST);
    if($adminpwd!='this')
        $error="Incorrect Password. Enter the correct password.";
}
?>

<form method='post' action='' name='admin'>
<h3 style="color: #798196;">Enter Current Password</h3><br/>
        <input type='password' name='adminpwd' />
        <input type='submit' name='password' value='Enter'>
</form>

这是我的脚本。

当我尝试这个时:

<?php
    if (isset($error))
        echo "<br/><h3 class='error'>".hash('sha512', $adminpwd)."</h3><br/>";
?>

我得到输出: de784a6d81e125ff2223d977683c3efdd4513941d3737861008b8358d10e8d2757963c3a2619d0924a70d0e11b53492847f741af6e767388fd395c170508d79

但是当我尝试这个时:

<?php
    if (isset($error))
        echo "<br/><h3 class='error'>".hash('sha512', $_POST['adminpwd'])."</h3><br/>";
?>

我得到输出: 1fc286c9c7dc733b3a46a21a923c646c14c19bac951d63380ec8d4b3c6786fdbe7dd4bd325eef31553fa829e19989fe060da01921cfc68f7b9ff03383f78710b

尽管两个变量都包含相同的字符串。为什么输出不同?

4

1 回答 1

3

它不同的唯一方法是 $_POST['adminpwd'] 中的内容不是完全相同的字符串值。可能由于您没有检查 $adminpwd,因此可能不是每次都设置它。

此外,在 $_POST 或任何其他请求变量上使用 extract() 并不是非常安全,因为您实际上是在允许用户创建 PHP 变量。

于 2013-08-04T00:14:48.890 回答