[英]PHP: change password
我正在為我的網站實現密碼更改功能。 不幸的是,它不起作用。
在.html文件中我得到了代碼:
<form method='post' >
<td>Old Password:</td>
<td><input name='oldpw' type='password' required='required'/></td>
<tr>
<td>New Password:</td>
<td><input name='newpw' type='password' required = 'required' /></td>
<tr>
<td>Confirm Password:</td>
<td><input name='conpw' type='password' required = 'required' /></td>
<td>
<input type='submit' value='Change Password' />
</td>
</tr>
</form>
在account.php文件中我寫了這個:
if (isset($_POST['newpw'])){
$pw=$dbc->query("select passwort from kundenaccount where accname= '" . $_SESSION['accname'] . "';")
$row = $pw->fetch_object()
$pawo = $row->passwort
if (md5($_POST['oldpw']) == $pawo){
if ($_POST['newpw']==$_POST['conpw']){
$dbc->query("UPDATE accname SET passwort='" . md5($_POST['newpw']) . "' WHERE accname='" . $_SESSION['accname'] . "';")
}
else { echo "Passwords do not match" }
}
else { echo "Wrong password entered"}
}
有誰看到我的錯誤? 我試圖解決這個問題,因為幾天...
希望有人可以提供幫助
謝謝
在表單上試試這個:
<form method='post' action='account.php'>
更新:
我經歷了為我的數據庫制作腳本,工作正常。 在需要時更改值:
<?php
$dbc = new mysqli("localhost", "db-user", "db-pass", "db-name");
if (isset($_POST['newpw'])){
$pw=@$dbc->query("select passwort from kundenaccount where accname= '" . $_SESSION["accname"] . "'");
$row = $pw->fetch_object();
$pawo = $row->password ;
if (md5($_POST['oldpw'])== $pawo){
if ($_POST['newpw']==$_POST['conpw']){
@$dbc->query("UPDATE kundenaccount SET passwort='" . md5($_POST['newpw']) . "' WHERE accname='" . $_SESSION['accname'] . "'");
}
else { echo "Passwords do not match"; }
}
else { echo "Wrong password entered";}
}
?>
if ($_POST['oldpw']==md5($pawo))
應該
if (md5($_POST['oldpw']) == $pawo)
md5是單向哈希,所以你不能撤消它,你應該比較另一種方式。
if (md5($_POST['oldpw'])==$pawo){
注意:MD5不被認為是安全的,我會升級到其他一些算法..
解決問題的另一種方法
<?php
include ('connect_db.php');
if(isset($_POST['submit']))
{
$oldpw = $_POST ['oldpw'];
$newpw = $_POST ['newpw'];
$retypepw = $_POST ['retypepw'];
$sql = mysql_query("SELECT * FROM users WHERE password = '$oldpw'") or die (mysql_error());
if ($sql)
{
$row = mysql_fetch_array($sql);
extract ($row);
if ($oldpw <> $password) {
echo "Passwords dont match";}
else
if ($newpw == $retypepw){
$update = mysql_query("UPDATE users SET password = '$newpw' WHERE password = '$oldpw' ") or die (mysql_error());
if($update)
{
echo "Successfully changed password"; }
}
else { echo "Password dont match";}
}
}
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.