[英]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.