【发布时间】:2012-01-03 10:40:25
【问题描述】:
我制作了注册表和登录表单。
我首先使用trim(),然后使用md5() 将密码存储在数据库中。
我在登录表单中使用相同的方法检查数据库中的密码,但由于某些未知原因,我无法匹配登录表单中的 md5 密码。
我想要的只是从数据库中检索密码。
问题是当我将它存储在数据库中并在 php myadmin 中检查时,md5 密码类似于123456789,当我在登录表单中回显它时,它给了我这个1234567890。最后一个零 tht 零会产生问题,否则整个 md5 密码都匹配。我的数据库排序规则是latin_1_swedish_ci。
有没有排序问题?
我 hv 使用 varchar 值 255 然后是文本等,但没有解决方案。
格式或结构有问题吗?
请帮助我正确检索 md5 密码,消除不需要的零。
function login()
{
if(isset($_POST['login']))
{
if(!$_POST['username'] || !$_POST['password'])
{die (mysql_error());}
else
{
$username = trim($_POST['username']);
$username = addslashes($_POST['username']);
$password = trim($_POST['password']);
$password = md5($_POST['password']);
echo $password;
$check_username = mysql_query("SELECT * FROM users WHERE username = '".$username."'")or die(mysql_error());
$check_username2 = mysql_num_rows($check_username);
if ($check_username2 == 0)
{die ("Username and password doesnt exist");}
else
{
$check_pass = mysql_query("SELECT * FROM users WHERE username = '".$password."'")or die(mysql_error());
$check_pass2 = mysql_num_rows($check_pass);
echo $check_pass2;
}
}
}
}
和
function register()
{
if(isset($_POST['submit']))
{
if(!$_POST['first_name'] || !$_POST['last_name'] || !$_POST['username'] || !$_POST['password'])
{header ("Location:user_registration.php");}
else
{
$firstname = trim($_POST['first_name']);
$firstname = addslashes($_POST['first_name']);
$lastname = trim($_POST['last_name']);
$lastname = addslashes($_POST['last_name']);
$username = trim($_POST['username']);
$username = addslashes($_POST['username']);
$password = trim($_POST['password']);
$password = md5($_POST['password']);
connect();
if($mysql_check_user = mysql_query("SELECT * FROM `users` WHERE `username` LIKE '$username' "))
{
$check_row = mysql_num_rows($mysql_check_user);
if($check_row > 0)
die ("username Exist");
else
{
$store = mysql_query
("INSERT INTO `project_upload`.`users`
(`id`, `fname`, `lname`, `username`, `password`)
VALUES (NULL, '$firstname', '$lastname', '$username', '$password')");
}
if ($store)
{echo "You have regstered succesfully. please go to <a href = 'uploads_login.php'>login page</a>"; }
else {echo mysql_error();}
}
}
}
}
【问题讨论】:
-
你到底为什么在密码上使用
trim()? -
能否请您发布用于检索和存储密码的代码?
-
您确定零来自数据库并且没有被代码中的其他内容回显吗?
-
没有任何代码示例,我们只能猜测出了什么问题,而不是为您的问题提供实际的解决方案。你能把你的一些代码和问题一起发布吗?
-
trim()结果实际上被丢弃了,所以这不是问题所在。login()中的第二个SELECT语句正在搜索名为md5($_POST['password'])的用户,这对我来说似乎是错误的。此外,MD5 从不返回 9 或 10 位字符串。简而言之 - 不可能看到这里发生了什么......
标签: php mysql encryption md5