• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當(dāng)前位置:雨林木風(fēng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

        變量的“追隨”:cookie與session

        變量的“追隨”:cookie與session

        更新時間:2022-05-14 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

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

        一.Cookie的使用

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

        1. 設(shè)置一個Cookie變量

          設(shè)置一個Cookie變量,PHP使用的函數(shù)是:

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


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

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

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


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

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


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

        2. 銷毀一個變量

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

        setcookie (“username” ,“”);


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

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

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

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

        二,session的使用

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


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



        1、初始一個session

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

        : boolean session_start(void);


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

        2、在session中注冊一個變量

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

        boolean session_register(string name);


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

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

        3、使用session變量的值

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

        4、session的銷毀

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

        boolean session_unregister(string name);


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

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

        boolean session_destroy(void);


          本函數(shù)結(jié)束目前的 Session。本函數(shù)沒有參數(shù),且返回值均為 true。

        5、其它有用的session函數(shù)

        a、 檢查變量是否注冊

        boolean session_is_registered(string name);


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

        b、 給注冊變量歸null

        void session_unset(void);


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


        <?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)



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

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

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


        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
        // 現(xiàn)在你就可以象往常一樣地使用session了。

        ?>


        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統(tǒng)下載排行

        主站蜘蛛池模板: 在线jyzzjyzz免费视频| 亚洲欧美日韩综合久久久久| 国产成人久久精品亚洲小说| 无码人妻一区二区三区免费| 亚洲免费福利视频| 欧洲黑大粗无码免费| 亚洲久热无码av中文字幕| 久久亚洲国产视频| 免费福利视频导航| 亚洲无吗在线视频| 日本特黄特黄刺激大片免费| 真人无码作爱免费视频| 精品久久久久久亚洲精品| 免费成人午夜视频| 青青操免费在线观看| 亚洲AV无码不卡无码| 99在线视频免费观看视频| 日本在线免费播放| 国产成人精品日本亚洲专一区 | 亚洲欧洲日韩在线电影| 一二三四在线播放免费观看中文版视频 | 91亚洲va在线天线va天堂va国产| 亚洲高清中文字幕免费| 高潮内射免费看片| 亚洲成人动漫在线| 亚洲热妇无码AV在线播放| 最刺激黄a大片免费网站| 亚洲熟妇无码一区二区三区导航| 亚洲真人无码永久在线| aⅴ免费在线观看| 在免费jizzjizz在线播| 有码人妻在线免费看片| 亚洲精品**中文毛片| 亚洲色欲久久久综合网| 狠狠亚洲狠狠欧洲2019| 成年美女黄网站色大免费视频| WWW免费视频在线观看播放| 国产成人亚洲精品| 亚洲人成图片网站| 久久久无码精品亚洲日韩蜜臀浪潮| 全部免费国产潢色一级|