【发布时间】:2018-02-07 02:26:12
【问题描述】:
我的页面上有以下代码,但即使用户名和密码以小写形式输入,我也想登录,我在网上查看,答案似乎表明 strtolower 可以工作,但它没有为我工作,有人可以看看吗?
感谢您的帮助!
<?php
$error = "";
if(isset($_POST['username'],$_POST['password'])){
$user = array(
"user" => "Demo",
"pass"=>"Demo"
);
$username = strtolower($_POST['username']);
$pass = strtolower($_POST['password']);
if($username == $user['user'] && $pass == $user['pass']){
session_start();
$_SESSION['simple_login'] = $username;
echo '{"error":0}';
}else{
echo '{"error":1}';
}
exit();
}
?>
【问题讨论】:
-
我对 PHP 了解不多,但您似乎正在将全小写字符串与包含大写字母的字符串
"Demo"进行比较。也许这就是比对案例没有通过的原因。 -
您将变量转换为小写,但您匹配的数组包含大写。 两个显然都需要转换才能匹配。
-
“不起作用”是什么意思?错误是什么,它是语义的吗?运行代码时发生了什么
-
使密码不区分大小写是对安全性的重大损害。
-
永远不要存储纯文本密码!请使用 PHP 的built-in functions 来处理密码安全问题。如果您使用的 PHP 版本低于 5.5,您可以使用
password_hash()compatibility pack。 在散列之前不需要escape passwords 或对它们使用任何其他清理机制。这样做会更改密码并导致不必要的额外编码。