PHP服务器POST请求后$_POST中api_key索引未定义问题
解决POST请求中api_key无法被PHP获取的问题
问题原因
你发起的POST请求里,api_key=tPmAT5Ab3j7F9是放在URL的查询参数里的,这部分参数在PHP中会被归类到$_GET数组,而不是$_POST数组。所以你代码里用isset($_POST["api_key"])判断自然会返回false,进而触发"No Api Key provided"的输出,同时直接访问$_POST["api_key"]就会报Undefined index的错误。
解决方案
方案1:保持URL带参数,修改PHP代码从$_GET取
如果你想继续在URL里带api_key参数,只需要把POST分支里的代码改成从$_GET获取即可,和你GET请求的逻辑一致:
$api_key = ""; if ($_SERVER["REQUEST_METHOD"] == "POST") { if (isset($_GET["api_key"])){ $api_key = test_input($_GET["api_key"]); if($api_key == $api_key_value) { //do something } } } else{ echo "No Api Key provided"; // 补充分号,避免语法错误 } }
方案2:标准POST方式,将参数放在请求体中
这是更规范的POST请求做法:
- 在Postman中,选择请求体格式为
x-www-form-urlencoded或者form-data - 添加键值对:
api_key->tPmAT5Ab3j7F9 - 确保URL里不再带
?api_key=xxx的参数,直接用http://192.168.178.43/update-led.php发送POST请求 - 你的原PHP代码(POST分支)就可以正常获取到
$_POST["api_key"]了
额外提醒
你代码里echo "No Api Key provided"语句末尾少了分号,这会导致PHP语法错误,记得补上。
内容的提问来源于stack exchange,提问作者Paul Heming
相关产品推荐
相关产品推荐

