Php 编辑其他用户的用户信息
对不起,我是PHP MYSQL的初学者。 我想问一下这将如何工作。我可以知道如何修复此问题,或者我将添加什么代码吗 场景: 我们有用户类型ADMIN和普通用户, 我创建了edit.php,以在密码丢失等情况下作为管理员编辑用户帐户。但我遇到的问题是当我单击特定表中的编辑按钮时 见下图,我以管理员的身份登录到这里,employee.php。 因此我选择id为22的用户testFN 我在这里用来获取id的代码如下:Php 编辑其他用户的用户信息,php,mysql,post,get,sql-update,Php,Mysql,Post,Get,Sql Update,对不起,我是PHP MYSQL的初学者。 我想问一下这将如何工作。我可以知道如何修复此问题,或者我将添加什么代码吗 场景: 我们有用户类型ADMIN和普通用户, 我创建了edit.php,以在密码丢失等情况下作为管理员编辑用户帐户。但我遇到的问题是当我单击特定表中的编辑按钮时 见下图,我以管理员的身份登录到这里,employee.php。 因此我选择id为22的用户testFN 我在这里用来获取id的代码如下: <td><a href="edit.php?id=<?ph
<td><a href="edit.php?id=<?php echo $row['user_id']; ?>" >Edit</a></td>
当我单击编辑按钮时,它将打开带有此url的页面EDIT.php
因此,我认为结果不等于我想要的,输入框中的信息来自我正在使用/登录的用户,而不是我选择编辑的用户
我用来编辑.PHP的代码如下:
<?php
session_start();
include_once 'dbconnect.php';
if(!isset($_SESSION['user']))
{ header("Location: edit.php"); }
$res=mysql_query("SELECT * FROM accounts WHERE user_id=".$_SESSION['user']);
$userRow=mysql_fetch_array($res);
if(isset($_GET['user'])) {
$id = $_GET['user'];
if(isset($_POST['submit'])) {
$pass = md5(mysql_real_escape_string($_POST['pass']));
$aFName = mysql_real_escape_string($_POST['aFName']);
$aLName = mysql_real_escape_string($_POST['aLName']);
$aMName = mysql_real_escape_string($_POST['aMName']);
$aContact = mysql_real_escape_string($_POST['aContact']);
$aAddress = mysql_real_escape_string($_POST['aAddress']);
$aGender = mysql_real_escape_string($_POST['aGender']);
$utype = mysql_real_escape_string($_POST['utype']);
$query3=mysql_query("UPDATE accounts SET pass='$pass', agentFName ='$aFName', agentLName = '$aLName',
agentMName = '$aMName', agentContact = '$aContact', agentAddress = '$aAddress',
agentGender = '$aGender', user_type = '$utype' ");
if($query3)
{ header("Location: home.php"); }
}//end of post sumbit
}//end of GET
?>
/** HTML IS HERE **/
Agent ID: <input type="text" id="agentCode" name="agentCode" required="required" value="<?php echo $userRow['user_id']; ?>" >
First Name: <input type="text" id="agentCode" name="aFName" required="required" value="<?php echo $userRow['agentFname']; ?>" >
Middle Name: <input type="text" id="agentCode" name="aMName" required="required" value="<?php echo $userRow['agentMname']; ?>" >
Last Name: <input type="text" id="agentCode" name="aLName" required="required" value="<?php echo $userRow['agentLname']; ?>" >
这是为该文本输入设置值的地方:
value="<?php echo $userRow['user_id']; ?>"
使用什么查询来获取数据?这:
$res=mysql_query("SELECT * FROM accounts WHERE user_id=".$_SESSION['user']);
所以。。。您专门从登录的会话用户而不是查询字符串上指定的用户获取数据。只需使用查询字符串值而不是会话值
重要提示:
在SQL查询中直接使用用户提供的值称为SQL注入漏洞。这是一件非常糟糕的事情。您需要使用查询参数和准备好的语句
在允许登录用户编辑指定用户之前,您确实需要检查该用户是否有权编辑指定用户。任何用户都可以手动添加/更改查询字符串值、POST值或基本上来自客户端的任何内容
$\u SESSION['user']
的值是多少?@Fred ii-user\u id是用户的id,它是一个字符串?我没有问列名,我问的是会话数组值是多少。@Fred ii-否,它是INT(自动递增)。如果它不起作用,请使用错误报告和mysql\u error()
检查错误,并/或询问David;他在下面给了你一个答案。现在基本上我无法控制;-)这个dbconnect.php
是未知的。很抱歉,我还是php MySQL的初学者,关于授权访问的条件,我知道我会有这个条件。我想做的是,我以管理员的身份登录,我想编辑特定的用户。然后显示登录的用户信息,而不是输入值中的用户信息。$userRow与$query@Edmhar:对,这是因为您从数据库而不是指定的用户获取登录的用户信息。获取查询字符串用户ID的信息,而不是会话用户ID。(另外,您可能需要仔细检查UPDATE
语句。如果没有WHERE
子句,它将更新每个用户记录。)谢谢,我现在添加了WHERE user\u ID='user',对吗?但是仍然不知道如何编辑我想要的特定用户。@edmar:为了获取有关用户的信息以及将该信息保存回数据库,您需要有一个指定用户ID的WHERE
子句。用户ID是您从$\u get[]
集合中获得的。我不知道该怎么解释。如果有一个用户ID为的变量,只需使用该变量即可。(重要提示:在准备好的语句中将其用作查询参数,不要像现在那样将其添加到字符串中。)
$res=mysql_query("SELECT * FROM accounts WHERE user_id=".$_SESSION['user']);