[英]PHP Session across pages
有這個問題。 我知道互聯網上有很多這樣的問題,但是似乎沒有一個對我有用:
因此,我計划在網站上制作一個管理面板。 您可以通過登錄屏幕進入,名稱和密碼正確無誤后即可進行會話。 在其他管理頁面上,我將測試是否設置了該會話,由此我將知道用戶是否可以訪問該頁面。
Inlog.php(簡化)
<?php session_start(); ?> <html ...
然后經過很多控制
if ($adminpwd == $pass) {
session_regenerate_id();
$_SESSION["mysessionname"] = $name;
$tijd = date('H:i:s', strtotime('+ 30 minutes'));
$_SESSION["E4A_einde"] = $tijd;
session_write_close();
echo "<script type='text/javascript'>window.location = 'myotheradminpage'</script>";
}
我的其他php頁面包含此腳本
<?php session_start();
if (!isset($_SESSION["mysessionname"])) {
session_destroy();
echo '<SCRIPT LANGUAGE="JavaScript"> window.alert("no session found") </SCRIPT>';
echo "<script type='text/javascript'>window.location = 'myloginpage'</script>";
}
有了這個元素,如果未設置會話,則存在重定向,如果設置了會話,則將觸發php頁面上的其他代碼。
但是事實是,每一次我都會再次重定向到我的登錄頁面。 因此,我的會話未設置:s無法弄清楚原因,請幫助我。
我在每個頁面上嘗試了很多方法以添加session_start()方法,在設置會話之前嘗試重新生成會話ID,但是沒有任何效果。
在HTML之前的初始session_start
,嘗試進行以下設置:
<?php session_start();
$_SESSION["mysessionname"]; ?>
<html ...
這將在任何內容運行之前聲明您的會話變量。
讓我知道這個是否奏效。
刪除session_regenerate_id
。 它發送另一個cookie,但是已經發送了輸出。
還要將呼叫刪除到session_write_close
。 無論如何,這種情況都會在腳本的末尾發生,並且這種微優化對代碼庫的質量有負面影響。 如果您遇到並發問題,請使用memcached
會話存儲,但是您離那里很遠。
同時刪除session_destroy
調用。 如果他未被授權,則他未被授權。 這里的邏輯建議清除一個已經為空的會話。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.