[英]making user redirect if not logged in using php sessions
我是 web 開發的初學者,我正在創建我的第一個項目。 我正在為我的 php 文件使用 XAMPP。 我基本上已經創建了app.php , sigin.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.