抱歉,我之前问过一个与此相关的类似问题,但我修复了代码(我认为)以使其完全针对管理员和!普通用户帐户。
管理员和用户一起共享成员列表页面。不同之处在于:管理员得到类似的东西
Edit | Delete | Make Admin
这是您最需要查看的基本代码....
if(@$_GET['id'] != ""){
if (has_access($session_user_id, 1) === false) {
header('Location: index.php');
exit();
}
$userID = intval($_GET['id']);
if (!$userID) {
header('Location: index.php');
die();
}
$sql = "DELETE FROM users WHERE user_id='".$userID."'";
$query = mysql_query($sql);
header('Location: members.php?id=&page=1');
}
让我解释一下代码的不同部分:
if(@$_GET['id'] != ""){
if (has_access($session_user_id, 1) === false) {
header('Location: index.php');
exit();
}
.....continued
这就是说,如果 url 中的 id 不等于“”,请检查用户排名(管理员或普通用户)如果他是普通用户,请将他移动到索引页面并停止脚本!
普通用户不应该编辑 id 语句......如果他们这样做......这意味着他们这样做是为了黑客或某种目的......
现在进入下一部分
$userID = intval($_GET['id']);
if (!$userID) {
header('Location: index.php');
die();
}
这基本上是 intval 所以 id 是唯一的!一个数字,这会阻止诸如
'; DELETE FROM users WHERE user_id=19;
NEXT... 一个额外的安全功能,如果不是用户 ID 重定向并退出
最后,
$sql = "DELETE FROM users WHERE user_id='".$userID."'";
$query = mysql_query($sql);
header('Location: members.php?id=&page=1');
}
运行 sql 并将用户重定向回同一页面以获得刷新的结果。
这是我所说的正确逻辑吗?
这是我的完整 members.php 文件
http://pastebin.com/tkstyrWg
该网站也正在测试中
http://1334.3owl.com
members.php 实际上有一个
protect();
如果用户未登录,该功能会将用户重定向到主页
你可以随意在这个网站上测试sql注入...
这是一个可用于测试的演示用户
demouser
demopass
如果脚本不安全......我该如何做到这一点?
对管理员也安全吗?
我的 url 中的 sql 脚本是否正确?