当http://在变量中时,PHP POST请求不起作用

时间:2013-08-02 12:28:49

标签: php forms post

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

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

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

后期处理脚本非常简单,可用于测试:

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

这在某些服务器上很好,而不是在其他服务器上,这让我觉得它是服务器设置。

将非常感激地收到任何见解

1 个答案:

答案 0 :(得分:3)

php.ini中需要检查的事项:

  • post_max_size#应与0
  • 不同
  • variables_order#should = =“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是否有RewriteCond %{REQUEST_METHOD} POST之类的内容以及之后的规则。

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

enter image description here


您还可以尝试以下操作:

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