久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔
站長百科 | 數字化技能提升教程 數字化時代生存寶典
首頁
數字化百科
電子書
建站程序
開發(fā)
服務器
辦公軟件
開發(fā)教程
服務器教程
軟件使用教程
運營教程
熱門電子書
WordPress教程
寶塔面板教程
CSS教程
Shopify教程
導航
程序頻道
推廣頻道
網賺頻道
人物頻道
網站程序
網頁制作
云計算
服務器
CMS
論壇
網店
虛擬主機
cPanel
網址導航
WIKI使用導航
WIKI首頁
最新資訊
網站程序
站長人物
頁面分類
使用幫助
編輯測試
創(chuàng)建條目
網站地圖
站長百科導航
站長百科
主機偵探
IDCtalk云說
跨境電商導航
WordPress啦
站長專題
網站推廣
網站程序
網站賺錢
虛擬主機
cPanel
網址導航專題
云計算
微博營銷
虛擬主機管理系統(tǒng)
開放平臺
WIKI程序與應用
美國十大主機
編輯“
PHP中Cookie和Session
”
人物百科
|
營銷百科
|
網賺百科
|
站長工具
|
網站程序
|
域名主機
|
互聯(lián)網公司
|
分類索引
跳轉至:
導航
、?
搜索
警告:
您沒有登錄。如果您做出任意編輯,您的IP地址將會公開可見。如果您
登錄
或
創(chuàng)建
一個賬戶,您的編輯將歸屬于您的用戶名,且將享受其他好處。
反垃圾檢查。
不要
加入這個!
<span style="text-align:center; border:1px solid #000; float:right; padding:6px;"><strong>導航:</strong> [[PHP|上一頁]] | {{template:開發(fā)語言導航}}</span> <div style="clear:both;"></div> Cookie機制采用的是在客戶端保持狀態(tài)的方案,而Session機制采用的是在[[服務器]]端保持狀態(tài)的方案. ==Cookie== cookie是一種在[[瀏覽器]]端儲存數據并以此來跟蹤和識別用戶的機制。 [[PHP]]在[[http]]協(xié)議的頭信息里發(fā)送cookie,因此setcookie()函數必須在其它信息被輸出到瀏覽器前調用,這和對header()函數的限制類似。 *'''設置cookie:''' 可以用setcookie()或setrawcookie()函數來設置cookie。也可以通過向客戶端直接發(fā)送http頭來設置。 *'''使用setcookie()函數設置cookie''': '''格式:''' bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, bool secure [, bool httponly]]]]]] ) name: cookie變量名 value: cookie變量的值 expire: 有效期結束的時間, path: 有效目錄, domain:有效域名,頂級域唯一 secure: 如果值為1,則cookie只能在https連接上有效,如果為默認值0,則http和https都可以. '''例子:''' <pre> <?php $value='something from somewhere'; setcookie("TestCookie",$value);/* 簡單cookie設置 */ setcookie("TestCookie",$value,time()+3600);/* 有效期1個小時 */ setcookie("TestCookie",$value,time()+3600,"/~rasmus/",".example.com",1);/* 有效目錄 /~rasmus,有效域名example.com及其所有子域名 */ ?> </pre> 設置多個cookie變量: setcookie('var[a]','value');用數組來表示變量,但他的下標不用引號.這樣就可以用$_COOKIE[‘var’][‘a’]來讀取該COOKIE變量. *使用header()設置cookie header(“Set-Cookie: name=$value[;path=$path[;domain=xxx.com[;]]“); 后面的參數和上面列出setcookie函數的參數一樣. '''比如''':$value=‘something from somewhere‘; header(“Set-Cookie:name=$value“); *Cookie的讀取: 直接用php內置超級全局變量 $_COOKIE就可以讀取[[瀏覽器]]端的cookie.上面例子中設置了cookie“TestCookie“,現在我們來讀取: print $_COOKIE['TestCookie']; *刪除cookie 只需把有效時間設為小于當前時間, 和把值設置為空.例如:setcookie(“name“,“”,time()-1);用header()類似. *常見問題解決: **用setcookie()時有錯誤提示,可能是因為調用setcookie()前面有輸出或空格.也可能你的文檔使從其他字符集轉換過來,文檔后面可能帶有BOM簽名(就是在文件內容添加一些隱藏的BOM字符).解決的辦法就是使你的文檔不出現這種情況.還有通過使用ob_start()函數有也能處理一點. **$_COOKIE受magic_quotes_gpc影響,可能自動轉義 **使用的時候,有必要測試用戶是否支持cookie *cookie工作機理: **服務器通過隨著響應發(fā)送一個http的Set-Cookie頭,在客戶機中設置一個cookie(多個cookie要多個頭). **客戶端自動向服務器端發(fā)送一個http的cookie頭,服務器接收讀取. <pre> HTTP/1.x 200 OK X-Powered-By: PHP/5.2.1 Set-Cookie: TestCookie=something from somewhere; path=/ Expires: Thu, 19 Nov 2007 18:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Content-type: text/html </pre> 這一行實現了cookie功能,收到這行后Set-Cookie: TestCookie=something from somewhere; path=/瀏覽器將在客戶端的磁盤上創(chuàng)建一個cookie文件,并在里面寫入: TestCookie=something from somewhere;/ 這一行就是我們用setcookie(‘TestCookie‘,‘something from somewhere‘,‘/‘);的結果.也就是用header(‘Set-Cookie: TestCookie=something from somewhere; path=/‘);的結果. ==Session== session使用過期時間是設為0的cookie,并且將一個稱為session ID的唯一標識符(一長串字符串),在服務器端同步生成一些session文件(可以自己定義session的保存類型),與用戶機關聯(lián)起來.[[web]]應用程序存貯與這些session相關的數據,并且讓數據隨著用戶在頁面之間傳遞. 訪問[[網站]]的來客會被分配一個唯一的標識符,即所謂的會話ID。它要么存放在客戶端的cookie,要么經由[[URL]]傳遞。 會話支持允許用戶注冊任意數目的變量并保留給各個請求使用。當來客訪問網站時,PHP會自動(如果 session.auto_start 被設為 1)或在用戶請求時(由 session_start() 明確調用或 session_register()暗中調用)檢查請求中是否發(fā)送了特定的會話ID。如果是,則之前保存的環(huán)境就被重建。 '''sessionID的傳送''' *通過cookie傳送sessin ID 使用session_start()調用session,服務器端在生成session文件的同時,生成session ID哈希值和默認值為PHPSESSID的session name,并向客戶端發(fā)送變量為(默認的是) PHPSESSID(session name),值為一個128位的哈希值.服務器端將通過該cookie與客戶端進行交互.session變量的值經php內部系列化后保存在服務器機器上的文本文件中,和客戶 端的變量名默認情況下為PHPSESSID的coolie進行對應交互.即服務器自動發(fā)送了http頭:header(‘Set-Cookie: session_name()=session_id(); path=/‘);即setcookie (session_name(),session_id());當從該頁跳轉到的新頁面并調用session_start()后,PHP將檢查與給定ID相關聯(lián)的服務器端存貯的session數據,如果沒找到,則新建一個數據 集. *通過URL傳送session ID 只有在用戶禁止使用cookie的時候才用這種方法,因為[[瀏覽器]]cookie已經通用,為安全起見,可不用該方法.<a href=“p.php?<?php print session_name() ?>=<?php print session_id() ?>“>xxx</a>,也可以通過POST來傳遞session值. '''session基本用法實例''' <pre> <?php // page1.php session_start(); echo ‘Welcome to page #1‘; /* 創(chuàng)建session變量并給session變量賦值 */ $_SESSION['favcolor'] = ‘green‘; $_SESSION['animal'] = ‘cat‘; $_SESSION['time'] = time(); // 如果客戶端使用cookie,可直接傳遞session到page2.php echo ‘<br /><a href=”page2.php”>page 2</a>‘; // 如果客戶端禁用cookie echo ‘<br /><a href=”page2.php?‘ . SID . ‘“>page 2</a>‘; /* 默認php5.2.1下,SID只有在cookie被寫入的同時才會有值,如果該session對應的cookie已經存在,那么SID將為(未定義)空 */ ?> </pre> <pre> <?php // page2.php session_start(); print $_SESSION['animal']; // 打印出單個session var_dump($_SESSION); // 打印出page1.php傳過來的session值 ?> '''使用session函數控制頁面緩存.''' 很多情況下,我們要確定我們的網頁是否在客戶端緩存,或要設置緩存的有效時間,比如我們的網頁上有些敏感內容并且要登錄才能查看,如果緩存到本地了, 可以直接打開本地的緩存就可以不登錄而瀏覽到網頁了. 使用session_cache_limiter(‘private‘);可以控制頁面客戶端緩存,必須在session_start()之前調用. 控制客戶端緩存時間用 session_cache_expire(int);單位(s).也要在session_start()前調用. 這只是使用session的情況下控制緩存的方法,我們還可以在header()中控制控制頁面的緩存. '''刪除session''' 要三步實現. <pre> <?php session_destroy(); // 第一步: 刪除服務器端session文件,這使用 setcookie(session_name(),”,time()-3600); // 第二步: 刪除實際的session: $_SESSION = array(); // 第三步: 刪除$_SESSION全局變量數組 ?> </pre> '''session使用實例''' <pre> <?php /** * 效驗session的合法性 * */ function sessionVerify() { if(!isset($_SESSION['user_agent'])){ $_SESSION['user_agent'] = MD5($_SERVER['REMOTE_ADDR'] .$_SERVER['HTTP_USER_AGENT']); } /* 如果用戶session ID是偽造,則重新分配session ID */ elseif ($_SESSION['user_agent'] != MD5($_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT'])) { session_regenerate_id(); } } /** * 銷毀session * 三步完美實現,不可漏 * */ function sessionDestroy() { session_destroy(); setcookie(session_name(),”,time()-3600); $_SESSION = array(); } ?> </pre>
摘要:
請注意,您對站長百科的所有貢獻都可能被其他貢獻者編輯,修改或刪除。如果您不希望您的文字被任意修改和再散布,請不要提交。
您同時也要向我們保證您所提交的內容是您自己所作,或得自一個不受版權保護或相似自由的來源(參閱
Wordpress-mediawiki:版權
的細節(jié))。
未經許可,請勿提交受版權保護的作品!
取消
編輯幫助
(在新窗口中打開)
本頁使用的模板:
模板:開發(fā)語言導航
(
編輯
)
取自“
http://www.kktzf.com.cn/wiki/PHP中Cookie和Session
”