我正在制作一个简单的密码重置表单,多亏了这里的大量帮助,我有了一些工作。但是,我想添加一个转折并将重置密码保存在 sha1 中。这是我的代码:
#password file
$password='something';
<?php
// Change password
$rawPassword = (isset($_REQUEST["change_pwd"]));
$salt = "lgv932q2e9dshufkdjgf927gf8hlo082";
$newpass = sha1($salt . $rawPassword);
$change_pass = exec('sed -i " . escapeshellarg("s/\$password=.*/\$password=\'$newpass\'/g")." include/conf.php');
echo "$change_pass";
?>
<form method="get" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input type="text" name="change_pwd" maxlength="41">
<input type="submit" name="Submit" value="Submit" />
</form>
当我提交新密码时,它没有正确更改文件中的 sha1 密码。而是每次将密码值更改为:
$password='356a192b7913b04c54574d18c28d46e6395428ab';
更新:我加盐了密码,我仍然得到相同的结果。(我也想知道除了使用 exec 和 sed 之外是否有更好的方法来做到这一点?)