抱歉,我是PHP MYSQL的初学者。我想问一下这将如何工作。我可以知道如何解决此问题,还是要添加什么代码?
场景:我们具有用户类型ADMIN和NORMAL 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']);
所以...您是从登录的会话用户那里获取数据,而不是从查询字符串中指定的数据获取数据。只需使用查询字符串值而不是会话值即可。
重要的:
直接在SQL查询中使用用户提供的值称为SQL注入漏洞。这是非常不好的事情。您将要使用查询参数和准备好的语句。这是开始阅读的好地方。
你真的会想检查是否已登录用户被授权来编辑指定的用户,允许他们这样做了。任何用户都可以手动添加/更改查询字符串值或POST值,或者基本上可以添加/更改来自客户端的任何内容。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句