密码为空的问题

来源:7-14 前端用户登录逻辑开发(二)

残破的蛋丨蛋

2020-07-18

我这里的密码为空,为什么没有像老师的那样报错呢?直接是登录成功了
图片描述
我的数据库是设计是这样的:
图片描述

写回答

2回答

残破的蛋丨蛋

提问者

2020-07-18

前端登录的控制器代码:

class Login extends BaseController
{
    /**
     * @return object
     */
    public function index(): object
    {
        $phoneNumber = input("param.phone_number", "", "trim");
        $code = $this->request->param("code", "0", "trim");
        $type = request()->param("type", "0", "trim");
        // 前端用户传递的参数
        $data = [
            'phone_number' => $phoneNumber,
            'code' => $code,
            'type' => $type
        ];
        $validate = new User();
        if (!$validate->scene('login')->check($data)) {
            return show(config('status.error'), $validate->getError());
        }
        $result = (new \app\common\business\User)->login($data);
        if ($result) {
            return show(config('status.success'), "登录成功", $result);
        }
        return show(config('status.error'), "登录失败");
    }
}

前端登录的Business代码:

public function login($data) {
    $redisCode = cache(config('redis.code_pre').$data['phone_number']);
    if (empty($redisCode) || $redisCode != $data['code']) {
        // throw new \think\Exception("验证码不正确".$redisCode, config('status.code_error'));
    }
    // 根据手机号查询相关的用户信息数据
    $user = $this->userObj->getUserByPhoneNumber($data['phone_number']);
    if (!$user) {
        // 如果用户不存在,就注册新用户,这里用户名默认随机,后期可以让用户在个人中心修改
        $username = substr(md5(time()), 1, 15);
        $userData = [
            "username" => "TP6Mall_{$username}",
            "phone_number" => $data["phone_number"],
            "type" => $data['type'],
            "status" => config("status.mysql.table_normal")
        ];
        $this->userObj->save($userData);
        // 用户id
        $userId = $this->userObj->id;
    } else {
        $userId = $user->id;
        $username = $user->username;
        // 如果用户已经存在,则更新用户数据
        $userData = [
            'update_time' => time(),
            'operate_user' => $username
        ];
        $this->userObj->updateById($userId, $userData);
    }
    // 获取token
    $token = TokenStr::getLoginToken($user->phone_number);
    $redisData = [
        "id" => $userId,
        "username" => $username
    ];
    $res = cache(config('redis.token_pre').$token, $redisData, Time::userLoginTimeExpiresTime($data['type']));
    return $res ? ["token" => $token, "username" => $username] : false;
}

这是Model层代码:

public function getUserByPhoneNumber(int $phoneNumber)
{
    if (!$phoneNumber) {
        return false;
    }
    return $this->where('phone_number', '=', $phoneNumber)->find();
}

我这里密码为空的时候怎么没有弹出来老师的那个报错呢。

0
0

keryz

2020-07-18

同学,你好,代码可以发出来看下。

                                        ------------- singwa 助教。

0
1
残破的蛋丨蛋
我重新添加了个回答
2020-07-18
共1条回复

全流程开发 TP6.0实战高并发电商服务系统

一课就能掌握TP6.0基础及运用,打造完整高并发的电商后端项目

1465 学习 · 1333 问题

查看课程