微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用本地托管的 sqlite3 数据库在登录时创建 PHP $_SESSION['x']

如何解决使用本地托管的 sqlite3 数据库在登录时创建 PHP $_SESSION['x']

我正在编写一个包含登录页面(作为索引页面)的应用程序,我想在登录有效时分配一个 $_SESSION['user'] 变量,以便使用身份验证脚本保护受限页面。我在没有设置会话的情况下一切正常,但是一旦我尝试从 index.PHP 启动会话,一切都会停止工作。有人可以向我解释发生了什么吗?我已经阅读和尝试不同的东西 2 天了..

db.PHP

<?PHP
    $con = new sqlite3("db/test.db");
    
    if(!$con){
        echo "Failed to connect to the Hosts Database";
    }
?>

auth.PHP

<?PHP
    if(!isset($_SESSION['user'])){
        header('Location: index.PHP');
    }
?>

index.PHP

<?PHP
    session_start();
?>

<!DOCTYPE html>
<head>
    <title>App</title>
    <Meta charset="UTF-8">
    <Meta name="viewport" content="width=device-width,initial-scale=1.0">
</head>
<body>
    <?PHP
        require("db/db.PHP");
        if(isset($_POST["login"])){
            $username = $_POST["username"];
            $passwd = $_POST["upass"];

            $sql = "SELECT * FROM access WHERE (user='".$username."' AND pass='".md5($passwd)."');";
            $r = $con->query($sql);
            if($r){
                $_SESSION['user'] = $username;
                echo "<script>window.location.replace('access.PHP');</script>";
            }
        } else {
    ?>
    <form name="loginForm" id="loginForm" method="POST" action="">
        <center>
            <input type="text" name="username" id="username" placeholder="Username" required/>
            <input type="password" name="upass" id="upass" placeholder="Password" required />
                <br />
            <input type="submit" name="login" value="Login" />
        </center>
    </form>
<?PHP
    }
?>
</body>
</html>

然后在 access.PHP 中有 include('db/auth.PHP')。正如我所说,如果我删除 session_start 并删除设置变量,它可以正常工作,实际上我之前确实在另一个脚本上工作过但丢失了它,现在我真的很困惑为什么它在尝试重做时不起作用......>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。