【问题标题】:unable to convert to lowercase - not working无法转换为小写 - 不工作
【发布时间】: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 或对它们使用任何其他清理机制。这样做会更改密码并导致不必要的额外编码。

标签: php login lowercase


【解决方案1】:

虽然这是一种方法,但您可能不应该这样做,这并不安全。为什么用户名/密码不区分大小写?

<?php
    $error = "";
    if(isset($_POST['username'],$_POST['password'])){
        $user = array(
                        "user" => strtolower("Demo"),
                        "pass"=> strtolower("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();
    }
?>

【讨论】:

  • @TazConway 哇,那么你真的不在乎安全。很高兴我不是您系统的用户。
  • 伙计们;我发现最后 2 个 cmets 相当有辱人格。
  • @Fred-ii- 也许吧。公平地说,我们都是从相似的水平开始的。我真的不是想贬低这个人,我曾经写过我在学校时写的同样糟糕的代码。抱歉,这正是他的代码让我想起的……
  • @TheUnholyProgrammer 这就像贬低 TBH 的“边界线”。最好按照他们问题下的cmets已经说明的方式进行指导。很确定他们收到了信息;至少我希望他们做到了! lol - 我只是不想让 OP 给人留下不好的印象 :-)
  • @ADyson “但似乎 OP 没有听取或回应任何 cmets,只是继续使用解决方案,尽管有所有警告” - 我们只能像你们一样让他们知道 :-) 还记得那句老话吗? “我不是我兄弟的看守人” ;-) 如果他们选择不听警告,那么这不是你/我们的问题,所有人都试图告知/建议。他们是否应该回到 Stack 并发布:“我的网站被黑了”,嗯...我想你知道我要去哪里 ;-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-09
  • 2013-01-09
  • 1970-01-01
  • 2018-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多