導航:首頁 > 編程語言 > php設置cookie作用域

php設置cookie作用域

發布時間:2022-09-27 03:43:11

1. 如何設置cookie

Cookies是一種能夠讓網站伺服器把少量數據儲存到客戶端的硬碟或內存,或是從客戶端的硬碟讀取數據的一種技術。Cookies是當你瀏覽某網站時,由Web伺服器置於你硬碟上的一個非常小的文本文件,它可以記錄你的用戶ID、密碼、瀏覽過的網頁、停留的時間等信息。當你再次來到該網站時,網站通過讀取Cookies,得知你的相關信息,就可以做出相應的動作,如在頁面顯示歡迎你的標語,或者讓你不用輸入ID、密碼就直接登錄等等。
從本質上講,它可以看作是你的身份證。但Cookies不能作為代碼執行,也不會傳送病毒,且為你所專有,並只能由提供它的伺服器來讀取。保存的信息片斷以「名/值」對(name-value
pairs)的形式儲存,一個「名/值」對僅僅是一條命名的數據。一個網站只能取得它放在你的電腦中的信息,它無法從其它的Cookies文件中取得信息,也無法得到你的電腦上的其它任何東西。
Cookies中的內容大多數經過了加密處理,因此一般用戶看來只是一些毫無意義的字母數字組合,只有伺服器的CGI處理程序才知道它們真正的含義。
由於Cookies是我們瀏覽的網站傳輸到用戶計算機硬碟中的文本文件或內存中的數據,因此它在硬碟中存放的位置與使用的操作系統和瀏覽器密切相關。在Windows
9X系統計算機中,Cookies文件的存放位置為C:WindowsCookies,在Windows
NT/2000/XP的計算機中,Cookies文件的存放位置為Cocuments
and
Settings用戶名Cookies。
硬碟中的Cookies文件可以被Web瀏覽器讀取,它的命令格式為:用戶名@網站地址[數字].txt。如筆者計算機中的一個Cookies文件名為:ch@163[1].txt。要注意的是:硬碟中的Cookies屬於文本文件,不是程序。
Cookies的設置
你可以在IE的「工具/Internet選項」的「常規」選項卡中,選擇「設置/查看文件」,查看所有保存到你電腦里的Cookies。這些文件通常是以user@domain格式命名的,user是你的本地用戶名,domain是所訪問的網站的域名。如果你使用NetsCape瀏覽器,則存放在「CROGRAMFILESNETS-
CAPEUSERS」裡面,與IE不同的是,NETSCAPE是使用一個Cookie文件記錄所有網站的Cookies。
我們可對Cookie進行適當設置:打開「工具/Internet選項」中的「隱私」選項卡(注意該設置只在IE6.0中存在,其他版本IE可以單擊「工具/Internet選項」「安全」標簽中的「自定義級別」按鈕,進行簡單調整),調整Cookie的安全級別。通常情況,可以調整到「中高」或者「高」的位置。多數的論壇站點需要使用Cookie信息,如果你從來不去這些地方,可以將安全級調到「阻止所有Cookies」;如果只是為了禁止個別網站的Cookie,可以單擊「編輯」按鈕,將要屏蔽的網站添加到列表中。在「高級」按鈕選項中,你可以對第一方Cookie和第三方的Cookie進行設置,第一方Cookie是你正在瀏覽的網站的Cookie,第三方Cookie是非正在瀏覽的網站發給你的Cookie,通常要對第三方Cookie選擇「拒絕」。你如果需要保存Cookie,可以使用IE的「導入導出」功能,打開「文件/導入導出」,按提示操作即可。
Cookies的寫入與讀取
Cookies集合是附屬於Response對象及Request對象的數據集合,使用時需要在前面加上Response或Request。
用於給客戶機發送Cookies的語法通常為:
當給不存在的Cookies集合設置時,就會在客戶機創建,如果該Cookies己存在,則會被代替。由於Cookies是作為HTTP傳輸的頭信息的一部分發給客戶機的,所以向客戶機發送Cookies的代碼一般放在發送給瀏覽器的HTML文件的標記之前。
如果用戶要讀取Cookies,則必須使用Request對象的Cookies集合,其使用方法是:
需要注意的是,只有在伺服器未被下載任何數據給瀏覽器前,瀏覽器才能與Server進行Cookies集合的數據交換,一旦瀏覽器開始接收Server所下載的數據,Cookies的數據交換則停止,為了避免錯誤,要在程序和前面加上response.Buffer=True。
Cookies的應用
幾乎所有的網站設計者在進行網站設計時都使用了Cookie,因為他們都想給瀏覽網站的用戶提供一個更友好的、人文化的瀏覽環境,同時也能更加准確地收集訪問者的信息。
網站瀏覽人數管理
由於代理伺服器、緩存等的使用,唯一能幫助網站精確統計來訪人數的方法就是為每個訪問者建立一個唯一的ID。使用Cookie,網站可以完成以下工作:測定多少人訪問過;測定訪問者中有多少是新用戶(即第一次來訪),多少是老用戶;測定一個用戶多久訪問一次網站。
通常情況下,網站設計者是藉助後台資料庫來實現以上目的的。當用戶第一次訪問該網站時,網站在資料庫中建立一個新的ID,並把ID通過Cookie傳送給用戶。用戶再次來訪時,網站把該用戶ID對應的計數器加1,得到用戶的來訪次數或判斷用戶是新用戶還是老用戶。
按照用戶的喜好定製網頁外觀

有的網站設計者,為用戶提供了改變網頁內容、布局和顏色的權力,允許用戶輸入自己的信息,然後通過這些信息對網站的一些參數進行修改,以定製網頁的外觀。
在電子商務站點中實現諸如「購物籃」等功能
可以使用Cookie記錄用戶的ID,這樣當你往「購物籃」中放了新東西時,網站就能記錄下來,並在網站的資料庫里對應著你的ID記錄當你「買單」時,網站通過ID檢索資料庫中你的所有選擇就能知道你的「購物籃」里有些什麼。
在一般的事例中,網站的資料庫能夠保存的有你所選擇的內容、你瀏覽過的網頁、你在表單里填寫的信息等;而包含有你的唯一ID的Cookie則保存在你的電腦里。
Cookies的缺陷
Cookie雖然被廣泛的應用,並能做到一些使用其它技術不可能實現的功能。但也存在一些不夠完美的方面,給應用帶來不便。
多人共用一台電腦的問題
任何公共場合的電腦或者許多在辦公室或家裡使用的電腦,都會同時被兩個以上的人使用。這樣,當你用它在網上超市購物時,網上超市或網站會在這台機器上留下一個Cookie,將來也許就會有某個人試圖使用你的賬戶購物,帶來了不安全的可能。當然,在一些使用多用戶操作系統如Windows
NT或UNIX的電腦上,這並不會成為一個問題。因為在多用戶操作系統下不同的賬戶的Cookie分別放在不同的地方。
Cookies被刪除時
假如你的瀏覽器不能正常工作,你可能會刪除電腦上所有的臨時Internet文件。然而,一旦這樣操作以後,你就會丟掉所有的Cookies文件。當你再次訪問一個網站時,網站會認為你是一位新用戶並分配給你一個新的用戶ID以及一個新的Cookie。結果將會造成網站統計的新老用戶比發生偏差,而你也難以恢復過去保存的參數選擇。
一人使用多台電腦時
有的人一天之中經常使用一台以上的電腦。例如在辦公室里有一台電腦、家裡有一台、還有移動辦公用的筆記本電腦。除非網站使用了特別的技術來解決這一問題,否則,你將會有三個不同的Cookies文件在這三台機器上,而在三台機器上訪問過的任何網站都將會把你看成三個不同的用戶。
防範Cookies泄密
想知道你訪問的網站是否在你的硬碟或內存中寫入了Cookies信息嗎?只需執行下面的操作步驟,就可以了解和控制你正在訪問的網站的Cookies信息。
步驟一
點擊IE窗口中的「工具」「In-ernet選項」,打開「Internet選項」設置窗口;
步驟二
點擊「Internet選項」設置窗口中的「安全」標簽,然後再點擊「自定義級別」按鈕,進入「安全設置」窗口;
步驟三
找到「安全設置」窗口中的「Cookies」設置項。「Cookies」設置項下有兩個分選項,其中「允許使用存儲在您計算機上的Cookies」是針對存儲在用戶計算機硬碟中的Cookies文件;「允許使用每個對話Cookies(未存儲)」是針對存儲在用戶計算機內存中的Cookies信息。存儲在硬碟中的Cookies文件是永久存在的,而存儲在內存中的Cookies信息是臨時的。要想IE在即將接收來自Web站點的所有Cookies時進行提示,可分別選擇上面兩個分選項中的「提示」項。當然,你也可以選擇「啟用」,允許IE接受所有的Cookies信息(這也是IE的默認選項);選擇「禁止」,則是不允許Web站點將Cookies存儲到您的計算機上,而且Web站點也不能讀取你計算機中已有的Cookies。
IE6.0提供了更為可靠的個人隱私及安全保護措施,可以讓用戶來控制瀏覽器向外發送信息的多少。在「Internet
選項」窗口中新增了「隱私」選項卡(圖1),用戶可以在其中直接設置瀏覽時的隱私級別,按需要控制其他站點對自己電腦所使用的Cookies。如果我們正在瀏覽的站點使用了Cookie,那麼在瀏覽器狀態欄中會有一個黃色驚嘆號的標記,雙擊後可打開「隱私報告」對話框,用戶可以在其中查看具體的隱私策略,還可直接點擊「設置」按鈕後在上述「隱私」選項卡中調節安全隱私級別。
在「常規」選項卡中還增加了「刪除Cookies」按鈕(圖2),方便用戶直接清除本機上的Cookies。另外,在「工具」「選項」「高級」選項卡中也增加了一些進一步提高安全性的選項(如關閉瀏覽器時清空Internet臨時文件)。其實,如何更好地保護個人隱私和安全是微軟下一代「.NET」戰略軟體中的關鍵技術,現在IE6.0已經嘗試著邁出了第一步。
另外,由於Cookies的信息並不都是以文件形式存放在計算機里,還有部分信息保存在內存里。比如你在瀏覽網站的時候,Web伺服器會自動在內存中生成Cookie,當你關閉IE瀏覽器的時候又自動把Cookie刪除,那樣上面介紹的兩種方法就起不了作用,我們需要藉助注冊表編輯器來修改系統設置。要注意的是,修改注冊表前請作備份,以便出現問題後能順利恢復。
運行Regedit,找到如下鍵值:HKEY_LOCAL_
SettingsCacheSpecial
PathsCookies,這是Cookies在內存中的鍵值,把這個鍵值刪除。至此Cookies無論以什麼形式存在,我們都不用再害怕了。
最後有必要說明的一點是:杜絕Cookies雖然可以增強你電腦的信息安全程度,但這樣做同樣會有一些弊端。比如在一些需要Cookies支持的網頁上,會發生一些莫名其妙的錯誤,典型的例子就是你以後不能使用某些網站的免費信箱了。
Cookies欺騙
通過分析Cookie的格式,我們知道,最後兩項中分別是它的URL路徑和域名,伺服器對Cookie的識別靠的就是這兩個參數。正常情況下,我們要瀏覽一個網站時輸入的URL便是它的域名,需要經過域名管理系統DNS將其轉化為IP地址後進行連接。若能在DNS上進行一些設置,把目標域名的IP地址對應到其它站點上,我們便可以非法訪問目標站點的Cookie了。
要進行Cookies欺騙,其實很簡單。比如在Win9X下的安裝目錄下,有一名為hosts.sam的文件,以文本方式打開後會看到這樣的格式:
127.0.0.1
localhost
經過設置,便可以實現域名解析的本地化,只需將IP和域名依上面的格式添加到文件中並另存為hosts即可。hosts文件實際上可以看成一個本機的DNS系統,它可以負責把域名解釋成IP地址,它的優先權比DNS伺服器要高,它的具體實現是TCP/IP協議中的一部分。
比如我們要讀取的目標站點
www.abc.com
所生成的Cookies信息,可以藉助www.def.com(自己的站點)。在www.def.com
存放用來進行欺騙所需的文件,通過它讀取和修改對方的Cookie。
步驟一
ping出www.def.com
的IP地址:
ping
www.def.com
Reply
from
192.168.0.1:
bytes=32
time=20ms
TTL=244
然後修改hosts.sam文件如下:
192.168.0.1
www.abc.com
並保存為hosts文件。
步驟二
讀取Cookies信息:
將用來讀取Cookie的頁面傳至www.def.com
,此時連上www.abc.com,由於我們進行本機DNS域名解析的修改,這時網路連接的並不是www.abc.com,而是www.def.com

這樣www.abc.com設在本地的Cookie便可被讀出。
步驟三
同樣道理,你可對讀出的數據進行修改,並可將修改後的信息寫入Cookie中。修改完畢後,刪掉hosts文件,再重新進入www.abc.com,此時所使用的Cookies數據就是你制定的數據。
總之,在某種程度上雖然可以實現Cookies的欺騙,給網路應用帶來不安全的因素,但Cookies文件本身並不會造成用戶隱私的泄露,也不會給黑客提供木馬程序的載體,只要合理使用,它們會給網站管理員進行網站的維護和管理以及廣大用戶的使用都帶來便利。
Cookies集合具有以下幾種屬性
1.Expires屬性:此屬性用來給Cookies設置一個期限,在期限內只要打開網頁就可以調用被保存的Cookies,如果過了此期限Cookies就自動被刪除。如:
設定Cookies的有效期到2004年4月1日,到時將自動刪除。如果一個Cookies沒有設定有效期,則其生命周期從打開瀏覽器開始,到關閉瀏覽器結束,每次運行後生命周期將結束,下次運行將重新開始。
2.Domain屬性:這個屬性定義了Cookies傳送數據的唯一性。若只將某Cookies傳送給搜狐主頁時,則可使用如下代碼:
3.Path屬性:定義了Cookies只發給指定的路徑請求,如果Path屬性沒有被設置,則使用應用軟體的預設路徑。
4.Srcure屬性:指定Cookies能否被用戶讀取。
5.Haskeys屬性:如果所請求的Cookies是一個具有多個鍵值的Cookies字典,則返回True,它是一個只讀屬性。

2. php 關於 cookie 作用域 與 修改cookie值

cookie的值無論到了哪個目錄都是一樣的
比如在 目錄a里 $_COOKIE['test'] = "test_value" 這樣傳了值
到了目錄b里輸出 echo $_COOKIE['test'] 結果顯示是 test_value
完了再目錄b里給cookie重新賦值(也就是修改了值) $_COOKIE['test'] = "change_value"
到了目錄a輸出的話就是從新賦值的值了也就是 change_value
cookie是在電腦里保存著的文檔不是php里的所以你在哪個頁面只要cookie沒刪除輸出的話值都是一樣的
但願給你有所幫助

3. cookie作用域的設置

第一點,要設置Response.Cookies(CookieName).Domain = "abc.com" ,這樣就可以進行本域操作了
第二點,cookies是無法進行跨域操作的,因為這樣安全性會大大降低,所以不用去考慮了
第三點,按程序代碼來說,應該是沒問題的,你可以測試下能不能取到cookies。

4. 高手請進,php中cookie作用域問題

setcookie("a","value","/"); //第三個 / 是作用范圍,然後在2.php可$_COOKIE["a"];//獲取

5. PHP 設置跨域 域名cookie

理論上php不可以跨域設置cookie;
php設置cookie流程:返回的信息攜帶信息,然後靠瀏覽器來執行寫入到cookie,一般瀏覽器安全機制已經限制跨域寫入;
如果你想偽造cookie,可以使用瀏覽器管理cookie的插件

6. php跨域cookie共享使用方法

這篇文章主要介紹了php跨域cookie共享使用方法,需要的朋友可以參考下
A
機器所在的域:a1.main.com,A
有應用
main.php
B
機器所在的域:b1.test.com,B
有應用
test.php
1.在
main.php
里設置
cookie
的時候,
cookie
的設置方法如下:

代碼如下:
setcookie(
"TestCookie",
"okol",
time()
+
3600,
"/",
"b1.test.com",
1
);
這樣在
test.php
里就可以取到
cookie

2.輸入
url
訪問
test
的時候,必須輸入域名才能解析。
比如輸入:
http://b1.test.com/test.php
,可以獲取
cas
在客戶端設置的
cookie


B
機器訪問本機的應用,輸入:
http://localhost:8080/test.php
則不可以獲得
cookie

7. 如何使用PHP操作cookie

PHP setcookie() 函數向客戶端發送一個 HTTP cookie。cookie 是由伺服器發送到瀏覽器的變數。cookie 通常是伺服器嵌入到用戶計算機中的小文本文件。每當計算機通過瀏覽器請求一個頁面,就會發送這個 cookie。cookie 的名稱指定為相同名稱的變數。例如,如果被發送的 cookie 名為 "name",會自動創建名為 $user 的變數,包含 cookie 的值。
必須在任何其他輸出發送前對 cookie 進行賦值。如果成功,則該函數返回 true,否則返回 false。

setcookie(name, value, expire, path, domain, secure)
name 必需。規定 cookie 的名稱。
value 必需。規定 cookie 的值。
expire 可選。規定 cookie 的有效期。
path 可選。規定 cookie 的伺服器路徑。
domain 可選。規定 cookie 的域名。
secure 可選。規定是否通過安全的 HTTPS 連接來傳輸 cookie。
可以通過 $HTTP_COOKIE_VARS["user"] 或 $_COOKIE["user"] 來訪問名為 "user" 的 cookie 的值。在發送 cookie 時,cookie 的值會自動進行 URL 編碼。接收時會進行 URL 解碼。如果不需要這樣,可以使用 setrawcookie() 代替。

程序1:
設置並發送 cookie:
1 <?php
2 $value = "my cookie value";
3 // 發送一個簡單的 cookie
4 setcookie("TestCookie",$value);
5 ?>
01 <html>
02 <body>
03 ...
04 ...
05 <?php
06 $value = "my cookie value";
07 // 發送一個 24 小時候過期的 cookie
08 setcookie("TestCookie",$value, time()+3600*24);
09 ?>
10 <html>
11 <body>

程序2:
檢索 cookie 值的不同方法:
01 <html>
02 <body>
03 <?php
04 // 輸出個別的 cookie
05 echo $_COOKIE["TestCookie"];
06 echo "<br />";
07 echo $HTTP_COOKIE_VARS["TestCookie"];
08 echo "<br />";
09 // 輸出所有 cookie
10 print_r($_COOKIE);
11 ?>
12 </body>
13 </html>
程序輸出:
1 my cookie value
2 my cookie value
3 Array ([TestCookie] => my cookie value)

程序3:
通過把失效日期設置為過去的日期/時間,刪除一個 cookie:
1 <?php
2 // 把失效日期設置為一小時前
3 setcookie ("TestCookie", "", time() - 3600);
4 ?>

程序4:
創建一個數組 cookie:
01 <?php
02 setcookie("cookie[three]","cookiethree");
03 setcookie("cookie[two]","cookietwo");
04 setcookie("cookie[one]","cookieone");
05 // 輸出 cookie (在重載頁面後)
06 if (isset($_COOKIE["cookie"]))
07 {
08 foreach ($_COOKIE["cookie"] as $name => $value)
09 {
10 echo "$name : $value <br />";
11 }
12 }
13 ?>
程序輸出:
1 three : cookiethree
2 two : cookietwo
3 one : cookieone

程序5:
view sourceprint?
1 /**
2 * 01.cookie設置
3 * */
4 function ssetcookie($var, $value, $life=0) {
5 global $_SGLOBAL, $_SC, $_SERVER;
6 setcookie($_SC['cookiepre'].$var, $value, $life?($_SGLOBAL['timestamp']+$life):0, $_SC['cookiepath'],$_SC['cookiedomain'], $_SERVER['SERVER_PORT']==443?1:0);
7 }

8. PHP 設置跨域 域名cookie

理論上php不可以跨域設置cookie;
php設置cookie流程:返回的信息攜帶信息,然後靠瀏覽器來執行寫入到cookie,一般瀏覽器安全機制已經限制跨域寫入;
如果你想偽造cookie,可以使用瀏覽器管理cookie的插件

9. ThinkPHP5設置Cookie有何講究

Cookie::set()
在設置cookie 的時候它的值是經過序列化+base64_encode加密後存儲的
cookie()則是直接寫入cookie的

在做Thinkphp和UC同步的時候,剛開始應用登陸同步UC是很正常的,但是反過來的時候卻出現了uc.php不能寫入cookie的情況。後來發現原來是作用域在作怪。

setcookie('uid', base64_encode(serialize($uid)), time() + 3600, '/');

base64_encode(serialize($uid))這么寫的原因是我網站獲取cookie的時候用的是Cookie::get("uid");

10. php 設置cookie,添加任意主域名

無論是php腳本還是js腳本,都只能操作自己域名的cookies。
看你的樣子像是要模擬登錄微信公眾平台,你可以使用php的curl偽造cookies提交

閱讀全文

與php設置cookie作用域相關的資料

熱點內容
壓縮因子定義 瀏覽:966
cd命令進不了c盤怎麼辦 瀏覽:212
葯業公司招程序員嗎 瀏覽:972
毛選pdf 瀏覽:659
linuxexecl函數 瀏覽:727
程序員異地戀結果 瀏覽:374
剖切的命令 瀏覽:228
干什麼可以賺錢開我的世界伺服器 瀏覽:290
php備案號 瀏覽:990
php視頻水印 瀏覽:167
怎麼追程序員的女生 瀏覽:487
空調外壓縮機電容 瀏覽:79
怎麼將安卓變成win 瀏覽:459
手機文件管理在哪兒新建文件夾 瀏覽:724
加密ts視頻怎麼合並 瀏覽:775
php如何寫app介面 瀏覽:804
宇宙的琴弦pdf 瀏覽:396
js項目提成計算器程序員 瀏覽:944
pdf光子 瀏覽:834
自拍軟體文件夾名稱大全 瀏覽:328