2

我有这个非常奇怪的问题。

当我提交表单时,如果其中一个变量是http://www.youtube.com,则页面会NO DATA RECEIVED出错并失败。

不确定它是服务器设置,还是我可以在 PHP 脚本中修复的东西。

后处理脚本对于测试来说非常简单:

<?php
foreach($_POST as $a=>$b) echo "{$a}={$b}<br />";
?>

这在某些服务器上很好,而不是在其他服务器上,这让我认为这是一个服务器设置。

任何见解将不胜感激

4

1 回答 1

3

要检查的事项php.ini

  • post_max_size# 应该不同于 0
  • variables_order# 应该是 = "EGPCS"
  • max_input_vars# 应该高于你传递的变量数

在 HTML 表单中检查的内容:

  • 字段和提交按钮在表单内
  • 表格有method="POST"
  • 如果表单有文件,检查enctype,应该是multipart/form-data,如果不是应该是application/x-www-form-urlencoded
  • 寻找<input type="hidden" name="MAX_FILE_SIZE" value="..." />——它够大吗?

如果一切正常,请检查mod_security是否已启用,并检查 .htaccess 中是否有 .htaccess 之类的内容RewriteCond %{REQUEST_METHOD} POST,以及之后的规则。

检查您的浏览器是否发送数据。在 Chrome 网络选项卡中,我看到如下内容:

在此处输入图像描述


您还可以尝试以下方法:

var_dump(get_defined_vars());

或者

$vars = get_defined_vars();
foreach ($vars as $var) {
     echo "<br><b>{$var}</b>";
     var_dump($$var);
}

并检查声明的变量列表。

PS:

我假设您使用 Apache,因为您没有包含此信息。另外,尝试使用不同的浏览器,看看它是否有任何改变。

PS2: 我喜欢在命令行中检查配置设置:

~$ php -i | grep -i variables_order
variables_order => GPCS => GPCS
于 2013-08-02T12:43:12.030 回答