大家都知道,session
的sessionid
是通過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...