關於PHP頁面跳轉出現SESSION丟失問題

2021-06-11 00:43:03 字數 1410 閱讀 2700

前兩天晚上利用休息時間開發乙個php專案,遇到了session在php頁面傳輸的問題。由於對php知識的淡忘,查閱了資料才得以解決。印象深刻,故作此文以備記錄,僅供參考交流。當然,這種問題原因主要有三種,網上說的也很詳細。在此,我只描述自己遇到的問題。

問題描述如下:

1、在登入頁面login.php獲得使用者賬號和密碼之後,跳轉至index.php,然後再index.php中建立session,並將使用者名稱或賬號註冊儲存至session變數中,如下:

@session_start();

$_session['userid'] = $userid;

2、然後需要跳轉至controller.php的時候傳遞$_session['userid'] ,以供使用,如下:

">前往

3、這樣一來當回到index.php的時候,檢測$_session['userid']是否存在,如果存在說明處於登入狀態,如下:

@session_start();

if(isset($_session['userid']))

實際上以上做法是無法實現登入狀態的儲存的。因為每個session都有自己的乙個session_id,這應該作為返回頁面時識別和開啟session的標識。否則客戶端根本無法找到此前註冊的session。因此,我們在一開始就應該獲得並儲存session_id,用來在頁面跳轉時作為傳遞引數之一。

解決方法如下:

1、在index.php建立session的同時獲得session_id,並儲存,如下:

@session_start();    

$sid = @session_id();

$_session['userid'] = $userid;

2、然後需要跳轉至controller.php的時候傳遞$_session['userid'] 和session_id,以供使用,如下:

&s=<?php echo $sid ?>">前往

3、在跳轉回index.php時應該傳回session_id,如下:

">返回

4、這樣一來當回到index.php的時候,檢測$_session['userid']是否存在,如果存在說明處於登入狀態,如下:

@session_id($_get['phpsessionid']);

@session_start();

$sid = @session_id();

if(isset($_session['userid']))

值得注意是index.php中的寫法(以第4步為準)。每跳轉至此頁面中,都需要取得session_id一次,這樣才能保證正確地啟動session,否則就會出問題。

//end ictwangbiao

android之 Activity跳轉出現閃屏

原文 同乙個應用,在不同手機上測試,activity之間跳轉出現閃屏,介面來回跳轉 查閱網上資料發現引起的有好幾種情況 1 由於finish原因,網傳,在onpause 裡延遲3s使用finish。2 自己新增overridependingtransition xx,xx activity進出動畫。...

PHP頁面跳轉

if isset url url echo cho meta http equiv refresh content 秒數 url 跳轉的檔案或位址 其中 xx是秒數,0為立即跳轉.refresh 是重新整理的意思.url 是要跳轉到的頁面.url echo 其中 更改 self 就可以實現跳轉限制原...

PHP頁面跳轉

header 函式的主要功能是將http協議標頭 header 輸出到瀏覽器。語法header string,replace,http response code string 必需。規定要傳送的報頭字串。replace 可選。指示該報頭是否替換之前的報頭,或新增第二個報頭。預設是 true 替換 ...