我负责维护一个学习管理系统,这是我在过去几个月里一直处理的问题.
一名学生(数千人)声称他的论文提交被网站"吃掉".表格提交后,他说他的论文已被以下文字取代:
警告:mysql_connect()[function.mysql-connect]:在'读取初始通信包'时失去与MySQL服务器的连接,系统错误:第84行/home/web/solomon_1.3/classes/db.class.php中的111
致命错误:连接到数据库服务器时出错:在第85行的/home/web/solomon_1.3/classes/db.class.php中
前面的警告和致命错误作为他的提交存储在数据库中.但这怎么可能因为错误明确表明无法建立联系?论文提交页面基本上是基本的:单个数据库连接,表单数据保存到数据库,用户被重定向回提交页面.
db.class.php的第84-86行是:
if (!($sql_id=mysql_connect($server, $user, $pwd,$new))){
trigger_error("[Error connecting to database server]: {$sql_id}", E_USER_ERROR);
}
Run Code Online (Sandbox Code Playgroud)
请注意学生报告的错误如何在Fatal Error描述字符串周围缺少方括号,如PHP源文件中所示.大约两个月前,在学生的第一个错误报告之后添加了这些方括号,怀疑他只是将错误字符串粘贴到提交框中以避免工作.我想这是21世纪版本的"狗吃我的作业".
就在一周前,学生仍然在没有括号的情况下报告原始错误.服务器范围的grep验证了学生保持"获取"的错误是基于一个根本不存在的字符串.
现在,最合理的解释是学生正在与我们联系.数据库连接错误发生在过去,但至少在过去三个月内没有发生.
学生有可能被驱逐出去,所以我想确保我的证据是可靠的.你能否想到任何可能的替代理论?