當前位置:才華齋>計算機>php語言>

教你如何使用php的session

php語言 閱讀(1.6W)

學會php session可以在很多地方使用,比如做一個後臺登入的功能,要讓程式記住使用者的session,其實很簡單,看了下面的文章你就明白了。

教你如何使用php的session

PHP session用法其實很簡單它可以把使用者提交的資料以全域性變數形式儲存在一個session中並且會生成一個唯一的session_id,這樣就是為了多了不會產生混亂了,並且session中同一瀏覽器同一站點只能有一個session_id,下面我們一起來看看關於session使用方法。

如何使用session,凡是與session有關的,之前必須呼叫函式session_start();

  為session賦值很簡單,如:

複製程式碼 程式碼如下:

<?php

Session_start();

$Name = "這是一個Session例子";

Session_Register("Name");//注意,不要寫成:Session_Register("$Name");

Echo $_SESSION["Name"];

//之後$_SESSION["Name"]為"這是一個Session例子"

?>

在php4.2之後,可以為session直接賦值:

複製程式碼 程式碼如下:

<?PHP

Session_Start();

$_SESSION["name"]="value";

?>

取消session可以這樣:

複製程式碼 程式碼如下:

<?php

session_start();

session_unset();

session_destroy();

?>

讀取 session

PHP 內建的` $_SESSION 變數可以很方便的訪問設定的 session 變數。

複製程式碼 程式碼如下:

<?php

session_start();

echo "登記的使用者名稱為:".$_SESSION["username"]; //輸出 登記的使用者名稱為:nostop

?>

檢查變數是否被登記為會話變數 session_is_registered

語法:boobean session_is_registered(string name);

這個函式可檢查當前的session之中是否已有指定的變數註冊,引數name就是要檢查的變數名。成功則返回邏輯值true。

複製程式碼 程式碼如下:

<?php

session_start();

if(!session_is_registered("gender")){ //判斷當前會話變數是否註冊

session_register("gender"); //註冊變數

}

$gender="女";

echo $_SESSION['gender']; //女

?>

存取當前會話名稱 session_name

語法:boolean session_name(string [name]);

這個函式可取得或重新設定當前session的名稱。若無引數name則表示獲取當前session名稱,加上引數則表示將session名稱設為引數name。

複製程式碼 程式碼如下:

<?php

$sessionName = session_name(); //取得當前 Session 名,預設為 PHPSESSID

$sessionID = $_GET[$sessionName]; //取得 Session ID

session_id($sessionID); //使用 session_id() 設定獲得的 Session ID

?>

存取當前會話標識號session_id

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

這個函式可取得或重新設定當前存放session的標識號。若無引數id則表示只獲取當前session的標識號,加上引數則表示將session的標識號設成新指定的id。

設定 Session 的生存

複製程式碼 程式碼如下:

<?php

session_start

// 儲存一天

$lifeTime = 24 * 3600;

setcookie(session_name(), session_id(), time() + $lifeTime, "/");

?>

session_set_cookie_params:設定 Session 的生存期的,該函式必須在 session_start() 函式呼叫之前呼叫。

如果客戶端使用 IE 6.0 , session_set_cookie_params(); 函式設定 Cookie 會有些問題,所以我們還是手動呼叫 setcookie 函式來建立 cookie。

複製程式碼 程式碼如下:

<?php

// 儲存一天

$lifeTime = 24 * 3600;

session_set_cookie_params($lifeTime);

session_start();

$_session["admin"] = true;

?>

設定 Session 檔案的儲存路徑

session_save_path() :必須在 session_start() 函式呼叫之前呼叫。

複製程式碼 程式碼如下:

<?php

// 設定一個存放目錄

$savePath = "./session_save_dir/";

// 儲存一天

$lifeTime = 24 * 3600;

session_save_path($savePath);

session_set_cookie_params($lifeTime);

session_start();

$_session["admin"] = true;

?>

<?php

session_start(); //啟動Session

$username='nostop';

session_register('username'); //註冊一個名為username變數

echo '登記的使用者:'.$_SESSION['username']; //登記的使用者:nostop 讀取Session變數

$_SESSION['age']=23; //宣告一個名為age的變數,並賦值

echo '年齡:'.$_SESSION['age']; //年齡:23

session_unregister('username'); //登出Session變數

echo $_SESSION['username']; //空

echo $_SESSION['age'];//23

unset($_SESSION['age']); //登出Session變數

echo '登記的使用者:'.$_SESSION['username']; //空

echo '年齡:'.$_SESSION['age']; //空

?>

注意:

1:在呼叫Session_Start()之前不能有任何輸出.例如下面是錯誤的.

1行

2行 <?PHP

3行 Session_Start();//之前在第一行已經有輸出

4行 .....

5行 ?>

提示1:

凡是出現"ers already sent..........",就是Session_Start()之前向瀏覽器輸出資訊.

去掉輸出就正常,(COOKIE也會出現這種錯誤,錯誤原因一樣)

提示2:

如果你的Session_Start()放在迴圈語句裡,並且很難確定之前哪裡向瀏覽器輸出資訊,可以用下面這種方法:

1行 <?PHP Ob_Start(); ?>

........這裡是你的程式......

2:這是什麼錯誤

Warning: session_start(): open(/tmpsess_7d190aa36b4c5ec13a5c1649cc2da23f, O_RDWR) failed:....

因為你沒有指定session檔案的存放路徑.

解決方法:

(1)在c盤建立資料夾tmp

(2)開啟,找到_path,修改為_path= "c:/tmp"