Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP和SQL—试图更改用户登录数据,但什么都不做_Php_Sql_Mysqli_Input - Fatal编程技术网

PHP和SQL—试图更改用户登录数据,但什么都不做

PHP和SQL—试图更改用户登录数据,但什么都不做,php,sql,mysqli,input,Php,Sql,Mysqli,Input,我正在尝试创建一个表单,允许管理员更改用户的密码。我用它在页面上创建表单。第一个允许删除并且可以正常工作,第二个应该是将新密码从表单发送到一个函数,该函数将发送到我将在下面发布的post函数 echo <<<_END <pre> username $row[0] role $row[2] </pre> <form action="admin2.php" method="post"> <input type="hidden"

我正在尝试创建一个表单,允许管理员更改用户的密码。我用它在页面上创建表单。第一个允许删除并且可以正常工作,第二个应该是将新密码从表单发送到一个函数,该函数将发送到我将在下面发布的post函数

echo <<<_END
  <pre>
username $row[0]
role $row[2]
 </pre>
  <form action="admin2.php" method="post">
  <input type="hidden" name="delete" value="yes">
  <input type="hidden" name="username" value="$row[0]">
  <input type="submit" value="DELETE RECORD"></form>

  <pre>password <input type="text" name = "password"></pre>
  <form action="admin2.php" method="post">
  <input type="hidden" name="change" value="yes">
  <input type="hidden" name="username" value="$row[0]">
  <input type="submit" value="CHANGE PASSWORD">

_END;
if (isset($_POST["edit"]))
{
    if(isset($_POST["username"], $_POST["password"])){
      $username   = get_post($connection, 'username');
      $password   = get_post($connection, 'password');
      $query  = "UPDATE users  SET password='$password' WHERE username='$username'";
      $result = $connection->query($query);

      if (!$result) echo "UPDATE failed: $query<br>" .
         $connection->error . "<br><br>";
      }
}
echo错误。“

”; }
页面加载,但当我按下按钮时,后端没有任何更改。有什么想法吗

编辑: 好的,在进行了上面链接的更改之后,它确实会更改密码,但只有当它是表中的最后一个条目时才会更改。否则,它只会删除它下面的表中的条目

echo <<<_END
  <pre>
username $row[0]
role $row[2]
 </pre>
  <form action="admin2.php" method="post">
  <input type="hidden" name="delete" value="yes">
  <input type="hidden" name="username" value="$row[0]">
  <input type="submit" value="DELETE RECORD"></form>

  <pre>password <input type="text" name = "password"></pre>
  <form action="admin2.php" method="post">
  <input type="hidden" name="change" value="yes">
  <input type="hidden" name="username" value="$row[0]">
  <input type="submit" value="CHANGE PASSWORD">

_END;
if (isset($_POST["edit"]))
{
    if(isset($_POST["username"], $_POST["password"])){
      $username   = get_post($connection, 'username');
      $password   = get_post($connection, 'password');
      $query  = "UPDATE users  SET password='$password' WHERE username='$username'";
      $result = $connection->query($query);

      if (!$result) echo "UPDATE failed: $query<br>" .
         $connection->error . "<br><br>";
      }
}
if(isset($\u POST['delete'])和&isset($\u POST['username']))
{
$username=get_post($connection,'username');
$query=“从用户名为“$username”的用户中删除”;
$result=$connection->query($query);
如果(!$result)回显“删除失败:$query
”。 $connection->error.“

”; }
您需要做的是,将密码输入到第二个表单标记中。如下所示(要编辑的按钮名称):


......
由于表单未在post请求中发送密码,admin2.php无法读取密码post

更改PHP代码的步骤如下:

if(设置($\u POST[“编辑”]))
{
如果(isset($\u POST[“用户名”],$\u POST[“密码”])){
$username=get_post($connection,'username');
$password=get_post($connection,'password');
$query=“更新用户设置密码='$password',其中用户名='$username';
$result=$connection->query($query);
如果(!$result)回显“更新失败:$query
”。 $connection->error.“

”; } }

您的问题是,在一个php脚本中运行两个表单,因此需要区分哪个表单引用哪个php代码块。如果您在一个PHP脚本上使用相同的名称(包括按钮)运行两个表单,那么服务器将从包含名称的第一个PHP脚本运行。

可能在
$\u POST
中没有设置某些内容。您能看到日志中的任何错误吗?我看不到任何错误。我不确定我还需要在
$\u POST
中设置什么。我在上面做了一个编辑,我想它是正确的,但现在它删除了它下面的条目,而不是更改我在表单声明中添加的密码。然后它开始处理我上面描述的问题,这就是我的新问题,我的delete函数也使用post,出于某种原因,Change密码正在删除表中它下面的条目。如果设置为删除,则删除代码运行。如果设置为“编辑”,请运行“编辑代码”。您输入的密码超出了表单标记的范围,因此表单不会将密码值发送到php。移动密码不会修复它,它仍在删除。我将在上面发布我的删除代码,但它应该与我能说的分开。因为您的第一个PHP是从用户名和密码读取的。删除PHP,put if(isset($\u POST[“delete”])。在删除html表单时,将按钮名称更改为“删除”。我很困惑。在PHP中,我已经有了用于delete的if-isset语句,当我按下密码按钮时,delete从未被调用,所以它不可能被调用。
if (isset($_POST["edit"]))
{
    if(isset($_POST["username"], $_POST["password"])){
      $username   = get_post($connection, 'username');
      $password   = get_post($connection, 'password');
      $query  = "UPDATE users  SET password='$password' WHERE username='$username'";
      $result = $connection->query($query);

      if (!$result) echo "UPDATE failed: $query<br>" .
         $connection->error . "<br><br>";
      }
}