我无法弄清楚程序有什么问题。我知道的密码是正确的,但由于某种原因,我收到一个错误,说它不正确。
这是我的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';
}
}
答案 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);
我希望这有用!