【问题标题】:PHP POST request not working when http:// in variable当 http:// 在变量中时 PHP POST 请求不起作用
【发布时间】:2013-08-02 12:28:49
【问题描述】:

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

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

不确定这是服务器设置,还是我可以在 PHP 脚本中修复的问题。

后处理脚本测试起来非常简单:

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

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

任何见解将不胜感激

【问题讨论】:

  • 你有什么php版本?
  • 你能把你的表格贴出来吗
  • 询问您的托管服务提供商。他们最喜欢有 mod_security 或 suhosin。
  • 也可能是您的浏览器。众所周知,Chrome 的某些 PHP 代码行存在“未收到数据”问题
  • 你安装了suhosin补丁吗?

标签: php forms post


【解决方案1】:

php.ini 中检查的内容:

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

在 HTML 表单中检查的事项:

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

如果一切正常,请检查 mod_security 是否已启用,并检查 .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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-07
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多