所以我在玩我的简单登录系统,有一件事我似乎不能弄清楚的是,为什么登录允许我创建一个帐户只有一个用户名,并发送此数据到我的数据库事件,虽然我指定
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 {
}
}
}