PHP 如何接收 POST 参数
在日常做网站或小程序开发时,你可能遇到过这种场景:前端填完表单点提交,后端却拿不到输入的内容——很大概率是没搞懂怎么用PHP接收POST参数。和GET参数直接附在网址后面不同,POST是把数据藏在请求的“包裹”里,安全性更高,也适合传更多内容,接下来就用生活化的例子一步步讲清楚。
先搞懂POST和GET的区别(避免入门误区)
很多刚接触开发的人会混淆POST和GET,其实用外卖举个例子就很清楚:GET参数就像你点外卖时备注的“少放辣、要加餐具”,这些信息直接写在订单号(相当于网址)后面,所有人都能看到,也不能传太多内容;而POST参数是你和商家私下说的“地址是XX小区3栋502、电话13XXXXXXXXX”,这些内容不会显在公开的订单号里,也能传更多、更私密的信息,表单提交一般都会用POST。

最常用的方法:$_POST超全局变量
PHP里有个自带的“万能容器”叫$_POST,专门用来存POST请求里的参数,它是个数组,键就是前端表单输入框的名字,值就是用户填的内容。
举个例子:前端有个登录表单,两个输入框,名字分别是username和password,提交时用POST方式,那PHP接收的代码就很简单:
`php
<?php
// 检查是否是POST请求(避免非法访问)
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// 用$_POST拿参数,直接用输入框的名字当键
$username = $_POST['username'];
$password = $_POST['password'];
// 输出看看拿到的内容
echo "收到的用户名是:" . $username . "<br>";
echo "收到的密码是:" . $password;
}
?>
`
这里加的$_SERVER['REQUEST_METHOD']是个判断,能防止有人直接在浏览器地址栏输这个PHP文件的地址访问,避免乱弹内容。
特殊情况:php://input接收非表单数据
有时候前端传的不是普通表单数据,比如用JSON格式传数据(现在很多小程序、APP都会这么做),这时候$_POST就不好用了——因为$_POST只会解析Content-Type: application/x-www-form-urlencoded格式的表单数据,JSON格式的话,得用php://input这个“原始数据流”来拿。
还是举个例子,前端传了一段JSON:{"nickname":"小橘子","age":25},PHP的接收代码是这样的:
`php
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// 读取POST的原始数据
$json_data = file_get_contents('php://input');
// 把JSON转成PHP能处理的数组
$data = json_decode($json_data, true);
// 拿到对应参数
$nickname = $data['nickname'];
$age = $data['age'];
echo "昵称:" . $nickname . ",年龄:" . $age;
}
?>
`
如果用$_POST拿这段数据,只会得到空,这就是新手常踩的坑,一定要注意数据格式。
安全提醒:拿了参数先验证再用
不管用哪种方法拿参数,都不能直接用,就像收外卖要先检查包装有没有破、是不是自己的订单,拿参数也要验证:比如用户名不能是空、密码不能太短,不然容易出问题。比如可以加个简单的验证:
`php
if (empty($username) || strlen($password) < 6) {
echo "用户名不能为空,密码至少6位";
exit;
}
`
这样就能避免收到空内容或不符合要求的参数,减少后续的问题。
其实PHP接收POST参数的核心就是“对应数据格式选对方法”,普通表单用$_POST,JSON或其他格式用php://input,再记得加验证,就能轻松搞定大部分接收场景,不用怕再遇到“拿不到数据”的问题啦。