2013-08-02 36 views
2

我有这个非常奇怪的问题。PHP POST请求在http://变量中不起作用

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

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

后处理脚本测试很简单:

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

这是罚款某些服务器上,而不是其他人,这让我觉得这是一个服务器设置。

任何有识之士都会受到欢迎

+0

PHP的版本,你呢? –

+2

您可以发布您的表格 – JohnnyFaldo

+1

询问您的托管服务提供商。他们最喜欢有mod_security或suhosin。 –

回答

3

检查事项在php.ini

  • post_max_size#应该是不同的,从0
  • variables_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的东西像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 
+0

原来这是mod_security - 感谢您的帮助 – barners