【问题标题】:Internal Server Error on php submit with MySQL commands使用 MySQL 命令提交 php 时出现内部服务器错误
【发布时间】:2009-12-30 23:11:23
【问题描述】:

我收到以下代码的内部服务器错误...任何建议:

<form name="user" action="this.php" method="post">
<input type="text" name="description" id="description" value="" />

<input type="submit" name="" id="" value="Edit Page"  />    
</form>

页面上没有其他代码,它自己提交很好,除非我在文本字段中放置一个 MySQL 查询,例如 SELECT s FROM d WHERE 1=1

然后我得到以下错误:

服务器遇到内部错误或配置错误,无法完成您的请求。

请联系服务器管理员 webmaster@test.info 并告知他们错误发生的时间,以及您所做的任何可能导致错误的事情。

服务器错误日志中可能会提供有关此错误的更多信息。

此外,在尝试使用 ErrorDocument 处理请求时遇到 404 Not Found 错误。

我确实有一些 .htaccess 规则正在进行,但我不知道这会如何影响一个不做任何事情或去任何地方的查询......

【问题讨论】:

  • MySQL 语句如何放入 .php 页面?
  • 如果我在输入框中输入SQL语句。我认为这是服务器配置问题,但我不知道从哪里开始。
  • 不相关(或者只是稍微相关,如果我怀疑 mod_security 的猜测是正确的),但你需要 htmlspecialchars 回显 PHP_SELF,与你写入的任何其他字符串相同HTML。否则,您将面临损坏和跨站点脚本错误的风险(即使打开了烦人且无效的 mod_security)。
  • @bobince - 即使我删除 PHP_SELF 并指定页面,错误仍然发生。

标签: php mysql


【解决方案1】:

似乎是邪恶的统治mod_security。你在共享主机上吗?通常你可以通过 .htaccess 文件禁用所有模块或特定规则。

【讨论】:

  • 你是对的,这是一个 mod_security 问题。只需将受影响的文件列入白名单。
【解决方案2】:

首先要查看的是您的网络服务器日志文件。

第二个要看的地方是How can I prevent SQL injection in PHP?,因为我猜你只是将用户交给你的任何东西都塞进了 SQL 服务器,而没有进行任何清理。

【讨论】:

  • 我没有向 SQL 服务器提交任何内容。这就是奇怪的部分。脚本中甚至没有与 SQL 服务器的连接。
【解决方案3】:

执行前,转储$_POST[]的内容;

var_dump($_POST);

在开发环境中,最好开启错误显示:

display_errors(1);

或者在 php.ini 中:

display_errors = On;

【讨论】:

    【解决方案4】:

    由于提供的信息有限,听起来您以某种方式发送了格式错误的 sql 查询,而您没有捕获 mysql 服务器返回的错误。您需要查看您发送的内容,并处理 mysql 错误。

    【讨论】:

    • 没有任何东西进入 SQL 服务器...至少不是通过脚本。我展示的代码就是正在发送的所有内容。脚本中没有其他内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-05
    • 2011-10-23
    • 1970-01-01
    • 2016-11-23
    • 2015-05-29
    相关资源
    最近更新 更多