我有这个非常奇怪的问题。
当我提交表单时,如果其中一个变量是http://www.youtube.com,则页面会NO DATA RECEIVED
出错并失败。
不确定它是服务器设置,还是我可以在 PHP 脚本中修复的东西。
后处理脚本对于测试来说非常简单:
<?php
foreach($_POST as $a=>$b) echo "{$a}={$b}<br />";
?>
这在某些服务器上很好,而不是在其他服务器上,这让我认为这是一个服务器设置。
任何见解将不胜感激
我有这个非常奇怪的问题。
当我提交表单时,如果其中一个变量是http://www.youtube.com,则页面会NO DATA RECEIVED
出错并失败。
不确定它是服务器设置,还是我可以在 PHP 脚本中修复的东西。
后处理脚本对于测试来说非常简单:
<?php
foreach($_POST as $a=>$b) echo "{$a}={$b}<br />";
?>
这在某些服务器上很好,而不是在其他服务器上,这让我认为这是一个服务器设置。
任何见解将不胜感激
要检查的事项php.ini
:
post_max_size
# 应该不同于 0variables_order
# 应该是 = "EGPCS"max_input_vars
# 应该高于你传递的变量数在 HTML 表单中检查的内容:
method="POST"
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