密码正确但错误消息说错误

时间:2012-01-05 15:08:12

标签: php

我无法弄清楚程序有什么问题。我知道的密码是正确的,但由于某种原因,我收到一个错误,说它不正确。

这是我的signup.php

$UserName = $_POST['UserName'];
$password = $_POST['password'];
$msd5Password = $md5[$password];
$email = $_POST['email'];


if ($UserName == null || $password == null || $email == null) {
echo 'Please Fill In All The Values';
}
else {
$sql = mysql_query("SELECT * FROM login WHERE email = '$email'");
$numrows = mysql_num_rows($sql);
if($numrows !=0)
{
die("There already is an account created with the email you entered.");
}
else
{
mysql_connect("localhost", "root") or die (mysql_error);
mysql_select_db ("thereview");
mysql_query("INSERT INTO login (UserName, password, email) VALUES       ('$UserName', '$md5Password', '$email')")
or die(mysql_error());
header("Location:login.php");
 }
}

这是我的login.php

session_start();
$UserName = $_POST['UserName'];
$password = $_POST['password'];

if($UserName == null|| $password == null) {
echo 'Please fill in UserName and Password';
}
else{
mysql_connect("localhost", "root") or die (mysql_error);
mysql_select_db ("thereview");
$query = mysql_query ("SELECT * FROM login WHERE UserName = '$UserName'");

$numrows = mysql_num_rows($query);
if($numrows != 0) {
while($row = mysql_fetch_assoc($query)) {
$dbEmail = $row['email'];
$dbUserName = $row['UserName'];
$dbPassword = $row['password'];
$dbId = $row['id'];
}
if($UserName = $dbUserName && md5($password) == $dbPassword) {
$_SESSION['UserName'] = $dbUserName;
$_SESSION['email'] = $dbEmail;
}
else {
echo 'UserName or Password is incorrect';
}
}
else {
echo 'User does not exist, Create an Account';
}
}

6 个答案:

答案 0 :(得分:1)

看起来你有一个错字:

$msd5Password = $md5[$password];

应该是:

$md5Password = md5($password);

请记住,MD5不再适用于密码安全性,并且您对此脚本具有非常差的安全性,对注入和其他问题持开放态度。

答案 1 :(得分:1)

你确定吗?

$msd5Password = $md5[$password];

我认为应该是:

$md5Password = md5($password);

答案 2 :(得分:0)

if($UserName **=** $dbUserName && md5($password) == $dbPassword)

永远会给你假......

请尝试$UserName **==** $dbUserName

答案 3 :(得分:0)

  • $msd5Password = $md5[$password];应该读作:$md5Password = md5($password);(仔细考虑细节 - 美元和括号)
  • $UserName = $dbUserName应该是$UserName == $dbUserName

答案 4 :(得分:0)

在注册脚本中,您可以编写$ md5 $ password

我在php中不是很强,但是当你在登录脚本中写的时候不应该是md5($ password)吗?

答案 5 :(得分:0)

试试这个。您需要在这些命令周围加上括号,以确保仅对这些值进行测试。另外你有$ UserName = $ dbUserName,你需要让它= =而不是=。否则它将始终设置为true而不是测试它。

if(($UserName == $dbUserName) && (md5($password) == $dbPassword))

此外,您在顶部的代码是:

$msd5Password = $md5[$password];

你有两个错别字。首先,您的变量稍后是md5Password,因此您需要删除s。 md5的语法也是md5($ password)。最后md5是一个函数而不是变量,所以你不需要$。

更正语法:

$md5Password = md5($password);

我希望这有用!

相关问题