我的更改密码脚本有问题。你能帮我解释一下这段代码吗?它应该工作,但它不起作用。点击提交按钮后,页面就会刷新。
<?php
session_start();
require_once 'dbconnect.php';
if (isset($_POST['ulozitzmeny']) && ($_SESSION['user']) && strlen($_SESSION['user']) > 0) {
$password = hash('sha512', mysql_real_escape_string($_POST['heslo']));
$newpassword = hash('sha512', mysql_real_escape_string($_POST['noveheslo']));
$passwordconf = hash('sha512', mysql_real_escape_string($_POST['potvrzenihesla']));
$res = mysql_query("SELECT password FROM users WHERE username='$_SESSION[user]'");
$row = mysql_fetch_array($res);
if ($password != $row[0]) {
echo" <div style='position:absolute;left:29.5%;top:10%;width:41%;' class='alert alert-danger fade in'>
<a href='#' class='close' data-dismiss='alert' aria-label='close'>×</a>
<strong>Chyba!</strong> Nesprávné heslo!
</div>";
} else {
if ($newpassword != $passwordconf) {
echo" <div style='position:absolute;left:29.5%;top:10%;width:41%;' class='alert alert-danger fade in'>
<a href='#' class='close' data-dismiss='alert' aria-label='close'>×</a>
<strong>Chyba!</strong> Hesla se neshodujĂ!
</div>";
} else {
if (mysql_query("UPDATE users SET password='$newpassword' WHERE username = '$_SESSION[user]'")or die(mysql_query)) {
echo" <div style='position:absolute;left:29.5%;top:10%;width:41%;' class='alert alert-success'>
<a href='#' class='close' data-dismiss='alert' aria-label='close'>×</a>
<strong>Úspěch!</strong> Změny proběhly úspěšně!
</div>";
}
}
}
}
?>
答案 0 :(得分:2)
请检查您的表单标签。从我在http://pastebin.com/9FCsebpt看到的那个。我注意到缺少两个必要的属性。
Clip Subviews
在表单中更正这些内容,并确保您的代码能够正常运行。
答案 1 :(得分:1)
我认为错误发生在此请求中
"SELECT password FROM users WHERE username='$_SESSION[user]'"
如果您使用数组来获取数据,则需要在密钥周围放置'
。
请尝试此请求,而不是:
"SELECT password FROM users WHERE username='".$_SESSION['user']."'"