PHP和SQL—试图更改用户登录数据,但什么都不做
我正在尝试创建一个表单,允许管理员更改用户的密码。我用它在页面上创建表单。第一个允许删除并且可以正常工作,第二个应该是将新密码从表单发送到一个函数,该函数将发送到我将在下面发布的post函数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"
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>";
}
}