PHP写的登录模块里无法检验中文用户名

代码如下

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数据库里的一个用户名,在 if($_SESSION['usr_name'] == "普通用户") 这里 换成数据库里存在的某个英文用户名就可以执行成功,不然的话一直提示密码错误。

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


如同采纳答案所说,在连接数据库之后加上 mysqli_query($con,'set names utf8'); 即可。

谢谢各位。

牛魔王的故事
浏览 567回答 7
7回答

BIG阳

用户类型 在数据库里面不建议用中文 1普通用户 2管理员 这样表示 你的代码链接数据库之后要设置charset

拉丁的传说

这个跟输出编码没什么关系,你直接看$row['name'],是不是'普通用户',还有session是不是写成功了

手掌心

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

白板的微信

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

慕妹3146593

最好代码中不要定义中文,用数字表示。

互换的青春

可以看一下是不是数据库连接的 charset 设置问题。 ps:用户的英文是 user 不是 usr,改了吧,别让后人骂你。

森栏

确保php文件的编码和连接数据库读出的字符编码一致,比如都是utf8
打开App,查看更多内容
随时随地看视频慕课网APP