鍍金池/ 問答/Java  PHP/ 賬號密碼正確,網(wǎng)站后臺登陸總是密碼錯誤

賬號密碼正確,網(wǎng)站后臺登陸總是密碼錯誤

大神們好,實(shí)在是研究了好久真是搞不懂,才發(fā)帖求助!網(wǎng)站后臺登陸總是密碼錯誤,但是數(shù)據(jù)庫的賬號和密碼都是admin,密碼是對的,不知道為什么登不上。我看了下登陸的php文件,發(fā)現(xiàn)密碼好像還有其他的參數(shù),請大佬們看看!

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('您已經(jīng)登錄,正在跳轉(zhuǎn)到主頁',U("index/index"));
        }

        $this -> display();
    }
    public function login(){
        $verify = isset($_POST['verify'])?trim($_POST['verify']):'';
        if (!$this->check_verify($verify,'login')) {
            $this -> error('驗(yàn)證碼錯誤!',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, // 驗(yàn)證碼字體大小
        'length' => 4, // 驗(yàn)證碼位數(shù)
        'useNoise' => false, // 關(guān)閉驗(yàn)證碼雜點(diǎn)
        '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
請問,怎么樣才能設(shè)置賬號是user 密碼是password,另外刪除什么內(nèi)容可以任意密碼登錄或者免密碼登陸嗎?

回答
編輯回答
孤島

你這密碼中好像沒有加多余的參數(shù),只是記住密碼的時候,把登陸信息加密保存在cookie中了;

如果提示登陸失敗的話,應(yīng)該是

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

}

$user這個值為空,說明沒有查詢到相關(guān)信息;
樓主可以斷點(diǎn)調(diào)試一下自己的代碼,或者在關(guān)鍵的代碼下面,打印輸出進(jìn)行調(diào)試;

2017年10月1日 20:06
編輯回答
裸橙

兄die,你的邏輯感覺不正常,怎么隨便拿username和password去查數(shù)據(jù)庫呢,這樣子很容易被注入的
還有把password函數(shù)貼出來才可以看

2017年10月29日 21:00