【问题标题】:$_POST is empty on XAMPP when post from remote form从远程表单发布时,XAMPP 上的 $_POST 为空
【发布时间】:2013-07-23 12:40:20
【问题描述】:

我有一个 Windows VPS 服务器,这个服务器是个人服务器,所以我安装了 XAMPP 来在这个服务器上运行 PHP 和 Apache。

现在我在另一台服务器上创建了一个 from with post 方法,并将数据发布到这个个人服务器(具有 XAMPP)。

当我使用$_POST时,这个变量是空的,我也检查了$_REQUEST,但这个变量也是空的。

本地表单没有这个问题,$_POST 将传递所有发布的变量,我只是在远程表单中遇到这个问题。

我认为这个问题与安全有关,我应该在php.ini上更改它,但我不知道该怎么办!

更新:

HTML 代码:

<form method="post" action="http://xxx.xxx.xxx.xxx/login.php">
  <input type="text" name="username" value="Username ..." />
  <br/>
  <input type="password" name="password" value="Password ..." />
  <br/>
  <br/>
  <input type="submit" name="submit" value="Send" />
</form>

PHP 代码:

<?php

echo $_POST['username'];
echo $_POST['password'];
print_r($_POST);
print_r($_REQUEST);
print_r($GLOBALS);

?>

如果位于同一服务器上的两个文件 php 文件都可以工作,$_POST 将返回发布的变量,但如果 HTML 文件位于不同的服务器上,$_POST 将为空!

【问题讨论】:

  • 显示您用于发布的代码。
  • 在表单后注册的跨域策略,因此您可以发布到另一个域。就像@BartFriederichs 说的:请展示你的代码。
  • 我更新了我的问题
  • 据我所知 PHP 没有本地机制来防止这种情况。你使用的那个包是否提供了一个安全模块,比如 Suhosin 或 mod_security?
  • @ÁlvaroG.Vicario 嗯,我不知道,我安装了一个新的 XAMPP 包,(apachefriends.org/en/xampp.html) 我没有安装任何扩展,也没有更改 php.ini 中的任何内容

标签: php apache variables xampp


【解决方案1】:

这是一个疯狂的猜测。可能你忘记在表单中设置方法了。

<form method="post" action="http://somepage.com/">

并且要确保接收端的post数组不为空,还需要一些输入字段定义好名称。

<input type="text" name="my_value" value="test value" />

在接收服务器上 print_r($_POST) 应该创建类似:

Array
(
    [my_value] => test value
)

【讨论】:

  • 在我的问题中,我说这个表格在本地服务器上没有问题,只是在远程服务器上时有问题。
  • 这有点奇怪。我刚刚尝试了一个全新的未修改的 XAMPP 安装,在这里它可以正常工作。
猜你喜欢
  • 1970-01-01
  • 2013-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 2018-07-09
相关资源
最近更新 更多