1. 程式人生 > >瀏覽器關閉cookie後,session處理

瀏覽器關閉cookie後,session處理

本文例項講述了php禁用cookie後session設定方法。

分享給大家供大家參考,具體如下:

我們都知道當在session 會話有基於cookie和基於url兩種傳遞SESSIONID的方法。為了實現客戶端禁止cookie傳送的情況也不影響客戶登陸網站,可以設定 php.ini中 session.use_trans_sid=1 ,表示當客戶端瀏覽器禁止cookie的時候,頁面上的連結會基於url傳遞SESSIONID。但是很多人僅僅設定了這一個選項並沒有達到效果,本人也 遇到此問題,後來一番研究發現
php.ini 檔案中還有兩個選項

session.use_cookies=1
session.use_only_cookies=1

仔細琢磨上面的英文就會發現其意義
session.use_cookies表示是否開始基於cookies的session會話
session.use_only_cookies 表示是否只開啟基於cookies的session的會話方式
所以如果想要在瀏覽器開啟cookie的時候用基於cookie的方式,在未開啟cookie的時候使用url的方式就進行如下設定(最常用的方式,推薦)
在php.ini檔案中:

session.use_trans_sid=1
session.use_only_cookies=0
session.use_cookies=1
或者 在php程式中

ini_set("session.use_trans_sid","1″);
ini_set("session.use_only_cookies",0);
ini_set("session.use_cookies",1);
如果不管瀏覽器是否開啟cookie,都使用url的方式就進行如下設定(這個例子主要想說明一下設定session.use_only_cookies 和 session.use_cookies的區別)
在php.ini檔案中

session.use_trans_sid=1
session.use_only_cookies=0
session.use_cookies=0
或者 在php程式中

ini_set("session.use_trans_sid","1″);
ini_set("session.use_only_cookies",0);
ini_set("session.use_cookies",0);
動手自己試一試 你就會明白session.use_only_cookies 和 session.use_cookies的區別。

實現了,關鍵是拿到session_id傳值,然後拿到
1.php
<?php
session_start();
$sid=session_id(); //關鍵
$_SESSION['bbbb']="session測試";
?>
<a href="2.php?sid=<?php echo $sid; ?>">下一頁</a>

2.php
<?php
session_id($_GET["sid"]);//關鍵
session_start();
echo "傳遞的session變數aa的值為:".$_SESSION['bbbb'];

?>

客戶端禁用cookie以後 session還是可以用,此時session的id值是基於cookie傳遞的,所以session就不能共享傳遞了,可以通過在url中附加PHPSESSID的值進行傳遞,這個就是session的id值。
 
禁用cookie,sessionid就不能直接傳遞了,因為http請求時sessionid就是放在cookie裡的。你說的通過url傳遞的,那是變通的方法,伺服器端通過session_id()函式可以獲知當前session的sessionid,然後在用php生成頁面的時候,把sessionid作為引數附加到url裡,確實可以實現在禁用cookie的情況下傳遞sessionid
 
第一種方式:
在每個超連結上新增一個PHPSESSID=$sid
//防止返回初始頁產生新的session
if(isset($_GET["PHPSESSID"])){
   session_id($_GET["PHPSESSID"]);
}
session_start();
$sid=session_id();
//在每個連結上新增引數PHPSESSID=$sid
其他頁面的獲取方式為:
if(isset($_GET["PHPSESSID"])){
      session_id($_GET["PHPSESSID"])
}
session_start();
 
第二種方式:
使用session.use_trans_sid=1,php.ini中配置
這種方式會在url上自動加上SID(href,location,action,注意:js跳轉不會新增上SID)
 
1、設定php.ini的session.use_trans_sid = 1或者開啟enable-trans-sid選項,讓PHP自動跨頁傳遞session id。
2、手動通過URL傳值、隱藏表單傳遞session id。
3、用檔案、資料庫等形式儲存session_id,在跨頁過程中手動呼叫。

相關推薦

瀏覽器關閉cookiesession處理

本文例項講述了php禁用cookie後session設定方法。分享給大家供大家參考,具體如下:我們都知道當在session 會話有基於cookie和基於url兩種傳遞SESSIONID的方法。為了實現客戶端禁止cookie傳送的情況也不影響客戶登陸網站,可以設定 php.in

瀏覽器關閉Session會話結束了麼?

今天想和大家分享一個關於Session的話題: 當瀏覽器關閉時,Session就被銷燬了? 我們知道Session是JSP的九大內建物件(也叫隱含物件)中的一個,它的作用是可以保 存當前使用者的狀態資訊,初學它的時候,認為Session的生命週期是從開啟一個

關閉瀏覽器session並不會銷燬(十)

當我們關閉瀏覽器後,session並不會銷燬。 session的銷燬與關閉瀏覽器無關,而關閉瀏覽器後,不能使用session是因為cookie是會話級別的問題,cookie沒了,cookie中的jsessionidid沒了,而cookie持久化後就沒問題。

瀏覽器關閉Session就銷燬了嗎?

       我們知道Session是JSP的九大內建物件(也叫隱含物件)中的一個,它的作用是可以儲存當前使用者的狀態資訊,初學它的時候,認為Session的生命週期是從開啟一個瀏覽器視窗傳送請求到關閉瀏覽器視窗,但其實這種說法是不正確的!當一個Session開始時,Servlet容器會建立一個HttpSe

巨坑:瀏覽器在短時間內對於同一個請求的處理會先等待上一個請求完成處理下一個請求導致在測試異步時誤導代碼有問題。

例子 red count 時間 ble http tab 問題 結束 例子:   tornado後端異步處理(模擬異步處理20秒)      瀏覽器請求接口:http://192.168.1.98:1104/test         然後又打開一個table,請求同一個接口

js監測頁面關閉傳送Ajax請求(瀏覽器關閉登出使用者清空session

說明: 需求為頁面關閉傳送一個ajax請求,使關閉瀏覽器及時清空session(瀏覽器關閉session並不會清空) 網站同時只能一個使用者登入,同一賬號後登入的使用者不能把前一個登入的使用者踢下線,有一個問題是前一個使用者不點選登出,那麼只能等到session超時下一個使用者才能登入。下面

【解決Chrome瀏覽器和IE瀏覽器上傳附件相容的問題 -- Chrome關閉flashuploadify外掛不可用的解決辦法】

專案中遇到過這種情況: 利用uploadify外掛在IE和chrome瀏覽器中上傳附件正常, 突然有一天chrome禁用了flash外掛,uploadify外掛在chrome中就不能正常使用了,IE上正常。   =========================================

django關閉debug報400錯誤

flow apach als http bad 訪問 host 需要 bug 原文出處:https://stackoverflow.com/questions/19875789/django-gives-bad-request-400-when-debug-false 在

當我的瀏覽器輸入域名發生了什麽?

wid 深入 連接 bubuko 轉發 一個 用戶管理 好的 請求報文 我們以百度為例子,當我在瀏覽器的中輸入網址www.baidu.com時,發生了什麽?       1.域名解析   要知道,數據傳輸時所識別的數據鏈路層封裝的幀,並不是通過字符串“www.baidu.c

登入被瀏覽器記住密碼密碼填充到密碼框問題

        一般登陸之後瀏覽器會詢問是否記住密碼,如果把密碼記住在瀏覽器上,下次登陸的時候瀏覽器會把使用者名稱和密碼自動填充到登入頁面。工作中做專案提測後,測試提出360瀏覽器記住密碼後會自用把登陸賬號和密碼填充到新增賬號頁面和修改賬號頁面,經過本地測試後發現確實存

瀏覽器輸入URL執行的全部過程

在瀏覽器輸入URL後,執行的全部過程 域名解析 發起TCP的3次握手 建立TCP連線後發起http請求 伺服器響應http請求 瀏覽器解析html程式碼,並請求html程式碼中的資源(如js,css,圖片等) 斷開TCP

django在關閉debugadmin介面 及靜態檔案無法載入的解決辦法

當debug為true的時候,ALLOWED_HOSTS是跳過不管用的。所以這裡需要將debug關掉,令debug=false,ALLOWED_HOSTS=[ '*' ]表示所有的主機都可以訪問 開啟django遠端訪問的命令是python manage.py runserver 0.0.0.0:8000,

關於layui 兩層彈框 關閉一個重新整理上一個彈框的某個下拉框問題

(我使用的layui版本為2.4.3) 最近因為專案需要,需要實現一層彈框(下面稱之為A彈框)後,點選按鈕跳出二層彈框(下面稱中國之為B彈框),可以實現新增新的下拉框值,然後再關閉B彈框是,可以實現區域性重新整理A彈框中的部分塊,使得剛新增的值顯示,但是不能是整

springmvc整合shirosession、request姓汪還是姓蔣?

1. 疑問 我們在專案中使用了spring mvc作為MVC框架,shiro作為許可權控制框架,在使用過程中慢慢地產生了下面幾個疑惑,本篇文章將會帶著疑問慢慢地解析shiro原始碼,從而解開心裡面的那點小糾糾。 (1)在spring controller中,request有

關於C#關閉窗體依舊有後臺程序在執行的解決方法

C#中WinForm程式退出方法技巧總結  一、關閉窗體  在c#中退出WinForm程式包括有很多方法,如:this.Close(); Application.Exit();Application.ExitThread(); System.Environment.Exit(0); 等他們各自的方法不一樣,

防止瀏覽器記住密碼自動填充表單

       自動填寫表單這個功能在登入的時候能實現就可以了。但是在內容頁面裡面的表單也被瀏覽器預設填充上了記住的資料,這就很噁心了。在網上百度了一下後發現,autocomplete="off" 方法對於搜狗、火狐這些瀏覽器來說並不管用。 再嘗試了一下各種姿勢後,得到解決方

Hybrid架構下載入本地H5資源如何處理Ajax請求?

希望在app中開啟H5頁面能達到Native那樣的速度,當然感覺不太可能,但兩者速度越接近越好。 網上查了資料,有種方法是將網頁資源嵌入到app中,開啟時相當於載入本地資源。 參考:阿里巴巴(中國站)使用者體驗設計部部落格 裡面有段是這麼描述的: 別忘了,我們是 Hybrid App,還可以充分利用 Nat

解決vue專案在瀏覽器中開啟#後面的連結被擷取的問題

在做微信公眾號下載的時候遇到了這個問題: 微信公眾號下載,做的是彈框提示,在瀏覽器中開啟,結果在手機瀏覽器中開啟的總是#之前的連結: 例如:http://yy2jd7.natappfree.cc/#/download,手機瀏覽器上開啟的頁面連結:http://yy2jd7.natap

瀏覽器輸入網址發生了什麼

1. 首先是輸入網址   以www.facebook.com為例 1. 瀏覽器查詢域名對應IP 2.1 瀏覽器發起DNS查詢請求: 在廣域網中,我們是基於IP地址進行通訊的。但通常客戶訪問的是一個網址,為此,我們需要先得到網址對應的IP地址,這就需要域名服務系統將域名

當我的瀏覽器輸入域名發生了什麼?(轉)

文章轉自 https://www.cnblogs.com/shy0322/p/9276883.html 我們以百度為例子,當我在瀏覽器的中輸入網址www.baidu.com時,發生了什麼?       1.域名解析   要知道,資料傳輸時所識別的資料鏈路層封裝的幀,並不是通過字串