簡體   English   中英

跨頁面的PHP會話

[英]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.

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