首頁 > php教程 > PHP开发 > 教你如何使用php session

教你如何使用php session

高洛峰
發布: 2016-12-24 09:12:51
原創
1088 人瀏覽過

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[&#39;gender&#39;];  //女
?>
登入後複製

存取目前會話名稱  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=&#39;nostop&#39;;
session_register(&#39;username&#39;);    //注册一个名为username变量
echo &#39;登记的用户:&#39;.$_SESSION[&#39;username&#39;];    //登记的用户:nostop   读取Session变量
$_SESSION[&#39;age&#39;]=23;    //声明一个名为age的变量,并赋值
echo &#39;年龄:&#39;.$_SESSION[&#39;age&#39;]; //年龄:23
session_unregister(&#39;username&#39;); //注销Session变量
echo $_SESSION[&#39;username&#39;];  //空
echo $_SESSION[&#39;age&#39;];//23
unset($_SESSION[&#39;age&#39;]); //注销Session变量
echo &#39;登记的用户:&#39;.$_SESSION[&#39;username&#39;]; //空
echo &#39;年龄:&#39;.$_SESSION[&#39;age&#39;]; //空
?>
登入後複製

注意:

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

1行
2行3行Session_Start();//之前在第一行已經有輸出
4行.....
5行?>

提示1:

凡是出現"........headers already sent..........",就是Session_Start()之前向瀏覽器輸出訊息.
去掉輸出就正常,(COOKIE也會出現這種錯誤,錯誤原因一樣)

提示2:

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


2:這是什麼錯誤

Warning: session_start(): open(/tmpsess_7d190aa36b4c5ec13a5c1649cc2da23f, O_RDWR) failed:....
類因為你沒有指定路徑

.在c盤建立資料夾tmp

(2)開啟php.ini,找到session.save_path,修改為session.save_path= "c:/tmp"

多教你如何使用php session相關文章請關注PHP中文網!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門推薦
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板