【发布时间】:2018-03-12 03:37:14
【问题描述】:
我在我的框架中使用 slim,每当我在 Postman 上测试它时,php 无法读取参数,但是当我将其转换为 md5 时,php 现在可以读取请求。什么可能是我的问题。服务器向我发送空值。这是我的代码
DBOperations.php
//Method for user login
function userLogin($userName, $userPassword)
{
$password = md5($userPassword);
$stmt = $this->con->prepare("SELECT userID FROM users WHERE userName = ? AND userPassword = ?");
$stmt->bind_param("ss", $userName, $password);
$stmt->execute();
$stmt->store_result();
return $stmt->num_rows > 0;
}
index.php
//user login route
$app->post('/login', function (Request $request, Response $response) {
if (isTheseParametersAvailable(array('userName', 'userPassword'))) {
$requestData = $request->getParsedBody();
$userName = $requestData['userName'];
$userPassword = $requestData['userPassword'];
$password = md5($userPassword);
$db = new DbOperation();
$responseData = array();
if ($db->userLogin($userName, $userPassword)) {
$responseData['error'] = false;
$responseData['username'] = $db->getByUserName($userName);
} else {
$responseData['error'] = true;
$responseData['message'] = $password;
}
$response->getBody()->write(json_encode($responseData));
}
});
当密码为md5时
{"error":true,"message":"d41d8cd98f00b204e9800998ecf8427e"}
没有密码时
{"error":true,"message":null}
【问题讨论】:
-
Don't use md5 for passwords
d41d8cd98f00b204e9800998ecf8427eis md5 of null: 3v4l.org/OubSD,你也知道你的md5ing它两次,在控制器和模型中。 -
首先你不应该在 WHERE 子句中使用密码,因为大多数时候 MySQL 是不区分大小写的(密码哈希应该是),你也应该使用经过批准的(密码学上安全的)比较函数来检查它.
-
@LawrenceCherone - 所以这意味着我根本没有得到任何价值?
-
转出
$requestData以查看其中包含的内容。并启用错误报告。 -
$requestData在我使用 var_dump 时包含 NULL。我看不出我在哪里没有得到任何价值。 @LawrenceCherone