编辑其他用户的用户信息

Edit User Information for other user

抱歉,我是 PHP MYSQL 的初学者。 我想问一下这将如何运作。我可以知道如何解决这个问题或我将添加什么代码吗?

场景: 我们有用户类型 ADMINNORMAL USER, 我创建了 edit.php 来编辑用户帐户作为 ADMIN 以防丢失密码等,但是当我单击“编辑”按钮时出现问题具体来说 table。

见下图,我以管理员身份登录这里,employee.php。 所以我选择id为22的用户testFN

我在这里用来获取 id 的代码在这里:

<td><a href="edit.php?id=<?php echo $row['user_id']; ?>" >Edit</a></td>

当我单击 EDIT 按钮时,它将打开页面 edit.php,其中 url

所以我的结果不等于我想要的,输入框的信息来自我 using/logged 的用户,而不是我选择编辑的用户。

我用来EDIT.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']; ?>"

$userRow从何而来?这个:

$userRow=mysql_fetch_array($res);

使用什么查询来获取数据?这个:

$res=mysql_query("SELECT * FROM accounts WHERE user_id=".$_SESSION['user']);

所以...您专门从登录会话用户获取数据,而不是查询字符串中指定的数据。只需使用查询字符串值而不是会话值。

重要提示:

  1. 直接在 SQL 查询中使用用户提供的值称为 SQL 注入漏洞。这是一件非常糟糕的事情。您将要使用查询参数和准备好的语句。 This is a good place to start reading.

  2. 真的想要检查登录用户是否授权编辑允许他们这样做之前指定的用户。任何用户都可以手动 add/change 查询字符串值或 POST 值或基本上来自客户端的任何内容。