我們知道當客戶端瀏覽器把cookie禁掉後,伺服器端的session是沒有辦法正常使用的。因為伺服器端的session是通過sessionid來區分不同使用者的session的,而這個sessionid就是通過客戶端的cookie傳遞到伺服器端的,更嚴格地說,因為在php使用session_start()語句後,會向客戶端傳送乙個頭部資訊,其中就指定了此次session會話的sessionid,此sessioid就是存放在客戶端的cookie中的,現在cookie禁掉後,當然就無法儲存sessionid了。
下面是session_start()的輸出的頭部資訊:
content-type: text/html
x-powered-by: php/4.3.3
set-cookie: psd=9b577c86baea8a15ebe15b220ee1e180; path=/
expires: thu, 19 nov 1981 08:52:00 gmt
cache-control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
pragma: no-cache
現在可以確定把cookie禁掉後,無法使用session。那遇到這種情況,客戶就是要禁cookie,而且我們又要保證這部分使用者能正常使用,該怎麼辦呢?辦法就是使用php的output_add_rewrite_var這個函式。
這樣就不怕禁用cookie了,因為sessionid會自動跟在url後面而且form中會出現sessionid的hidden值。在伺服器端照常使用session就可以了。
測試**:test.php
<?php
session_start();
$_session['test'] = 1;
output_add_rewrite_var('phpsessid',session_id ());
echo 'link';
?>
test1.php:
<?php
session_start();
print_r($_session);
?>
php禁用cookie後session設定方法分析
我們都知道當在session 會話有基於cookie和基於url兩種傳遞sessionid的方法。為了實現客戶端禁止cookie傳送的情況也不影響客戶登陸 可以設定 php.ini中 session.use trans sid 1 表示當客戶端瀏覽器禁止cookie的時候,頁面上的鏈結會基於url傳...
禁用cookie後session的保持
我們都知道當在session會話有基於cookie和基於url兩種傳遞sessionid的方法。為了實現客戶端禁止cookie傳送的情況也不影響客戶登陸 可以設定php.ini中 session.use trans sid 1,表示當客戶端瀏覽器禁止cookie的時候,頁面上的鏈結會基於url傳遞s...
禁用cookie後session的設定
session 會話有基於cookie和基於url兩種傳遞sessionid的方法。為了實現客戶端禁止cookie傳送的情況也不影響客戶登陸 可以設定 php.ini中 session.use trans sid 1 表示當客戶端瀏覽器禁止cookie的時候,頁面上的鏈結會基於url傳遞sessio...