六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

變量的“追隨”:cookie與session

[摘要]在很多時候,我們需要跟蹤瀏覽者在整個網站的活動,對他們身份進行自動或半自動的識別(也就是平時常說的網站登陸之類的功能),這時候,我們常采用一組變量來“追隨”訪客。實現變量“追隨”有很多種方法,比較用...
在很多時候,我們需要跟蹤瀏覽者在整個網站的活動,對他們身份進行自動或半自動的識別(也就是平時常說的網站登陸之類的功能),這時候,我們常采用一組變量來“追隨”訪客。實現變量“追隨”有很多種方法,比較用得多的是cookie和session。下面我們用時下很流行的PHP為大家講解一下它們的使用。

一.Cookie的使用

  Cookie是網站保存在瀏覽器客戶端的信息,也就是說保存在訪客的機器里的變量,一般隨著HTTP頭發送到客戶端。在Cookie生效之后及失效之前,客戶每次發出頁面請求的時候,都會把Cookie一塊發送到服務器,只要我們針對它進行相應的處理,就可以實現變量“追隨”。

1. 設置一個Cookie變量

  設置一個Cookie變量,PHP使用的函數是:

int setcookie(string name, string value, int expire,
string path, string domain, int secure);


  其中name是Cookie變量名稱標識,你在PHP中將可以象使用普通變量名一樣來用它引用Cookie變量。value是Cookie變量的初始值,expire 表示該Cookie變量的有效時間;path 為該Cookie變量的相關路徑;domain 表示Cookie變量的網站;secure 則需在 https 的安全傳輸時才有效。

  例如我們要設置一個變量username,它的值是字符串“bluewind”,我們可以這么寫代碼:

setcookie (“username”,“bluewind”); //這兩個參數是setcookie必要的。


  我們還想給這個變量設置有效時間來限制操作超時等,比如說10分鐘:

setcookie (“username”,“bluewind”, 600000); //有效時間的單位是毫秒。


  注意:setcookie和header函數一樣,需要放在任何能向客戶端輸出的語句之前。

2. 銷毀一個變量

  銷毀Cookie變量只要將它的value設為空(“”)就可以了,如想銷毀上面那個變量只要再寫一次:

setcookie (“username” ,“”);


  就可以了。這常用作安全退出之用。

3. Cookie的有效范圍和生存期

  Cookie的有效范圍(也就是說在這個范圍的頁面都能得到這個Cookie變量)默認的是該目錄及其子目錄,當然你可以用setcookie的path和domain參數進行修改。如果你不對cookie的expire進行設置(參見1. 設置一個Cookie變量中的例子),那么當你離開網站的頁面,cookie也同時得到自動銷毀。

  http://www.netscape.com/newsref/std/cookie_spec.html是 cookie 原創者 Netscape 所提供的完整介紹信息。

二,session的使用

  session變量,也就是會話級變量,是訪客在整個和網站交互的過程中都存在的公有變量。在客戶端不支持有可能不支持cookie的時候(比如linux下的lynx……呵呵,慘了點),我們為了保證數據正確安全,就需要采用session變量。Session在各種網頁語言中的實現方式不一樣,PHP在4.0后也開始支持它了。首先,讓我們來看看一個簡單的例子:


test.php
-----------
<?
session_start();
session_register(var); //注冊變量var
$var="這是SESSION變量的值"; //var變量已經被作為session變量
?>
test1.php
------
<?
session_start();
session_register(var);
echo $var; //輸出:“這是SESSION變量的值”
?>



1、初始一個session

  如果PHP的設置自動session并沒有開啟的話,需要使用session_start()函數來初始化一個session,這個函數的用法如下:

: boolean session_start(void);


  它的作用是初始化一個新的 Session,若該客戶已在 Session 之中,則連上原 Session。本函數沒有參數,且返回值均為 true。

2、在session中注冊一個變量

  你要在session保存的變量都必須使用下列函數對變量進行注冊:

boolean session_register(string name);


  本函數在全局變量中增加一個變量到目前的 Session 之中。參數 name 即為欲加入的變量名。成功則返回true 值。

  然后你就可以直接使用變量名對它進行賦值,這個值就會被保存下來。

3、使用session變量的值

  如上例所示,只要你再在新的頁面重復上兩個步驟(除了賦值外),就可以直接使用session變量。

4、session的銷毀

  如果你只是想注銷一個變量而不是摧毀整個變量的話,那需要使用函數:

boolean session_unregister(string name);


  用法很簡單,參數 name 即為欲刪除的變量名。成功則返回 true 值。

  但是,如果要整個“摧毀”session變量的話,比如說安全退出什么的,使用函數:

boolean session_destroy(void);


  本函數結束目前的 Session。本函數沒有參數,且返回值均為 true。

5、其它有用的session函數

a、 檢查變量是否注冊

boolean session_is_registered(string name);


  本函數可檢查目前的 Session 之中是否已有指定的變量注冊。參數 name 即為欲檢查的變量名。成功則返回true 值。

b、 給注冊變量歸null

void session_unset(void);


  這個函數可以把當然注冊的所有的session變量置為空。注意它不是unregister,也不同于destroy。 下面這個例子,對此函數做了很好的說明。


<?php
session_register('a','b','c'); //auto-session-start
$a=1;
$b=2;
$c=3;
session_unregister('a'); //unregistrered $a
echo "A: $a - reg:".session_is_registered('a')." ";
// but the global $a remains
session_unset(); // unsets $b und $c
echo "B:$b - reg:".session_is_registered('b')." ";
// the registration remains !
echo "C:$c - reg:".session_is_registered('c')." ";
echo session_encode();
?>

輸出:
A: 1 - reg:
B: - reg:1
C: - reg:1
!b !c



c、定制你自己的session處理方法


void session_set_save_handler (string open, string close, string read,
string write, string destroy, string gc)



  這個函數可以定義用戶級的session的保存函數(打開、關閉、寫入等)。比如,我們想把session保存在本地的一個數據庫中時,本函數就很有用了。缺省情況下,每個session存貯在系統臨時目錄的一個個獨立文件中(例如在unix系統中為/tmp)。這適合或不適合,依你的需求而言。例如:如果你的支持php的web服務器分布在不同的機器上,你不能很容易地共享它們之間的session(當然,你也可以將sessions保存在NFS共享中)。另一個潛在的問題是你機器上的數千或數百萬個session文件使你的文件系統變得散亂 。注意:這個函數是在4.0b4版本后才出現的。使用本函數前,先要配置php.ini文件,session.save_hadler=user ,否則,session_set_save_handler()不會生效。

  此外,根據我的測試,你如果想讓這樣的session跨頁面使用,還要在每一個用到session的腳本文件中加入你自定的函數及session_set_save_handler,所以,最好的方法是做成一個單獨的文件,在每一個要用到session的腳本中用include來包含進來。

  下面這個例子提供了一個最基本的session保存法,類似于默認的files方法。如果你想用數據庫來實現,這也是很容易做到的。


Example:session_set_save_handler() example
<?php
function open ($save_path, $session_name) {
global $sess_save_path, $sess_session_name;
$sess_save_path = $save_path;
$sess_session_name = $session_name;
return(true);
}
function close() {
return(true);
}
function read ($id) {
global $sess_save_path, $sess_session_name;
$sess_file = "$sess_save_path/sess_$id";
if ($fp = @fopen($sess_file, "r")) {
$sess_data = fread($fp, filesize($sess_file));
return($sess_data);
} else {
return("");
}

}

function write ($id, $sess_data) {
global $sess_save_path, $sess_session_name;
$sess_file = "$sess_save_path/sess_$id";
if ($fp = @fopen($sess_file, "w")) {
return(fwrite($fp, $sess_data));
} else {
return(false);
}
}
function destroy ($id) {
global $sess_save_path, $sess_session_name;
$sess_file = "$sess_save_path/sess_$id";
return(@unlink($sess_file));
}

/*********************************************
* WARNING - You will need to implement some *
* * sort of garbage collection routine here. *
* *********************************************/
function gc ($maxlifetime) {
return true;
}
session_set_save_handler
("open", "close", "read", "write", "destroy", "gc");
session_start();
// proceed to use sessions normally
// 現在你就可以象往常一樣地使用session了。

?>





主站蜘蛛池模板: 日韩福利视频导航 | 亚洲区欧美中文字幕久久 | 午夜色a大片在线观看免费 午夜骚片 | 五月综合激情 | 欧美性大战久久久久久 | 在线午夜影院 | 亚洲丁香 | 午夜老司机在线观看 | 日韩 亚洲 翔田千里 在线 | 综合色久七七综合七七蜜芽 | 亚洲成a人 | 欧美一级视频在线观看欧美 | 最新在线精品国自产拍网站 | 啪啪免费小视频 | 天天噜日日噜 | 日韩精品 欧美 | 中文字幕 一区 婷婷 在线 | 日韩一级淫片 | 亚洲成人精品久久 | 人人澡人摸人人爽歪歪 | 中文字幕在线视频第一页 | 日本综合久久 | 日韩性网站 | 亚洲国产高清在线精品一区 | 欧洲在线 | 欧美专区亚洲专区 | 天天干天天舔 | 天天都色| 探花视频 | 欧美特级一级片 | 在线看欧美日韩中文字幕 | 亚洲国产日韩在线观频 | 天堂网在线最新版www中文网 | 天天看片中文字幕 | 日本一本在线播放 | 伊人影院在线视频 | 日日噜噜噜夜夜爽爽狠狠 | 青草娱乐视频 | 图片区欧美色图 | 日韩精品久久一区二区三区 | 日韩视频免费在线观看 |