预先警告,这个项目是一个报告系统的一部分,用于照顾有严重残疾的人,并且有一些令人讨厌的语言,我不会开玩笑,除非是这样的论坛,否则不会完全相关。没有冒犯的意思。
我不知道我是否希望得到这个答案,因为它非常奇怪,但是这里......我有一个非常简单的表单在mysql数据库中编辑一个文本字段。更新代码不能简单;
(连接数据库后)
$stmt = $mysqli->prepare("UPDATE rep_evening SET rppe_notes = ? WHERE rppe_mrep = ?");
$stmt->bind_param('si', $_POST['enotes'], $_POST['repid']);
$stmt->execute();
$stmt->close();
header("Location: ../reports.php");
代码可能毫无意义,因为它完全运行良好直到“suck dicks”这个词出现在文本的某个地方。然后它会抛出一个403错误,这个错误似乎是在标题返回时触发的,因为更新有效。我想也许有人放了一个亵渎过滤器,但如果他们这样做是没有用的,因为那里的其他东西并不重要,相信我有一些非常令人讨厌的东西,只有那两个字,后一个字的复数 - 单数不会触发错误。这两个单词最多可以分为3个单词并触发403,但不超过3个。
错误日志中没有任何内容,任何地方都没有线索,但可以复制任意次数。
MYSQL V5.6.30,PHP 5.4如果感兴趣的话。
编辑... 这是完整的处理页面,报告的3个部分以及可以在管理员之外查看的批准标记;
<?php
include ('../includes/dbconn.php');
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$stmt = $mysqli->prepare("UPDATE rep_day SET rppm_notes = ? WHERE rppm_mrep = ?");
$stmt->bind_param('si', $_POST['mnotes'], $_POST['repid']);
$stmt->execute();
$stmt->close();
$stmt = $mysqli->prepare("UPDATE rep_evening SET rppe_notes = ? WHERE rppe_mrep = ?");
$stmt->bind_param('si', $_POST['enotes'], $_POST['repid']);
$stmt->execute();
$stmt->close();
$stmt = $mysqli->prepare("UPDATE rep_overnight SET rppo_notes = ? WHERE rppo_mrep = ?");
$stmt->bind_param('si', $_POST['onotes'], $_POST['repid']);
$stmt->execute();
$stmt->close();
$stmt = $mysqli->prepare("UPDATE mreport SET mrep_approved = ? WHERE mrep_id = ?");
$stmt->bind_param('si', $_POST['approved'], $_POST['repid']);
$stmt->execute();
$stmt->close();
header("Location: ../reports.php");
?>