在真正的后台管理中管理员可以修改用户的很多信息。如果开放权限,管理员连用户的用户名这些信息都可以修改掉。
在真正的操作中,往往是:
选择要修改的用户
修改相关内容
在做用户列表页的时候,我们已经向大家完整的展示过了如何在列表中显示编辑用户和删除用户的功能。
从列表中点击选择要修改的用户,应该有一个专门的页面来显示需要修改的内容。我们在上面的第二张图中也为大家做了展示。
可是代码实现的时候如何把用户信息放进来呢?
edit.php展示用户信息
实现过程:
一. 我们可以将用户的ID在get中进行传参,得到用户信息。使用SQL语句将用户信息查询出来。
<?php if (is_numeric($_GET['id'])) { $id = (int) $_GET['id']; } $sql = "select id,username from user where id = " . $id; $result = mysqli_query($conn, $sql); $data = mysqli_fetch_assoc($result); ?>
二、将用户的信息分配到form表单中。当用户点击提交时,我们在update.php提交用户在form表当中修改的值。因为在update中修改的where条件中需要指定修改哪个用户。所以,我们在input隐藏表单中放入用户的ID。当点击提交的时候,隐藏的ID也会传入到update页面中。
用户名通常是不让修改的。因此,我在username这一个input表单最后增加了一个:readonly参数,不准修改用户名。
代码如下:
<form action="update.php" method="post"> 用户名:<input type="text" name="username" value="<?php echo $data['username'];?>" readonly><br /> 密码:<input type="password" name="password"><br /> <input type="hidden" value="<?php echo $data['id'];?>" name="id" /> <input type="submit" value="提交"> </form>
update.php修改操作用户数据
实际上,我们只能够修改用户的密码。有两种情况:
1.用户修改了密码
2.用户没有修改密码
其实我们可以欺骗前面的不懂技术的普通操作员。
1.如果他没有修改密码,也给他提示成功
2.如果他修改了用户的密码。我们真正的修改掉用户的密码,也提示修改成功。
获取用户ID和密码
我们实现的过程当中需要获取用户ID。不然update语句生成的时候,没有where条件会将整个表的数据全部修改掉的。
密码之前是用md5存储的。因此,用户修改了密码,密码也应该用md5来存储。
$id = (int)$_GET['id']; $password = md5(trim($_POST['password']));
生成SQL语句
将用户ID和密码放至到修改的SQL语句中,发送至MySQL服务器执行。即完成了修改密码的操作。
$sql = "update user set password='" . $password . "' where id = $id"; $result = mysqli_query($conn, $sql); if ($result) { echo '修改成功'; }
整体代示演示
在form表单中显示用户信息的源代码
<?php if (is_numeric($_GET['id'])) { $id = (int) $_GET['id']; } $sql = "select id,username from user where id = " . $id; $result = mysqli_query($conn, $sql); $data = mysqli_fetch_assoc($result); ?> <form action="update.php" method="post"> 用户名:<input type="text" name="username" value="<?php echo $data['username'];?>"><br /> 密码:<input type="password" name="password"><br /> <input type="hidden" value="<?php echo $data['id'];?>" name="id" /> <input type="submit" value="提交"> </form> <?php mysqli_close($conn); ?>
update.php修改的源代码
<?php include 'connection.php'; $id = (int) $_POST['id']; if (trim($_POST['password'])) { $password = md5(trim($_POST['password'])); $sql = "update user set password='" . $password . "' where id = $id"; } else { echo '修改成功'; } $result = mysqli_query($conn, $sql); if ($result) { echo '修改成功'; }