PHP登录-如果(空)$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)时,它可以工作,但随后没有加密,密码在数据库中可见。所以这有点相反。有人看出我的错误或误解在哪里了吗?

QUICK SUM:它应该给"你需要填写密码",但当我在字符串中有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 {
        }
   }

}