所以,我正在研究论坛脚本,并试图让线程的创建者和工作人员可以锁定线程,但“锁定”不会更新。
以下是用于触发锁定的内容(发布时):
[input type="checkbox" name="lock" value="1" onclick="return confirm('Are you sure? Only staff members can undo this.')" /]
关闭此主题(禁用发布)
由于html的允许而不得不将()改为[]
这是PHP:
$id = mysqli_real_escape_string(db(), $_GET['id']); // This was in the code before. Think I'm stupid?
$eee = "SELECT * FROM forums WHERE id = $id";
$eeee = query($eee);
while ($notif = mysqli_fetch_assoc($eeee)) {
if ($_POST['lock'] = '1') {
if ($_SESSION['username'] == $notif['creator'] || staffmember()) {
$hi = "UPDATE forum SET ´lock´ = '1' WHERE ´id´ = '$id'";
$ooo = query($hi);
}
}
}
答案 0 :(得分:1)
我的错误在这里:
$hi = "UPDATE forums SET [lock]=1 WHERE id='$id'";
我需要添加``around lock来使其工作,因为lock是一个保留字。
答案 1 :(得分:0)
未提取身份证件:
$hi = "UPDATE forum SET ´lock´ = '1' WHERE ´id´ = '". $notif['id'] ."'";
请使用更好的变量名来理解。
答案 2 :(得分:0)
我假设query
是一个自定义函数,它也处理与db的连接?
这一行可能就是你的问题if ($_POST['lock'] = '1') {
那应该是if ($_POST['lock'] == '1') {
=
是一个赋值运算符==
是一个比较器
请理解你的sql注入漏洞,你的用户信任你的凭据。他们不应该因为您的安全漏洞而遭受痛苦
答案 3 :(得分:0)
尝试print_r($notif)
,因为除了已经提到的错误,我看不到任何其他错误。