更改密码问题

时间:2014-09-29 12:31:19

标签: php mysqli

无法弄清楚问题。问题从**开始,以**结束,问题就在它之后。请帮我修改我的代码,好像有太多问题。很抱歉。

   <?php
    include 'core/login.php'; 
    include 'core/init.php';    
    include 'includes/head.php';    
    if(count($_POST)>0) {
    $result = mysqli_query("SELECT *from users WHERE id='" . $_SESSION["id"] . "'");

    $row=mysqli_fetch_array($result);

    if($_POST["currentPassword"] == $row["password"]) 
    {
          mysqli_query("UPDATE users set password='" . $_POST["newPassword"] . "' WHERE id='" . $_SESSION["id"] . "'");
          $message = "Password Changed";
    } 
    else 
          $message = "Current Password is not correct";
    }

&GT;

我得到的错误是:

expects 2 parameters, 1 given / 1 parameter to be mysqli result, null given
undefined variable result
undefined currentpassword
undefined new password / expects 2 parameters, 1 given

4 个答案:

答案 0 :(得分:1)

mysqli_query函数要求第一个参数是MySQLi链接标识符。在您的代码中,第一个参数是SQL语句(即字符串)。

mysqli_connect()函数返回一个链接标识符,您可能在init.php脚本中使用了该函数。

示例:

$link = mysqli_connect("localhost", "root", "", "info");
$result = mysqli_query($link, $sql);

答案 1 :(得分:1)

让我们首先阅读错误消息:

  

需要2个参数,1个给定/ 1参数为mysqli结果,null给定

因此该函数需要2个参数。你提供它......

mysqli_query("SELECT *from users WHERE id='" . $_SESSION["id"] . "'")

一个参数。 mysqli_query()也需要给出连接对象:

mysqli_query($connection, "SELECT *from users WHERE id='" . $_SESSION["id"] . "'")

(或任何连接对象的名称)

  

未定义的变量结果

创建$result的操作失败,因此使用$result的任何操作也都会失败。

  

undefined currentpassword

这表明POST数据不包含您要查找的值。在尝试使用它之前,您可以使用isset()来确定某个值是否存在。

  

未定义的新密码/预期2个参数,1给定

与上述相同的问题。

此外,还有两个问题你没有注意到......

"UPDATE users set password='" . $_POST["newPassword"] . "' WHERE id='" . $_SESSION["id"] . "'"
  1. 您的代码 SQL injection attacks 开放。
  2. 存储user passwords in plain text
  3. 这些都是 非常糟糕的事情 ,应立即修复。

答案 2 :(得分:0)

您的mysqli_query不正确,它需要第二个参数,即连接字符串。尝试这样的事情:

$con = mysqli_connect("HOST","USERNAME","PASSWORD","DATABASE");

mysqli_query($con, "SELECT *from users WHERE id='" . $_SESSION["id"] . "'")

答案 3 :(得分:0)

使用此代码修复它...现在唯一的问题是它没有改变。至少错误已经消失,现在只会玩它。

<?php
    include 'core/login.php'; 
    include 'core/init.php';    
    include 'includes/head.php';    
    if(count($_POST)>0) {
    $result = mysqli_query($link, "SELECT *from users WHERE id='" . $_SESSION["id"] . "'");
    $row=mysqli_fetch_array($result);
    if($_POST["currentpassword"] == $row["password"]) {
    mysqli_query("UPDATE users set password='" . $_POST["newpassword"] . "' WHERE id='" . $_SESSION["id"] . "'");
    $message = "Password Changed";
    } else $message = "Current Password is not correct";
    }
?>