教你如何使用php的session
學會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行 <?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"
-
PHP緩存技術
PHP具有非常強大的功能,所有的CGI的功能PHP都能實現,而且支持幾乎所有流行的數據庫以及操作系統。最重要的是PHP可以用C、C++進行程序的擴展!以下是小編為大家搜索整理的PHP緩存技術,希望能給大家帶來幫助!更多精彩內容請及時關注我們應屆畢業生考試網!全頁面靜態...
-
PHP中超全局變量$GLOBALS和global的區別
人之所以能,是相信能。努力總是會有收穫的。下面是小編整理的PHP中超全局變量$GLOBALS和global的區別,希望對大家有用,更多消息請關注應屆畢業生網。一、超全局變量$GLOBALSPHP超全局變量有很多,如下的都屬於超全局變量(Superglobal):$GLOBALS,$_SERVER,$_GET,$_POST,$_...
-
PHP的漏洞-如何防止PHP漏洞
漏洞無非這麼幾類,XSS、sql注入、命令執行、上傳漏洞、本地包含、遠程包含、權限繞過、信息泄露、cookie偽造、CSRF(跨站請求)等。下面是小編為大家帶來的關於PHP的漏洞的知識,歡迎閲讀。+sql注入其中佔大頭的自然是XSS與SQL注入,對於框架類型或者有公共文件的,建...
-
PHP中用CURL偽造IP來源的方法
PHP中用CURL偽造IP來源的.方法,有需要的朋友可以看看。就跟隨本站小編一起去了解下吧,想了解更多相關信息請持續關注我們應屆畢業生考試網!1.文件複製代碼代碼如下:<?php$ch=curl_init();curl_setopt($ch,CURLOPT_URL,"http://localhost/");curl_setopt($ch,CURL...