好吧所以我正在运行一个重置密码脚本,它应该用sha1哈希版本password01
替换密码如果成功它应该返回成功消息,如果不是那么失败消息,但它返回失败消息天气它是否有效它始终如一!有任何想法吗?我已经插入了以下代码:
<?php
session_start();
$host= $_SESSION["dbhost"];
$username= $_SESSION["dbuser"];
$password= $_SESSION["dbpass"];
$db_name= $_SESSION["dbname"];
$tbl_name="users"; // Table name
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$userid = $_POST['id'];
$password = 'password01';
$hashpass = sha1($password);
//$result = mysql_query("SELECT password FROM $tbl_name WHERE id='$userid'");
$sql=mysql_query("UPDATE $tbl_name SET password='$hashpass' where id='$userid'");
if (mysql_query($sql)) {
echo "<ul id='breadcrumbs-one'>";
echo "<li><a href=''>Users</a></li>";
echo "<li><a href='' class='current'>Reset</a></li>";
echo "</ul>";
echo "<div class='tn-box tn-box-color-3 mcenterlow'>";
echo "<p>The Opperation was Sucessful!<br><a href='?users'>Add Another?</a></p>";
echo "<div class='tn-progress'></div>";
echo "</div>";
}
else {
echo "<ul id='breadcrumbs-one'>";
echo "<li><a href=''>Users</a></li>";
echo "<li><a href='' class='current'>Reset</a></li>";
echo "</ul>";
echo "<div class='tn-box tn-box-color-1 mcenterlow'>";
echo "<p>The Opperation was Not Sucessful!<br><a href='?users'>Try Again?</a></p>";
echo "<div class='tn-progress'></div>";
echo "</div>";
}
?>
答案 0 :(得分:1)
您的代码调用mysql_query()两次,一次使用实际的SQL字符串,再次使用第一次调用返回的结果值!因此,由“if”检查的第二个调用总是失败;它不是有效的SQL。
我想你想说点什么
$sql = "UPDATE $tbl_name SET password='$hashpass' where id='$userid'";
if (mysql_query($sql)) {
// etc.
答案 1 :(得分:1)
除了您的问题下方的评论之外,您if
失败的原因是,您对mysql_query
的另一次调用结果使用了mysql_query
。
要解决这个问题,您应该将条件更改为:
if ($sql) {
(对于UPDATE
查询,mysql_query
成功时返回true
,失败时返回false
你应该用准备好的语句和绑定变量切换到PDO(或mysqli)来摆脱你的sql注入问题。
答案 2 :(得分:1)
您将$sql
设置为等于mysql_query("UPDATE $tbl_name SET password='$hashpass' where id='$userid'");
的结果。在UPDATE语句中,mysql_query
返回一个布尔值。您在mysql_quert($sql)
声明中被称为if
。这在逻辑上是不正确的,因为您检查了mysql_query(<bool>);
的结果,因为$ sql是查询的结果。
或者:
$sql=mysql_query("UPDATE $tbl_name SET password='$hashpass' where id='$userid'");
if ($sql) {
或
$sql = "UPDATE $tbl_name SET password='$hashpass' where id='$userid'";
if (mysql_query($sql)) {
马特