對比起 Cookie
由於 Session 是以文本文件形式存儲在服務器端的
對 於 Cookie 來說
而 Session 就不同了
當然使用 Session 還有很多優點
Session 在 php
開始介紹如何創建 Session
啟動 Session 會話
復制代碼 代碼如下:
<?php
// 啟動 Session
session_start();
// 聲明一個名為 admin 的變量
$_SESSION["admin"] = null;
?>
如果你使用了 Seesion
執行完這個程序後
復制代碼 代碼如下:
admin|N;
一般該內容是這樣的結構
復制代碼 代碼如下:
變量名|類型:長度:值;
並用分號隔開每個變量
我們來看一下驗證程序
login
復制代碼 代碼如下:
<?php
// 表單提交後
$posts = $_POST;
// 清除一些空白符號
foreach ($posts as $key => $value) {
$posts[$key] = trim($value);
}
$password = md
$username = $posts["username"];
$query = "SELECT `username` FROM `user` WHERE `password` =
// 取得查詢結果
$userInfo = $DB
if (!empty($userInfo)) {
// 當驗證通過後
session_start();
// 注冊登陸成功的 admin 變量
$_SESSION["admin"] = true;
} else {
die("用戶名密碼錯誤");
}
?>
我們在需要用戶驗證的頁面啟動 Session
復制代碼 代碼如下:
<?php
// 防止全局變量造成安全隱患
$admin = false;
// 啟動會話
session_start();
// 判斷是否登陸
if (isset($_SESSION["admin"]) && $_SESSION["admin"] === true) {
echo "您已經成功登陸";
} else {
// 驗證失敗
$_SESSION["admin"] = false;
die("您無權訪問");
}
?>
是不是很簡單呢?將 $_SESSION 看成是存儲在服務器端的數組即可
如果要登出系統怎麼辦?銷毀 Session 即可
復制代碼 代碼如下:
<?php
session_start();
// 這種方法是將原來注冊的某個變量銷毀
unset($_SESSION[
// 這種方法是銷毀整個 Session 文件
session_destroy();
?>
Session 能否像 Cookie 那樣設置生存周期呢?有了 Session 是否就完全拋棄 Cookie 呢?我想說
Session 是如何來判斷客戶端用戶的呢?它是通過 Session ID 來判斷的
如果客戶端沒有禁用 Cookie
我們來手動設置 Session 的生存期
復制代碼 代碼如下:
<?php
session_start();
// 保存一天
$lifeTime =
setcookie(session_name()
?>
其實 Session 還提供了一個函數 session_set_cookie_params(); 來設置 Session 的生存期的
復制代碼 代碼如下:
<?php
// 保存一天
$lifeTime =
session_set_cookie_params($lifeTime);
session_start();
$_SESSION["admin"] = true;
?>
如果客戶端使用 IE
假 設客戶端禁用 Cookie 怎麼辦?沒辦法
復制代碼 代碼如下:
<?php
// 保存一天
$lifeTime =
// 取得當前 Session 名
$sessionName = session_name();
// 取得 Session ID
$sessionID = $_GET[$sessionName];
// 使用 session_id() 設置獲得的 Session ID
session_id($sessionID);
session_set_cookie_params($lifeTime);
session_start();
$_SESSION[
?>
對 於虛擬主機來說
復制代碼 代碼如下:
<?php
// 設置一個存放目錄
$savePath =
// 保存一天
$lifeTime =
session_save_path($savePath);
session_set_cookie_params($lifeTime);
session_start();
$_SESSION[
?>
同 session_set_cookie_params(); 函數一樣
我們還可以將數組
person
復制代碼 代碼如下:
<?php
class person {
var $age;
function output() {
echo $this
}
function setAge($age) {
$this
}
}
?>
setage
復制代碼 代碼如下:
<?php
session_start();
require_once
$person = new person();
$person
$_SESSION[
echo
?>
output
復制代碼 代碼如下:
<?php
// 設置回調函數
ini_set(
function mycallback($classname) {
include_once $classname
}
session_start();
$person = $_SESSION[
// 輸出
$person
?>
當 我們執行 setage
另外
From:http://tw.wingwit.com/Article/program/PHP/201311/20964.html