2021年5月27日 星期四

PHP 使用 Session 與 Cookie 的方式

設定目標:
  • 使用 php 程式語言操作 Session 與 Cookie 方式!

PHP 使用 Cookie 的方式
  • 使用 Cookie 可以暫時存放需要的資料內容
  • Cookie 資料內容是暫時存放於本機端上!
  • 使用完 Cookie ,應立即清除資料,以利資安!
  1. 程式中,設定 cookie !例:user.php
    <?php
    setcookie('username','peter');
    ?>
    
  2. 列印出 cookie 內容!例:getuser.php
    <?php
    print 'Hello, '. $_COOKIE['username'];
    ?>
    
  3. 設定 cookie 的有效時間!例:usertimes.php
    <?php
    // cookie 一小時後過期
    setcookie('short-user','Peter',time()+60*60);
    
    // cookie 一天後過期
    setcookie('longer-user','Peter',time()+60*60*24);
    
    // cookie 指定日期過後,才會過期
    $datetime = new DataTime("2021-10-01 12:00:00");
    setcookie('date-user','Peter',$datetime->format('U');
    ?>
    
  4. 指定 cookie 可被利用的目錄路徑!例:pathuser.php
    <?php
    // 網頁根目錄下的所有檔案都可以利用的 cookie 設定
    setcookie('longer-user','Peter',time()+60*60*24,'/');
    
    // 網頁目錄 /manager 底下的檔案才可以利用的 cookie 設定
    setcookie('short-user','Peter',time()+60*60,'/manager/');
    ?>
    
  5. 指定 cookie 可被指定的網域名稱利用!例:domainuser.php
    <?php
    // example.com 網域的網頁根目錄下的所有檔案都可以利用的 cookie 設定
    setcookie('longer-user','Peter',time()+60*60*24,'/','.example.com');
    ?>
    
  6. 強調安全的 cookie 使用方式!例:secureuser.php
    <?php
    setcookie('short-user','Peter',time()+60*60,'/manager/',true,true);
    //第六個欄位:只用於 https 連線
    //第七個欄位:不給 JavaScripts 利用
    ?>
    
  7. 刪除 cookie 的方式!例:deleteuser.php
    <?php
    setcookie('longer-user','');
    ?>
    
PHP 使用 Session 的方式
  • 使用 Session 時,PHP 會在本機端建立一個 PHPSEDDID 的 Cookie 暫時存放遠端站台的 Session ID 編號
  • 如果沒有 PHPSEDDID 的 cookie 存在,PHP 程式會自動建立!
  1. 程式中,設定與使用 session_start() !例:counter.php
    <?php
    session_start();
    
    if (isset($_SESSION['count'])){
    	$_SESSION['count'] = $_SESSION['count'] + 1;
    } else {
    	$_SESSION['count'] = 1;
    }
    
    print "目前這頁面己經被重載了 ".$_SESSION['count']. " 次";
    ?>
    
  2. 程式中,設定 Session 使用時間 !例:timescounter.php
    <?php
    ini_set('session.gc_maxlifetime',600); // 設定600 秒
    session_start();