我的登录页面未正确重定向


My login page is not redirecting properly

>我有一个登录页面,可以很好地与我的数据库配合使用,但是它无法定向到主页。我也无法从 URL 访问我的主页,因为它会将我直接引导回登录页面。

这是我的登录PHP:

    //Start session
    session_start();
    //Include database connection details
    require_once('index.php');
    //Array to store validation errors
    $errmsg_arr = array();
    //Validation error flag
    $errflag = false;
    //Function to sanitize values received from the form. Prevents SQL injection
    function clean($str) {
        $str = @trim($str);
        if(get_magic_quotes_gpc()) {
            $str = stripslashes($str);
        }
        return mysql_real_escape_string($str);
    }
    //Sanitize the POST values
    $username = clean($_POST['username']);
    $password = clean($_POST['password']);
    //Input Validations
    if($username == '') {
        $errmsg_arr[] = 'Username missing';
        $errflag = true;
    }
    if($password == '') {
        $errmsg_arr[] = 'Password missing';
        $errflag = true;
    }
    //If there are input validations, redirect back to the login form
    if($errflag) {
        $_SESSION['ERRMSG_ARR'] = $errmsg_arr;
        session_write_close();
        header("location: index.php");
        exit();
    }
    //Create query
    $qry="SELECT * FROM USER WHERE Username='$username' AND Password='$password'";
    $result=mysql_query($qry);
    //Check whether the query was successful or not
    if($result) {
        if(mysql_num_rows($result) > 0) {
            //Login Successful
            session_regenerate_id();
            $member = mysql_fetch_assoc($result);
            $_SESSION['SESS_MEMBER_ID'] = $member['mem_id'];
            $_SESSION['SESS_FIRST_NAME'] = $member['username'];
            $_SESSION['SESS_LAST_NAME'] = $member['password'];
            session_write_close();
            header("location: welcome.php");
            exit();
        }else {
            //Login failed
            $errmsg_arr[] = 'user name and password not found';
            $errflag = true;
            if($errflag) {
                $_SESSION['ERRMSG_ARR'] = $errmsg_arr;
                session_write_close();
                header("location: index.php");
                exit();
            }
        }
    }else {
        die("Query failed");
    }
?>

这是我的主页:

session_start();
//welcome.php
$user = $_SESSION['username'];
if(!isset($_SESSION['username']))
{
    header("Location: index.php");
    exit();
}
else
{
    echo "hi $username you are loged in //Welcome to our website <a href='"logout.php'">Logout</a>";
}

您正在检查会话是否包含名为 username 的键,但您没有在登录文件中的任何位置设置该键,因此:

if(!isset($_SESSION['username']))

始终计算结果为 true 并将您发送到索引.php

PS:尽量不要压制错误(@运算符) - 在大多数情况下,这被认为是不好的做法。有一些例外,但你稍后会弄清楚它们:)