鍍金池/ 問答/PHP  Linux  數(shù)據(jù)庫(kù)  HTML/ PHP寫的登錄模塊里無法檢驗(yàn)中文用戶名

PHP寫的登錄模塊里無法檢驗(yàn)中文用戶名

代碼如下

if ($row = mysqli_fetch_array($result)) {
        $_SESSION['usr_id'] = $row['id'];
        $_SESSION['usr_name'] = $row['name'];
        $_SESSION['usr_password']=$row['password'];
        if($_SESSION['usr_name'] == "普通用戶"){
            header("Location: index.html");
        }
        else
        header("Location: index.php");
        
    } else {
        $errormsg = "郵箱或密碼不正確";
    }

“普通用戶”是mysql數(shù)據(jù)庫(kù)里的一個(gè)用戶名,在 if($_SESSION['usr_name'] == "普通用戶") 這里 換成數(shù)據(jù)庫(kù)里存在的某個(gè)英文用戶名就可以執(zhí)行成功,不然的話一直提示密碼錯(cuò)誤。

改了PHP的輸出編碼格式 header("Content-type: text/html; charset=utf-8");還是不行,mysql里username字段都是utf-8格式。


如同采納答案所說,在連接數(shù)據(jù)庫(kù)之后加上 mysqli_query($con,'set names utf8'); 即可。

謝謝各位。

回答
編輯回答
笨尐豬

1.不建議使用中文
2.使用trim()函數(shù)清楚$_SESSION['usr_name']內(nèi)容是否存在留空情況

2018年3月10日 09:49
編輯回答
莫小染

usr_name打印出來看一下不就知道了

2017年3月22日 04:52
編輯回答
不歸路

可以看一下是不是數(shù)據(jù)庫(kù)連接的 charset 設(shè)置問題。

ps:用戶的英文是 user 不是 usr,改了吧,別讓后人罵你。

2018年7月15日 14:53
編輯回答
負(fù)我心

最好代碼中不要定義中文,用數(shù)字表示。

2017年12月30日 11:01
編輯回答
冷眸

用戶類型 在數(shù)據(jù)庫(kù)里面不建議用中文 1普通用戶 2管理員 這樣表示

你的代碼鏈接數(shù)據(jù)庫(kù)之后要設(shè)置charset

2017年12月16日 09:01
編輯回答
傲嬌范

確保php文件的編碼和連接數(shù)據(jù)庫(kù)讀出的字符編碼一致,比如都是utf8

2017年3月21日 17:51
編輯回答
柚稚

這個(gè)跟輸出編碼沒什么關(guān)系,你直接看$row['name'],是不是'普通用戶',還有session是不是寫成功了

2018年9月16日 17:57