这是我的代码由于某种原因,它始终返回密码不正确。我不确定我是否忘记了某个地方的括号,我怎么能让它更安全,因为我现在正在使用_post
功能。
<?php
include 'config.php';
session_start();
session_destroy();
session_start();
$UserName = $_POST['UserName'];
$PassWord = $_POST['PassWord'];
if ($UserName&&$PassWord)
{
mysql_select_db("SegmentMath") or die ("Couldn't find database sorry.");
$query = mysql_query("SELECT * FROM Users WHERE UserName='$UserName'");
$numrows = mysql_num_rows($query);
if ($numrows!=0)
{
// code to login
while ($row = mysql_fetch_assoc($query))
{
$dbUserName = $row['UserName'];
$dbPassWord = $row['PassWord'];
}
//check to see if they match!
if ($UserName==$dbUsername&&$PassWord==$dbPassWord)
{
$_SESSION['UserName']=$dbUsername;
$_SESSION['PassWord']=$dbPassWord;
echo "<p>Finished Software</p>";
}
else
{
echo "Incorrect Password";
}
}
else die("Sorry username not found!");
}
else die("Please Enter A Valid Username And Password!");
?>
所以我几乎是肯定的我做了一些愚蠢的错误,它让我难倒了差不多30分钟。此文件只是login.php
,因此,如果用户在login.html
页面上输入用户名和密码,则会将该数据推送到此页Login.Php
。
我很困惑,为什么即使登录正确并且在数据库中,也说不正确的密码。
答案 0 :(得分:2)
我想说,最好使用它,我的意思是创建查询,找到username
和password
$login = mysql_query("SELECT * FROM users WHERE ID='". $UserName ."' AND PASSWORD='". md5($PassWord) ."');
$row=mysql_fetch_array($login); // fetch row
if($row!=null) // if found row
{
$_SESSION['UserName'] = $row['UserName']; // store in session
$_SESSION['PassWord'] = $row['PassWord'];
} %>
而不是
if (($UserName==$dbUsername)&&($PassWord==$dbPassWord))
{
$_SESSION['UserName']=$dbUsername;
$_SESSION['PassWord']=$dbPassWord;
echo "<p>Finished Software</p>";
}
答案 1 :(得分:1)
您的代码中有拼写错误。 PHP中的变量区分大小写...
19. while ($row = mysql_fetch_assoc($query))
20. {
21. $dbUserName = $row['UserName'];
22. $dbPassWord = $row['PassWord'];
23. }
24.
25. //check to see if they match!
26. if ($UserName==$dbUsername&&$PassWord==$dbPassWord)
21 行上的变量与 26 上的变量不匹配。
$dbUserName
与$dbUsername
答案 2 :(得分:0)
存储密码时,您可能正在使用某种加密技术。例如,如果您使用md5()
(仅作为示例,md5不是密码的最佳选择),您应该检查这种方式:
if ($UserName == $dbUsername && md5($PassWord) == $dbPassWord)
{
答案 3 :(得分:0)
if ($UserName==$dbUsername <= capitalize $dbUserName)
{
//YOUR LOGIC
}
答案 4 :(得分:0)
if ($UserName==$dbUsername&&$PassWord==$dbPassWord)
{
$_SESSION['UserName']=$dbUsername;
$_SESSION['PassWord']=$dbPassWord;
echo "<p>Finished Software</p>";
}
else
{
echo "Incorrect Password";
}
1)。在其他条件下进行..所以你能回应这四个 $ variables 给我吗?
2)。使用str_replace
删除$ _post中的空格答案 5 :(得分:0)
我认为你编码错误的方式。在会话开始后你不应该把会话破坏。首先,让我们通过session_start();
开始会话session_start();
$username = $_POST['username'];
$password = $_POST['password'];
$query = "SELECT * FROM table_name WHERE username = '$username'";
$result = mysql_query($query);
$count = mysql_num_rows($query);
$row = mysql_fetch_assoc($result);
if($count == 0)
{
//if there is no result
}
$dbpassword = $row['password'];
if($dbpassword == $password)
{
//put some session here
}
else
{
//if the password is not match
}
我希望这可能会有所帮助
答案 6 :(得分:-1)
您需要先连接到数据库。使用mysql_connect()
另请注意,此功能正在折旧,建议使用mysqli或PDO。上面的链接中有这些链接。