禁用cookie後,如何使用session?

2021-08-02 05:56:55 字數 2962 閱讀 3035

大家都知道,sessionsessionid是通過cookie來儲存的,那麼如果我們的瀏覽器禁用了cookie,還可以使用session嗎?這道面試題是不是經常被問?你能答得出來嗎?禁用cookie後,session還是可以使用的。

禁用cookie後,伺服器每次session_start的時候都會建立乙個單獨的session檔案,後果就是無法讓多個頁面共享同乙份session

使用url重定向方法,在每個要使用session的頁面的鏈結中都加上sessionid,然後在每個頁面中都去請求這乙份session檔案就可以解決問題。這裡我將使用**來做案例講解。如果沒有禁用cookie的話,下面的**是可以使用的。

**首頁:goods.php

lang="en">

charset="utf-8">

商品介面title>

head>

圖書**首頁h1>

href="dobuy.php?id=sn001&name=三國演義">三國演義a>

href="dobuy.php?id=sn002&name=水滸傳">水滸傳a>

href="dobuy.php?id=sn003&name=紅樓夢">紅樓夢a>

href="dobuy.php?id=sn004&name=西遊記">西遊記a>

href="showcart.php">檢視購物車商品a>

body>

html>

處理購買介面:dobuy.php

<?php

session_start();

$id = $_get['id'];

$name = $_get['name'];

$_session[$id] = $id.'==>'.$name;

echo

"新增成功

";echo

"回到首頁";

購物車介面:showcart.php

<?php

session_start();

foreach ($_session

as$key => $value)

echo

"回到首頁";

核心**在這裡:

if(isset($_get['phpsessionid']))

session_start();

$sid = session_id();

首先判斷是否有phpsessionid引數是否存在,如果存在就使用這個sessionid來開啟session,如果沒有就建立乙個新的session檔案。然後在每個鏈結上都加上phpsession=sessionid

goods.php

<?php

if(isset($_get['phpsessionid']))

session_start();

$sid = session_id();

?>

lang="en">

charset="utf-8">

商品介面title>

head>

圖書**首頁h1>

href="dobuy.php?id=sn001&name=三國演義&phpsessionid=<?php echo $sid;?>">三國演義a>

href="dobuy.php?id=sn002&name=水滸傳&phpsessionid=<?php echo $sid;?>">水滸傳a>

href="dobuy.php?id=sn003&name=紅樓夢&phpsessionid=<?php echo $sid;?>">紅樓夢a>

href="dobuy.php?id=sn004&name=西遊記&phpsessionid=<?php echo $sid;?>">西遊記a>

href="showcart.php?phpsessionid=<?php echo $sid;?>">檢視購物車商品a>

body>

html>

dobuy.php

<?php

if(isset($_get['phpsessionid']))

session_start();

$sid = session_id();

$id = $_get['id'];

$name = $_get['name'];

$_session[$id] = $id.'==>'.$name;

echo

"新增成功

";echo

"回到首頁";

showcart.php

<?php

if(isset($_get['phpsessionid']))

session_start();

$sid = session_id();

foreach ($_session

as$key => $value)

echo

"回到首頁";

包含著會話名以及會話 id 的常量,格式為 「name=id」,或者如果會話 id 已經在適當的會話 cookie 中設定時則為空字串。 這和 session_id() 返回的是同乙個 id。

編輯php.ini檔案,修改use_trans_sid配置為1,即代表啟用透明sid,抱歉,我的windows沒有測試出來。

PHP客戶端禁用cookie如何使用session

第一種方式 在每個超連結上新增乙個phpsessid sid 防止返回初始頁產生新的session if isset get phpsessid 啟動乙個session session start 獲取當前session的session id sid session id 在每個鏈結上新增引數php...

禁用cookie後session是如何設定的

當在session會話有基於cookie和基於url兩種傳遞sessionid的方法。為了實現客戶端禁止cookie傳送的情況也不影響客戶登陸 可以設定php.ini中 session.use trans sid 1,表示當客戶端瀏覽器禁止cookie的時候,頁面上的鏈結會基於url傳遞sessio...

禁用cookie後session是如何設定的

我們都知道當在session會話有基於cookie和基於url兩種傳遞sessionid的方法。為了實現客戶端禁止cookie傳送的情況也不影響客戶登陸 可以設定php.ini中 session.use trans sid 1,表示當客戶端瀏覽器禁止cookie的時候,頁面上的鏈結會基於url傳遞s...