账号密码正确,网站后台登陆总是密码错误

大神们好,实在是研究了好久真是搞不懂,才发帖求助!网站后台登陆总是密码错误,但是数据库的账号和密码都是admin,密码是对的,不知道为什么登不上。我看了下登陆的php文件,发现密码好像还有其他的参数,请大佬们看看!

namespace Qwadmin\Controller;
use Common\Controller\BaseController;
use Think\Auth;
class LoginController extends BaseController {
    public function index(){

        
        $flag = false;
        $auth = cookie('auth');
        list($identifier, $token) = explode(',', $auth);
        if (ctype_alnum($identifier) && ctype_alnum($token)) {
            $user = M('member')->field('uid,user,identifier,token,salt')->where(array('identifier'=>$identifier))->find();
            if($user) {
                if($token == $user['token'] && $user['identifier'] == password($user['uid'].md5($user['user'].$user['salt']))){
                    $flag = true;
                    $this->USER = $user;
                }
            }
        }
        if ($flag) {
           $this -> error('您已经登录,正在跳转到主页',U("index/index"));
        }

        $this -> display();
    }
    public function login(){
        $verify = isset($_POST['verify'])?trim($_POST['verify']):'';
        if (!$this->check_verify($verify,'login')) {
            $this -> error('验证码错误!',U("login/index"));
        }

        $username = isset($_POST['user'])?trim($_POST['user']):'';
        $password = isset($_POST['password'])?password(trim($_POST['password'])):'';
        $remember = isset($_POST['remember'])?$_POST['remember']:0;
        if ($username=='') {
            $this -> error('用户名不能为空!',U("login/index"));
        } elseif ($password=='') {
            $this -> error('密码必须!',U("login/index"));
        }

        $model = M("Member");
        $user = $model ->field('uid,user')-> where(array('user'=>$username,'password'=>$password)) -> find();
        
        if($user) {
            $token = password(uniqid(rand(), TRUE));
            $salt = random(10);
            $identifier = password($user['uid'].md5($user['user'].$salt));
            $auth = $identifier.','.$token;
            
            M('member')->data(array('identifier'=>$identifier,'token'=>$token,'salt'=>$salt))->where(array('uid'=>$user['uid']))->save();

            if($remember){
                cookie('auth',$auth,3600*24*365);//记住我
            }else{
                cookie('auth',$auth);
            }
            addlog('登录成功。',$username);
            $url=U('index/index');
            header("Location: $url");
            exit(0);
        }else{
            addlog('登录失败。',$username);
            $this -> error('登录失败,请重试!',U("login/index"));
        }
    }
    
    public function verify() {
        $config = array(
        'fontSize' => 14, // 验证码字体大小
        'length' => 4, // 验证码位数
        'useNoise' => false, // 关闭验证码杂点
        'imageW'=>100,
        'imageH'=>30,
        );
        $verify = new \Think\Verify($config);
        $verify -> entry('login');
    }
    
    function check_verify($code, $id = '') {
        $verify = new \Think\Verify();
        return $verify -> check($code, $id);
    }
}

控制登陆的代码如上,uid=1,user=admin,password=md532位加密的admin
请问,怎么样才能设置账号是user 密码是password,另外删除什么内容可以任意密码登录或者免密码登陆吗?

阅读 8.5k
2 个回答

你这密码中好像没有加多余的参数,只是记住密码的时候,把登陆信息加密保存在cookie中了;

如果提示登陆失败的话,应该是

$model = M("Member");
$user = $model ->field('uid,user')-> where(array('user'=>$username,'password'=>$password)) -> find();
if($user) {

}

$user这个值为空,说明没有查询到相关信息;
楼主可以断点调试一下自己的代码,或者在关键的代码下面,打印输出进行调试;

兄die,你的逻辑感觉不正常,怎么随便拿username和password去查数据库呢,这样子很容易被注入的
还有把password函数贴出来才可以看

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题