首頁 後端開發 PHP問題 如何解決php跳躍 session丟失問題

如何解決php跳躍 session丟失問題

Sep 14, 2021 am 09:18 AM
php session

php跳轉session遺失的解決方法:1、用Notepad開啟對應的檔案;2、格式選擇以UTF-8無bom格式編碼;3、將檔案儲存,並重新上傳到伺服器即可。

如何解決php跳躍 session丟失問題

本文操作環境:windows7系統、PHP7.1版,DELL G3電腦

如何解決php跳躍session遺失問題?

php 跳頁session遺失session機制

#1. 同頁面可以儲存與取得Session值,但跨頁面後就取得不了;  

2. 兩個頁面啟動session_start()之前,設定過session_id("myid"),也取得不到值。

       在使用 後去檢查session預設保存的目錄是不存在

如何解決php跳躍 session丟失問題

 

 原因2

thinkphp開發的一個項目,登入成功後又跳到登入頁面,在提交資訊後輸出session都是正常的,沒有問題,但是頁面跳轉後,session出現失落現象,無法正常完成登陸。

透過尋找資料,發現原來是bom頭的原因。受COOKIE送出機制的限制,在這些檔案開頭已經有BOM的檔案中,COOKIE無法送出(因為在COOKIE送出前PHP已經送出了檔案頭),所以登入和登出功能失效。一切都依賴COOKIE、SESSION實現的功能全部無效。

正確的處理方法是去掉某些文件的bom,一般情況是在入口文件出現的bom問題,我處理的方法是用Notepad 打開文件,格式選擇以UTF-8無bom格式編碼,然後儲存,重新上傳到伺服器即可。但一定要注意,去掉bom上傳到伺服器之前需要把伺服器上原始檔刪掉,上傳覆蓋不能去掉bom。

 

session 機制

session是伺服器端的會話機制,當客戶端的請求伺服器建立session時,伺服器會先偵測該請求裡面是否包含一個惟一的sessionID,如果是,說明伺服器已經為該使用者建立過session,只要按照該sesionID檢索該使用者的session供使用者使用,如果沒有sessionID,伺服器會為該使用者新建一個帶有唯一表示服sessionID的session。創建完成後,該sessionID會被伺服器傳回給客戶端,保存到客戶端本地

一般保存該session ID的機制是Cookie,但是由於Cookies可以被人為禁止,這就得保證Cookies被禁止之後,仍舊可以透過session進行會話,一般是透過url重寫進行,表現形式為http://...../xxx;jsessionid= ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-1457888764,另一種是作為附加查詢後面,表現形式為http://...../xxx?jsessionid=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-1457888764這兩種方式對於採用用戶來說是沒有區別的,只是伺服器在解析的時候處理的方式不同,種方式也有利於把session id的資訊和正常程式參數區分開來。

為了在整個互動過程中始終保持狀態,就必須在每個客戶端可能要求的路徑後面都包含這個session id。

另外是關於session失效的誤解:

在談論session機制的時候,常常聽到這樣一種誤解「只要關閉瀏覽器,session就消失了」。其實可以想像一下會員卡的例子,除非顧客主動 對店家提出銷卡,否則店家絕對不會輕易刪除顧客的資料。對session來說也是一樣的,除非程式通知伺服器刪除一個session,否則伺服器會一直保 留,程式一般都是在使用者做log off的時候發個指令去刪除session。然而瀏覽器從來不會主動在關閉之前通知伺服器它將要關閉,因此伺服器根本不會有機會知道瀏覽器已經關閉,之所以會有這種錯覺,是大部分session機制都使用會話cookie來保存session id ,而關閉瀏覽器後這個session id就消失了,再次連接伺服器時也無法找到原來的session。如果伺服器設定的cookie被儲存到硬碟上,或是使用某種手段改寫瀏覽器發出的 HTTP請求頭,把原來的session id傳送給伺服器,則再次開啟瀏覽器仍然能夠找到原來的session。

 

正是因為關閉瀏覽器不會導致session被刪除,迫使伺服器為seesion設定了一個失效時間,當距離客戶端上一次使用session的時間超過這個失效時間時,伺服器就可以認為客戶端已經停止了活動,才會刪除session 以節省儲存空間。

推薦學習:《PHP影片教學

以上是如何解決php跳躍 session丟失問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 Dec 24, 2024 pm 04:42 PM

PHP 8.4 帶來了多項新功能、安全性改進和效能改進,同時棄用和刪除了大量功能。 本指南介紹如何在 Ubuntu、Debian 或其衍生版本上安裝 PHP 8.4 或升級到 PHP 8.4

CakePHP 日期和時間 CakePHP 日期和時間 Sep 10, 2024 pm 05:27 PM

為了在 cakephp4 中處理日期和時間,我們將使用可用的 FrozenTime 類別。

討論 CakePHP 討論 CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP 是 PHP 的開源框架。它旨在使應用程式的開發、部署和維護變得更加容易。 CakePHP 基於類似 MVC 的架構,功能強大且易於掌握。模型、視圖和控制器 gu

CakePHP 檔案上傳 CakePHP 檔案上傳 Sep 10, 2024 pm 05:27 PM

為了進行文件上傳,我們將使用表單助理。這是文件上傳的範例。

CakePHP 建立驗證器 CakePHP 建立驗證器 Sep 10, 2024 pm 05:26 PM

可以透過在控制器中新增以下兩行來建立驗證器。

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 Dec 20, 2024 am 11:31 AM

Visual Studio Code,也稱為 VS Code,是一個免費的原始碼編輯器 - 或整合開發環境 (IDE) - 可用於所有主要作業系統。 VS Code 擁有大量針對多種程式語言的擴展,可以輕鬆編寫

CakePHP 快速指南 CakePHP 快速指南 Sep 10, 2024 pm 05:27 PM

CakePHP 是一個開源MVC 框架。它使應用程式的開發、部署和維護變得更加容易。 CakePHP 有許多函式庫可以減少大多數常見任務的過載。

您如何在PHP中解析和處理HTML/XML? 您如何在PHP中解析和處理HTML/XML? Feb 07, 2025 am 11:57 AM

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲

See all articles