cookie
cookie計(jì)數(shù)器
- 題目:
第一次刷新顯示1,第2,3,4...n次刷新顯示n
第一次 瀏覽器 -> apache (給瀏覽器一個(gè)cookie)
第二次 瀏覽器 (帶著cookie) -> apache (更改瀏覽器的cookie)
答:
先setcookie--分配給--瀏覽器-->cookie值矿筝,下次直接加
if(!isset($_COOKIE['num'])) {
setcookie('num',1);
} else {
setcookie('num' , $_COOKIE['num'] +1);
}
echo $_COOKIE['num'];
注:這種辦法永遠(yuǎn)比瀏覽器慢一拍乐导,這是因?yàn)槿绻鹲etcookie ,$_COOKIE想獲取cookie的值,需要在下一次請(qǐng)求中才可以訪問(wèn)到
借助臨時(shí)變量來(lái)幫忙
計(jì)算器終極改進(jìn):
if( !isset($_COOKIE['num']) ) {
$num = 1;
setcookie('num' , $num);
} else {
$num = $_COOKIE['num'] + 1;
setcookie('num' , $num);
}
echo $num;
setcookie的第3個(gè)參數(shù),表示cookie的聲明周期,需要用時(shí)間戳來(lái)表示觅闽,不加為關(guān)閉瀏覽器清除cookie
setcookie('sec' , '!!!' , time()+10);
cookie的第四個(gè)參數(shù) ,當(dāng)不加時(shí)漫雕,只能同級(jí)的子目錄下能訪問(wèn)到設(shè)置的cookie姥卢,在上級(jí)目錄是訪問(wèn)不到的强品,加上‘/’,代表本個(gè)域名的根目錄都可以訪問(wèn)到
setcookie('test2' , '666' , time()+60 , '/');
第5個(gè)參數(shù),不常用,cookie是不能跨域的,可以在不同的子域名中生效
大的網(wǎng)站,往往有很多子域名,如果讓cookie 在不同的子域名中生效
book.163.com mil.163.com lady.163.com
指定到確定的位置去取出cookie
setcookie('test2' , '666' , time()+60 , '/' , '163.com');
1. 瀏覽器允許每個(gè)域名所包含的cookie數(shù):
Microsoft指出InternetExplorer8增加cookie限制為每個(gè)域名50個(gè)清女,但I(xiàn)E7似乎也允許每個(gè)域名50個(gè)cookie。
Firefox每個(gè)域名cookie限制為50個(gè)晰筛。
Opera每個(gè)域名cookie限制為30個(gè)嫡丙。
Safari/WebKit貌似沒有cookie限制拴袭。但是如果cookie很多,則會(huì)使header大小超過(guò)服務(wù)器的處理的限制曙博,會(huì)導(dǎo)致錯(cuò)誤發(fā)生拥刻。
注:“每個(gè)域名cookie限制為20個(gè)”將不再正確!
2.當(dāng)很多的cookie被設(shè)置父泳,瀏覽器如何去響應(yīng)般哼。
除Safari(可以設(shè)置全部cookie,不管數(shù)量多少)惠窄,有兩個(gè)方法:
最少最近使用(leastrecentlyused(LRU))的方法:當(dāng)Cookie已達(dá)到限額蒸眠,自動(dòng)踢除最老的Cookie,以使給最新的Cookie一些空間杆融。Internet Explorer和Opera使用此方法楞卡。
Firefox很獨(dú)特:雖然最后的設(shè)置的Cookie始終保留,但似乎隨機(jī)決定哪些cookie被保留脾歇。似乎沒有任何計(jì)劃(建議:在Firefox中不要超過(guò)Cookie限制)蒋腮。
3. 不同瀏覽器間cookie總大小也不同:
Firefox和Safari允許cookie多達(dá)4097個(gè)字節(jié),包括名(name)介劫、值(value)和等號(hào)徽惋。
Opera允許cookie多達(dá)4096個(gè)字節(jié),包括:名(name)座韵、值(value)和等號(hào)险绘。
Internet Explorer允許cookie多達(dá)4095個(gè)字節(jié),包括:名(name)誉碴、值(value)和等號(hào)宦棺。
注:多字節(jié)字符計(jì)算為兩個(gè)字節(jié)。在所有瀏覽器中黔帕,任何cookie大小超過(guò)限制都被忽略代咸,且永遠(yuǎn)不會(huì)被設(shè)置。
session
1.重要的信息放在哪里?
服務(wù)器端
2.瀏覽器拿箱子的號(hào),是用什么記住這個(gè)號(hào)的,每次來(lái)訪問(wèn)服務(wù)器用什么帶著這個(gè)號(hào)來(lái)的?
cookie
所以說(shuō),cookie和session是有聯(lián)系的
3. 使用
//賦值和讀取都需要session_start()
session_start();
$_SESSION['area'] = 'beijing';
注:
1.session無(wú)論是讀取,修改,銷毀( $_SESSION = array();session_destroy()) 都要先session_start();
2.session的讀取,修改,銷毀,可以直接操作$_SESSION數(shù)組
3. session的配置
session的存儲(chǔ)路徑
session.save_path = "c:/wamp/tmp"
是否使用cookie(來(lái)傳遞session_id)
; http://php.net/session.use-cookies
session.use_cookies = 1
; 是否強(qiáng)制只用cookie來(lái)傳遞session_id
; http://php.net/session.use-only-cookies
session.use_only_cookies = 1
; session_id的cookie名稱
; http://php.net/session.name
session.name = PHPSESSID
; 是否自動(dòng)session_start
; http://php.net/session.auto-start
session.auto_start = 0
; session_id的生命周期
; http://php.net/session.cookie-lifetime
session.cookie_lifetime = 0
; 傳遞session_id的cookie的有效路徑.
; http://php.net/session.cookie-path
session.cookie_path = /
//根目錄,跟cookie不同,session可以往上跳
; 是否通過(guò)URL傳遞session_id
; http://php.net/session.use-trans-sid
session.use_trans_sid = 0
; 過(guò)期session文件被清理的概率
; http://php.net/session.gc-divisor
session.gc_divisor = 1000
(以秒為單位,兩個(gè)配合清除服務(wù)器上的過(guò)期session文件)
; 多少秒沒更新的session文件,將被視為"可回收"
; http://php.net/session.gc-maxlifetime
session.gc_maxlifetime = 1440
session與cookie對(duì)比
特點(diǎn) 特點(diǎn)
特點(diǎn) | cookie | sesion |
---|---|---|
存儲(chǔ)地址 | 客戶 | 服務(wù)器端 |
存儲(chǔ)類型 | 字符串,數(shù)字 | 字符串,數(shù)字,數(shù)組,對(duì)象 |
創(chuàng)建方式 | setcookie | 直接操作$_SESSION |
讀取 | $_COOKIE | $_SESSION |
銷毀 | setcookie(key,'',0) | unset(),session_destroy() |