PHP为啥接收不到POST 的数据?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP为啥接收不到POST 的数据?相关的知识,希望对你有一定的参考价值。

<form name = "name1" action="welcome.php" method="post">
Enter your name: <input type="text" name="name" />
Enter your age: <input type="text" name="age" />
<input type="submit" />
</form>

Welcome <?php echo $_POST["name"]; ?>.<br />
You are <?php echo $_POST["age"]; ?> years old!
------------------------------------------
<html>
<body>

<form action="welcome.php" method="post">
Enter your name: <input type="text" name="name" />
Enter your age: <input type="text" name="age" />
<input type="submit" />
</form>

</body>
</html>
-------------------------
<html>
<body>

Welcome <?php echo $_POST["name"]; ?>.<br />
You are <?php echo $_POST["age"]; ?> years old!

</body>
</html>

第一个页面

第二个 可以接受post  没错啊 你具体什么问题 我运行是可以接收的

追问



Enter your name:
Enter your age:

追答

在welcome.php 中写入
Welcome .
You are years old!
写进去就好了 是没跳转链接吗

追问



Welcome .
You are years old!

这样吗 ? 因为我是自学的 不知道对不对

追答

对的 不写body和html也没事的 试试可以不 你写好了welcome.php 之前的那个页面按提交就可以进入这个页面了 会显示信息了

追问

提交之后过来就变成

去掉之后的结果就变成这样了

追答

你用记事本那加上去 我们用编程软件自带了 你最好下个软件方便点 txt那只有老老实实来 不过新学的话建议还是老实多写写 养成好习惯

追问

我就是用两个记事本写的   HTML 和PHP的代码都在上门了 


输出不出来结果   很无语 


 加了 body和html 的结果是 

Welcome .
You are years old!



没加的结果是 

追答

那只能说是不是环境问题了,这个完全没问题。

追问

怎么检测环境?

追答

你自己装的吗?是linux还是window 我是apache+php+mysql+phpadmin 你里面的配置文件对吗 有配置吗

追问

WINDOW XAMPP

参考技术A

好吧,可能是你的这个文件不是welcome.php

 就改一下你的代码

----------------------------------------

好吧我就再改一下代码吧;

index.htm

<form name = "name1" action="test.php" method="post">
Enter your name: <input type="text" name="name" />
Enter your age: <input type="text" name="age" />
<input type="submit" />
</form>

test.php

Welcome <?php echo $_POST["name"]; ?>.<br />
You are <?php echo $_POST["age"]; ?> years old!

 

追问

一样的结果 还是不可以。 是不是环境问题 ?

追答

你输出下面的页面

info.php

<?php phpinfo();?>

看一下能不能输出你的PHP信息;

如果不能,说明环境是有问题的;

---------------------

还有一个问题就是打开方法的问题;

如果是本地的话;地址是

http://localhost/info.php

不是d:/php/inof.php这样子的;这种方法是不会运行PHP的;

追问

结果:
和明确的就是环境问题, 求解决

追答

还有一个问题就是打开方法的问题;

如果是本地的话;地址是
http://localhost/info.php
不是d:/php/inof.php这样子的;这种方法是不会运行PHP的;

本回答被提问者采纳
参考技术B 你的代码无问题,从login.php跳转到welcome.php
login.php / login.html
<html>
<form action="welcome.php" method="post">
Enter your name: <input type="text" name="name" />
Enter your age: <input type="text" name="age" />
<input type="submit" />
</form>
</html>

welcome.php [只有下面两条语句,不要多写]
Welcome <?php echo $_POST["name"]; ?>.<br />
You are <?php echo $_POST["age"]; ?> years old!

运行即正确的值。
welcome.php最好改为:【规范】
<?php
echo "Welcome ".$_POST["name"]."<br/>";
echo "You are ".$_POST["age"]." years old!";
?>追问

还是显示的和截图一下差不过的结果:

";
echo "You are ".$_POST["age"]." years old!";
?>

我觉得可能不是代码的问题。 我觉得高手换换思路看看能不能解决问题?

追答

我运行没有错,现在把文件传给你,你试一下我的代码。

welcome.php

<?php
 echo "Welcome ".$_POST["name"]."<br/>";
 echo "You are ".$_POST["age"]." years old!";
?>



参考技术C 你不贴代码谁知道,你如果是from表单提交。就好好看看文档,你要是ajax 提交一样好看看 参考技术D 从代码上看不出有什么问题

php中$_POST接收不到参数问题

问题描述:PHP可以接收_GET、_SERVER、_COOKIE等参数,php://input可以读取没有处理过的POST数据,独独_POST接收不到post参数。

 原因:

php://input可以读取没有处理过的POST数据。相较于$HTTP_RAW_POST_DATA而言,它给内存带来的压力较小,并且不需要特殊的php.ini设置。php://input不能用于enctype=multipart/form-data”

不过我通过代码对比总结,得出结果如下:
1.Coentent-Type为application/x-www-data-urlencoded和multipart/form-data两种情况下,PHP会将请求数据传递给$_POST
2.PHP不能识别的Content-Type类型的时候,会将http请求包中相应的数据填入变量$HTTP_RAW_POST_DATA.
3, 只要Content-Type不为multipart/form-data的时候,PHP将不会把http请求body体数据填入php://input,否则其它情况都会。填入的长度,由Content-Length指定。
4,只有Content-Type为application/x-www-data-urlencoded时,php://input数据才跟$_POST数据相一致。
5,php://inputHTTPRAWPOSTDATA??.php://input??HTTP_RAW_POST_DATA更效率,并不需要配置php.ini
6.http请求的,GET形式下,body体为空。

 解决方法:

修改php.ini

enable_post_data_reading = On

always_populate_raw_post_data = On

重启apache即可解决。








以上是关于PHP为啥接收不到POST 的数据?的主要内容,如果未能解决你的问题,请参考以下文章

php中$_POST接收不到参数问题

PHP 使用表单提交到本页,POST接收不到数据值

php接收不到java程序post过来的数据

PHP 后台怎么接收post请求的参数

在PHP中怎么接收post过来的JSON数据

接收不到shopify webhook 发送post请求