萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> php session()函數使用方法詳解

php session()函數使用方法詳解

php session()函數在php開發應用中有很重要的一個角色了,下面我來給初學者簡單的介紹一下關於php session()函數使用方法與實例。

對比起 Cookie,Session 是存儲在服務器端的會話,相對安全,並且不像 Cookie 那樣有存儲長度限制,本文簡單介紹 Session 的使用。
由於 Session 是以文本文件形式存儲在服務器端的,所以不怕客戶端修改 Session 內容。實際上在服務器端的 Session 文件,PHP 自動修改 Session 文件的權限,只保留了系統讀和寫權限,而且不能通過 ftp 修改,所以安全得多。


由於 Session 是以文本文件形式存儲在服務器端的,所以不怕客戶端修改 Session 的內容。實際上在服務器端的 Session 文件,PHP自動修改 Session 文件的權限,只保留了系統讀和寫權限,而且不能通過 ftp 修改,所以安全很多。
 

 代碼如下 復制代碼

<?php
// 啟動Session
session_start();
// 聲明一個名為 admin 的變量,並賦空值。
$_SESSION["admin"] = null;
?> 

<?php
// 啟動Session
session_start();
// 將原來注冊的某個變量銷毀
unset($_SESSION['admin']);
// 銷毀整個 Session 文件
session_destroy();
?> 

<?php
// 啟動Session
session_start();
// 保存一天
$lifeTime = 24 * 3600;
setcookie(session_name(), session_id(), time() + $lifeTime, "/");
?> 

<?php
// 保存一天
$lifeTime = 24 * 3600;
session_set_cookie_params($lifeTime);
session_start();
$_SESSION["admin"] = true;
?> 

<?php
// 保存一天
$lifeTime = 24 * 3600;
// 取得當前 Session 名,默認為 PHPSESSID
$sessionName = session_name();
// 取得 Session ID
$sessionID = $_GET[$sessionName];
// 使用 session_id() 設置獲得的 Session ID
session_id($sessionID);
session_set_cookie_params($lifeTime);
session_start();
$_SESSION['admin'] = true;
?> 

<?php
// 設置一個存放目錄
$savePath = './session_save_dir/';
// 保存一天
$lifeTime = 24 * 3600;
session_save_path($savePath);
session_set_cookie_params($lifeTime);
session_start();
$_SESSION['admin'] = true;
?> 

另外,我們還可以使用 session_set_save_handler 函數來自定義 Session 的調用方式。


PHP函數補完:session_id()

session_id()
session_id() 存取目前 session 代號。

語法: string session_id(string [id]);

本函數可取得或者重新配置目前存放 Session 的代號。若無參數 id 則表示只有取得目前 Session 的代號,加上參數則表示將 Session 代號設成新指定的 id。輸入及返回均為字符串。

輸出 session_id()

 代碼如下 復制代碼

<?php
 session_start();
 echo session_id();
 // 輸出 dqr58dnuqj2gufvg4o3tmjb9v4
?>

設置 session_id()

 代碼如下 復制代碼 <?php
 session_id("NowaMagic");
 session_start();
 
 echo session_id();
 // 輸出 NowaMagic
?>

session_id 恢復 session的內容
php的session是可以程序恢復的,這個和java不太一樣。session的恢復機制可以實現多個應用程序session的共享,因為php的session都是以文件形式或者數據庫存儲的。首先是session_id的獲取是通過session_id()函數獲取,這個值可以進行傳遞。

程序恢復session,首先要知道session_id,大家通過手冊可以知道session的恢復通過session_id($id);但是在恢復時要注意一個先後順序,要得到之前session的內容,必須在session_start()之前執行session_id($id),這樣才能在執行了session_start時初始化session的時候恢復到之前的內容,否則的話你得到的是一個空的session,你什麼也得不到。之前session被重新初始化了。這個和session_start()的作用有密切關系,因為session_start告訴php,session要初始化,要從session文件中反序列化session內容,所以session_start的作用就是把之前存儲的文件內容反序列化。session_start序列化之前要知道session_id,如果沒有就生成一個新的session_id。如果有就反序列化相應文件的內容。

copyright © 萬盛學電腦網 all rights reserved