我在 PHP 中的登录脚本有一点问题。当用户登录时,它只有在第二次尝试后才能工作,没有错误,但看起来用户在第一次尝试时输入了错误的密码。
有时,当我一直在测试该站点时,在我第一次尝试登录后,它会将我发送回登录页面。然后我手动输入主页的 url,它有时会让我去那里。(顶部有一些 php 检查用户是否已经登录,所以我猜有时登录脚本会将 SESSION 设置为 true)
大多数时候它并没有这样做。它只会将我重定向回登录而不打印错误消息。我相信问题出在主页的顶部,而不是登录脚本,因为在删除重定向后,如果 mysql 没有返回与用户/密码匹配的行,它无论如何都会将我引导到登录页面。
这是我的登录脚本
<?php
session_start();
// Include required MySQL configuration file and functions
// Check if user is already logged in
if (isset($_SESSION['logged_in'])) {
// If user is already logged in, redirect to main page
redirect('home.php');
}
else {
// Make sure that the user submitted a username/password and username
// only consists of alphanumeric Chars
if ( (!isset($_POST['username'])) || (!isset($_POST['password'])) OR
( !ctype_alnum($_POST['username'])) ) {
redirect('login.php');
}
// Connect to database
$mysqli = @new mysqli(DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
if (mysqli_connect_errno()) { printf ("Unable to connect to database %s",
mysqli_connect_error());
exit();
}
//Escape any unsafe characters before querying database
$username = $mysqli->real_escape_string($_POST['username']);
$password = $mysqli->real_escape_string($_POST['password']);
// construct SQL statement for query & execute
$sql = "SELECT * FROM peeps WHERE name = '" . $username . "'
AND pword = SHA1('" . $password . "') ";
$result = $mysqli->query($sql);
// If one row is returned, username and password are valid.
if ($result->num_rows == 1 ) {
// Set the session variable for login status to true
$_SESSION['logged_in'] = true;
$_SESSION['name'] = $username;
echo "successfull ";
redirect('home.php');
}
else {
echo "didnt return row<hr>";
redirect back to login page.
redirect('loginPage.php');
}
}
?>
这是我主页顶部的代码..
<?php
// Start session
session_start();
// Include required functions file
require_once('functions.php');
// Check login status... if not logged in redirect to login screen
if (check_login_status() == false) {
redirect('loginPage.php');
}
$username = $_SESSION['name'];
?>
任何帮助将不胜感激,如果您想进一步澄清我的意思,您可以注册GateKeeper并查看我在说什么。
这也是我的第一个问题,所以对我如何提出的任何评论将不胜感激。
谢谢!