编辑其他用户的用户信息

埃德玛尔

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

场景:我们具有用户类型ADMINNORMAL USER,我创建了edit.php来将用户帐户作为ADMIN进行编辑以防丢失密码等。但是当我单击特定表中的Edit按钮时,我遇到了问题。

参见下面的图片,我以admin身份employee.php登录到此处。所以我选择ID为22的用户testFN 在此处输入图片说明

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

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

当我单击EDIT按钮时,它将打开带有该URL的页面edit.php在此处输入图片说明

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

在此处输入图片说明

我以前用于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注入漏洞。这是非常不好的事情。您将要使用查询参数和准备好的语句。这是开始阅读的好地方

  2. 真的会想检查是否已登录用户被授权来编辑指定的用户,允许他们这样做了。任何用户都可以手动添加/更改查询字符串值或POST值,或者基本上可以添加/更改来自客户端的任何内容。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章