0

我正在尝试使用 PHP 学习会话,并在创建身份验证应用程序时发现,当我进行硬刷新(单击 URL 并点击刷新)时,会话数据会丢失,即使它不是我设置的 3000 秒。我真的需要你的帮助。我被困在这里两天了,找不到任何解决方案。首先,我尝试了 PHP 实时服务器 localhost:3030,然后还尝试了实时托管站点,但仍然没有运气。请在这里帮助我。

<?php
        session_name('auth_app');
        session_start([
                'cookie_lifetime' => 3000,
        ]);
        $loggedin = logged_value() ?? false ;
        function logged_value() {
            if(isset($_POST['username']) && isset($_POST['password'])) {
                if('admin' == $_POST['username'] && 'a51e47f646375ab6bf5dd2c42d3e6181' == md5($_POST['password'])) {
                    return true;
                }
            }
        }
        $_SESSION['loggedin'] = $loggedin;
        if(isset($_POST['logout'])) {
            $_SESSION['loggedin'] == false;
            session_destroy();
        }
    ?>
    
    <!doctype html>
    <html lang="en">
    <head>
        ...
    </head>
    <body>
        <div class="container">
            <div class="row">
                <div class="column column-60 column-offset-20">
                    <h2>AUTH Example</h2>
                    <?php
                    if( true == $_SESSION['loggedin'] ) {
                        printf("<p>Hello %s, Welcome!</p>", $_POST['username']);
                    }else {
                        printf("<p>Hello %s, Welcome!</p>", 'Stranger' );
                    }
                        ?>
                </div>
            </div>
            <div class="row">
                <div class="column column-60 column-offset-20">
                    <?php if(false == $_SESSION['loggedin']) : ?>
                    <form method="post">
                        <input type="text" name="username" id="username" placeholder="Username">
                        <input type="password" name="password" id="password" placeholder="Password">
                        <button type="submit" class="button-primary" name="submit">Login</button>
                    </form>
                    <?php else: ?>
                        <form method="post">
                            <input type="hidden" name="logout" value="1">
                            <button type="submit" class="button-primary" name="submit">Logout</button>
                        </form>
                    <?php endif; ?>
                </div>
            </div>
        </div>
    
    
    </body>
    </html>
4

1 回答 1

0

使用直接会话超时,因为会话开始无法计算秒数cookie_lifetime

session_start();
header('Refresh: 3000; url=logout.php');
于 2021-07-25T19:08:50.737 回答