邮差(试图获取非对象的属性)错误

时间:2017-11-21 04:47:37

标签: php web postman

我想知道为什么我的代码出现此通知错误

enter image description here

这是我的代码index.php。

<?php
require_once("DB.php");
$db = new DB("localhost", "unleashe_hotel", "root", "");
if ($_SERVER['REQUEST_METHOD'] == "GET") {
        if ($_GET['url'] == "auth") {
        } else if ($_GET['url'] == "users") {
        }
} else if ($_SERVER['REQUEST_METHOD'] == "POST") {
        if ($_GET['url'] == "auth") {
                $postBody = file_get_contents("php://input");
                // header('Content-Type: application/json')
                $postBody = json_decode($postBody);
                $username = $postBody->username;
                $password = $postBody->password;
                if ($db->query('SELECT username FROM users WHERE username=:username', array(':username'=>$username))) {
                        if (password_verify($password, $db->query('SELECT password FROM users WHERE username=:username', array(':username'=>$username))[0]['password'])) {
                                $cstrong = True;
                                $token = bin2hex(openssl_random_pseudo_bytes(64, $cstrong));
                                $user_id = $db->query('SELECT id FROM users WHERE username=:username', array(':username'=>$username))[0]['id'];
                                $db->query('INSERT INTO login_tokens VALUES (\'\', :token, :user_id)', array(':token'=>sha1($token), ':user_id'=>$user_id));
                                echo '{ "Token": "'.$token.'" }';
                        } else {
                                http_response_code(401);
                        }
                } else {
                        http_response_code(401);
                }
        }
} else {
        http_response_code(405);
}
?>

有人有什么建议吗?

1 个答案:

答案 0 :(得分:3)

当您的请求方法在此处POST时,您正尝试使用$ _GET:

else if ($_SERVER['REQUEST_METHOD'] == "POST") {
        if ($_GET['url'] == "auth") {

将其更正为

else if ($_SERVER['REQUEST_METHOD'] == "POST") {
        if ($_POST['url'] == "auth") {