私は簡単なパスワード リセット フォームに取り組んでいます。ここで多くの助けを借りて、何かが機能しています。ただし、ひねりを加えて、リセットパスワードを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';
更新:パスワードをソルトしましたが、それでも同じ結果が得られます。(sed で exec を使用する以外に、これを行うためのより良い方法があるかどうかも疑問に思っています。)