繁体   English   中英

PHP登录-if(empty)$ password在我的代码中不起作用,为什么?

[英]PHP Login - if(empty)$password doesn't work in my code, why?

所以我在玩我简单的登录系统,我似乎无法弄清楚的一件事是,为什么登录允许我仅使用用户名创建一个帐户,并将该数据发送到我的数据库事件,尽管我指定了

 if($_SERVER['REQUEST_METHOD'] == 'POST') {
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string(md5($_POST['password']));

    if(empty($username)) {
      echo("Du ma fylle inn et brukernavn!");
} {
 if(empty($password)) {
      echo("Du ma fylle inn et passord!");
      } else {

当我删除(在转义字符串中的md5时,它可以工作,但是没有加密,并且密码在数据库中可见。因此,反之亦然。)有人看到我的错误或误解在哪里吗?

快速总结:应该给出“您需要输入密码”,但是当我在字符串中使用md5解密时却没有,但是当我删除它时,它允许我。

md5将产生一个字符串,即使输入为空。 您需要直接从$_POST检查原始输入。 如果要验证输入,请务必在处理之前进行检查,因为即使原始输入为空,后续处理(如本例所示)也可能导致非空变量。

md5会编码任何东西,甚至是一个空字符串。 无论如何,这都会使变量“非空”。

含义:首先检查是否为空,然后对密码进行编码。

空字符串仍然具有MD5哈希,因此您可以正确检查密码是否相等。

您可以在分配md5-之前检查该字段是否为空

if($_SERVER['REQUEST_METHOD'] == 'POST') 
{
    if (mysql_real_escape_string(empty($_POST['password']))) {
        // do nothing
    } 
    else 
    {
   `    $username = mysql_real_escape_string($_POST['username']);
        $password = mysql_real_escape_string(md5($_POST['password']));

        if(empty($username)) {
             echo("Du ma fylle inn et brukernavn!");
        } {
        if(empty($password)) {
             echo("Du ma fylle inn et passord!");
        } else {
        }
   }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM