登录会话问题
这是我的代码,由于某种原因,它总是返回密码不正确。我不确定我是否在某个地方忘了支架,我怎样才能让它更安全,因为现在我正在使用_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
。
我很困惑,为什么它说不正确的密码,即使登录是正确的,并在数据库中。
回答:
您需要先连接到数据库。使用mysql_connect()
另请注意,此功能正在折旧,建议使用mysqli或PDO。在上面的链接中有链接。
回答:
您可能在存储密码时使用了一些加密。因为如果你使用md5()
例如(只是一个例子,MD5是不是最好的密码),你应该检查是这样的:
if ($UserName == $dbUsername && md5($PassWord) == $dbPassWord) {
回答:
我会说,这是更好地利用这一点,我的意思是创建查询其找到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>";
}
回答:
你在你的代码中的错字。 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)
变量上线不匹配就行。
$dbUserName
是不一样的$dbUsername
回答:
if ($UserName==$dbUsername <= capitalize $dbUserName) {
//YOUR LOGIC
}
回答:
if ($UserName==$dbUsername&&$PassWord==$dbPassWord) {
$_SESSION['UserName']=$dbUsername;
$_SESSION['PassWord']=$dbPassWord;
echo "<p>Finished Software</p>";
}
else
{
echo "Incorrect Password";
}
1)。它在其他条件去..所以你可以重复这四个$变量给我吗?从$ _ POST
2)卸下摆臂空间与str_replace函数
回答:
我认为你错了代码时。会话启动后,您不应该将会话销毁。首先,让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
}
我希望这可以帮助
以上是 登录会话问题 的全部内容, 来源链接: utcz.com/qa/263387.html