簡體   English   中英

如果未使用 php 會話登錄,則進行用戶重定向

[英]making user redirect if not logged in using php sessions

我是 web 開發的初學者,我正在創建我的第一個項目。 我正在為我的 php 文件使用 XAMPP。 我基本上已經創建了app.phpsigin.php 因此,為了防止用戶直接訪問我的app.php ,我在 php 中使用了 session 變量。 因此,我在我的app.php之前添加了以下 PHP 代碼。

<?php
    session_start();

    if(!isset($_SESSION['loginstatus'])) {
        header('location:./login.php');
        die();
    }
?>

我正在我的 signin.php 中設置我的session變量,如下所示:

if($user['username'] == $username && $user['password'] == $password) {
        $_SESSION['username'] = $username;
        $_SESSION['loginstatus'] = 'success';

        echo "success!";

        header('location:../app.php');
 }

現在我嘗試在沒有登錄的情況下訪問我的app.php ,我仍然能夠訪問app.php 要檢查問題出在哪里,我清除了我的瀏覽器歷史記錄和 cookies,然后我嘗試訪問app.php ,然后令人驚訝的是它起作用了,我實際上被重定向到登錄頁面,但是一旦我第一次成功登錄,然后注銷並再次嘗試無需登錄即可訪問app.php ,我再次無需登錄即可訪問app.php

現在由於某種原因,我覺得我的瀏覽器也在保存 session 變量,所以要檢查我是否寫了一小段代碼並粘貼到我的app.php中:

<?php
    var_dump($_SESSION['loginstatus']);
?>

首次成功登錄后,我的$_SESSION['loginstatus']始終設置為successful 現在我說我是一個初學者,我學到的是 session 存儲在服務器端。 所以我對此感到非常困惑。

您的網絡瀏覽器“phpsessid”中有一個 cookie,它將 Session 的 ID 存儲在服務器上。 在正常情況下,您會在注銷時銷毀 Session。

session_unset(); 取消設置所有 session 變量

session_destroy(); 破壞 session

Session 將在時間 X 后超時。您可以更改它,在此處描述 -> 鏈接

因此,如果您的瀏覽器中有一個有效 ID 為未超時 Session 的 cookie,您將始終能夠登錄。

所以基本上,轉到瀏覽器設置>隱私和安全>更多>預加載頁面以更快地瀏覽和搜索

我剛剛從 chrome 禁用了這個默認設置,它開始按預期工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM