學會php session可以在很多地方使用,例如做一個後台登入的功能,要讓程式記住使用者的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行3行Session_Start();//之前在第一行已經有輸出
4行.....
5行?>
提示1:
凡是出現"........headers already sent..........",就是Session_Start()之前向瀏覽器輸出訊息.
去掉輸出就正常,(COOKIE也會出現這種錯誤,錯誤原因一樣)
提示2:
#如果你的Session_Start()放在循環語句裡,而且很難確定之前哪裡向瀏覽器輸出資訊,可以用下面這種方法:
1行Ob_Start(); ?>
...... ..這裡是你的程式......
2:這是什麼錯誤
Warning: session_start(): open(/tmpsess_7d190aa36b4c5ec13a5c1649cc2da23f, O_RDWR) failed:....
因為你沒有指定session檔案的存放路徑.
解決方法:
(1)在c盤建立資料夾tmp
(2)開啟php.ini,找到session.save_path,修改為session.save_path= "c:/tmp"
以上是php session怎麼使用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!