php 无法读取 http post 请求正文
Posted
技术标签:
【中文标题】php 无法读取 http post 请求正文【英文标题】:php can't read http post request body 【发布时间】:2021-12-04 00:07:38 【问题描述】:我已经被这个问题困住了两个星期。 我有一个颤振的应用程序,我正在尝试使用用户名和密码进行简单登录,我正在检查数据库中的用户名和密码是否匹配。 我使用 php 作为后端,但似乎 php 根本看不到 post 请求正文。 我在邮递员那里试过,即使用户名和密码正确,它总是给我“无效的用户名或密码,请重试”。 我认为它返回一个空响应,但我不知道为什么。
状态码= 200。
php代码:
<?$con = include "conn.php";
$json = file_get_contents('php://input');
$obj = json_decode($json);
$username = $obj['username'];
$password = $obj['password'];
$loginQuery = "select * from user where username = '$username' andpassword = '$password' ";
$check = mysqli_fetch_array(mysqli_query($con,$loginQuery));
if(isset($check))
$onLoginSuccess = 'Login Matched';
$SuccessMSG = json_encode($onLoginSuccess);
echo $SuccessMSG ;
else
$InvalidMSG = 'Invalid Username or Password Please Try Again' ;
$InvalidMSGJSon = json_encode($InvalidMSG);
echo $InvalidMSGJSon ;
mysqli_close($con);
?>
另外,当我打印 $obj 或 $username 以查看它有什么时,它什么也没提供。
感谢您到此为止,并为冗长的文字感到抱歉。 如果有人救我,我将非常感激。
【问题讨论】:
警告:您对SQL Injections 持开放态度,应该使用参数化的prepared statements,而不是手动构建查询。它们由PDO 或MySQLi 提供。永远不要相信任何形式的输入!即使您的查询仅由受信任的用户执行,you are still in risk of corrupting your data。 Escaping is not enough! 切勿以明文形式或使用 MD5/SHA1 存储密码! 仅存储使用 PHP 的password_hash()
创建的密码哈希,然后您可以使用 password_verify()
进行验证。看看这篇文章:How to use password_hash 并了解更多关于bcrypt & password hashing in PHP
一一检查你的变量,永远不要假设它们包含你期望的数据。永远不要使用echo
进行调试,始终使用var_dump
或类似的工具来查看其中的内容。打开 PHP 和 MySQL 错误报告。虽然我同意注入和密码问题,但您应该能够获取生成的 SQL 并在 SQL 工具中对其进行测试以查看结果。
谢谢。我是 php 新手,但我会考虑到这一点。
【参考方案1】:
我解决了。基本上我只是创建了一个新的用户表,它就像魔术一样工作。
【讨论】:
以上是关于php 无法读取 http post 请求正文的主要内容,如果未能解决你的问题,请参考以下文章
azure function app javascript 无法读取 Post 请求的正文
无法在 AFNetworking POST 请求上设置 HTTP 正文