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 请求的正文

获取 POST 请求的正文 [Java]

CORS:无法获取POST请求正文。

无法在 AFNetworking POST 请求上设置 HTTP 正文

使用基本 HTTP 身份验证改造 POST 请求:“无法重试流式 HTTP 正文”

在 Web API 2 中读取 POST 请求正文