PHP -cookie session

來源:互聯網
上載者:User

Cookie:

直接看代碼-說明及用法都在代碼中:

<?php date_default_timezone_set('Asia/Shanghai'); //設定正確的時區?><?php        /*         PHP中通過setcookie函數來創造Cookie。使用前必須瞭解:             Cookie是 HTTP 頭標的組成部分,而頭標必須在頁面其它內容之前發送,            它必須最先輸出。若在setcookie函數之前輸出一個HTML標記或echo語句。            甚至一個空行都會導致程式出錯。            setcookie() 函數語言自行參考php手冊        */                //這裡把到期時間設為0可以直接刪除cookie        //setcookie('visittime',"",0);        if(isset($_COOKIE['visittime']))        {            echo "上次訪問的時間是:".$_COOKIE['visittime'];        }        else        {            //設定cookie的有效時間為300秒,及五分鐘            setcookie('visittime',date('Y-m-d H:i:s'),time()+300);            //刪除setcookie  --這裡把到期時間設為0可以直接刪除cookie            //setcookie('visittime',"",time()-1);        }?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>無標題文檔</title></head><body>    </body></html>

 ===================================================================== 

Session:

  首先要說一下,session也是一個個存在伺服器的檔案,而通過session ID來讀取的session,session ID可以存在用戶端的cookie裡,也可以存放在資料庫裡等等

<?php     /*啟(建立)動session會話。和cookie一樣,使用session前,遊覽器不能有任何輸出 --所以放在最前面很保險        說明:             其實不管放哪裡。php代碼都會比html先執行。由後台成生遊覽器可以認識的html所以,這裡防止的是            在其他php代碼執行輸出前,先進行會話的啟動和註冊!    */    session_start();    $_SESSION['admin'] = null; //註冊一個會話,並且賦空?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>無標題文檔</title><script type="text/javascript">    function yz(id)    {        <?php             /*這裡如果先輸出echo的話。會話就會出現錯誤*/            //echo '這是錯誤的!';            $_SESSION['ad'] = '1234567890';        ?>        window.open(id);    }</script></head><body>    <input type="button" value="跳轉" onclick="yz('sessionto.php');"/></body></html>

session讀取:

<?php        /*讀取會話也是一樣的,都是使用會話。所以得先啟動。*/        session_start();        echo "注意讀取會話時,前面是可以有html輸出的,但是註冊會話就不行了<br />";        echo $_SESSION['ad'];?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>無標題文檔</title></head><body>    </body></html>

==============================================================

設定session失效時兩種方法

1-

<?php    //讓session一分鐘後失效    $time = 1*60; //設定session的失效時間    /*session_set_cookie_params() 函數必須在session_start()函數之前調用      但是不推薦使用此函數,此函數在一些遊覽器上會出現問題,所以一般手動設定失效時間    */    session_set_cookie_params($time); //使用函數    session_start(); //初始化設定    $_SESSION['username'] = 'mr';?>

2-

<?php    /*使用 setcookie() 函數可對Session設定失效時間,如讓Session在一分鐘後失效,關鍵代碼如下*/    session_start();  //給出session失效時間    $time = 1*60;    /*session_name 是session的名稱,session_id是判斷用戶端使用者的標識,因為session_id是      隨機產生的唯一名稱,所以session是相對安全的。失效時間和cookie的失效時間一樣,最後一個參數      為可選產數,是防止cookie的路勁(就是cookie的作用目錄)      cookie()共有6個參數。 最後兩個分別是 範圍名,和是否通過安全連線https    */    setcookie(session_name(),session_id(),time()+$time,"/"); //使用setcookie()手動設定session失效時間    $_SESSION['user'] = 'mr';    ?>

===================================================================== 

用戶端禁止Cookie的情況:

  請求端:

<?php session_start(); //還是要首先啟動session會話的?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>無標題文檔</title></head><body>    <!--        當用戶端禁止Cookie時,頁面見的session傳遞就會失效,因為session_id是存放在cookie裡的。        所以這是我們要用GET的方式傳遞Session_ID ,但在之前我們必須先啟動session    -->    <form id="form1" name="form1" method="post" action="common.php?<?=session_name();?>=<?=session_id();?>">        <input type="submit" value="提交" />    </form></body></html>

      接收端:

<?php    /*原理 -- session原理為請求該頁面之後會產生一個session_id ,如果這個時候禁止了Cookie就無法傳遞      session_id , 在請求下一個頁面時候將會重新產生一個session_id ,這樣就造成了session在頁面傳遞      失效.    */    $sess_name = session_name(); //擷取session名稱 --擷取session是那個檔案    $sess_id = $_GET[$sess_name]; //根據session名稱擷取session_id Get方式    session_id($sess_id); //關鍵步驟 -根據sessionid擷取來確定資訊    session_start();    $_SESSION['admin'] = 'mrsoft';?>

 ===================================================================== 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.