教你如何使用PHP Session
學會php session可以在很多地方使用,比如做一個後台登錄的功能,要讓程序記住用戶的session,其實很簡單,看了下面的文章你就明白了。
PHP session用法其實很簡單它可以把用戶提交的數據以全局變數形式保存在一個session中並且會生成一個唯一的session_id,這樣就是為了多了不會產生混亂了,並且session中同一瀏覽器同一站點只能有一個session_id,下面我們一起來看看關於session使用方法。
SESSION (讓數據在頁面中持續有效的方法,存儲在伺服器端。)
COOKIE (從一個Web頁到下一個頁面的數據傳遞方法,存儲在客戶端。)
啟動會話註冊會話使用會話刪除會話
如何使用session,凡是與session有關的,之前必須調用函數session_start();
為session賦值很簡單,如:
代碼如下eg:
session_start();//啟動Session註:此函數之前不能有任何輸出
$_SESSION["name"]="value"; //可以直接賦值
?>
刪除session可以這樣:
代碼如下:
session_start();
session_unset();
session_destroy();
?>
if(!empty($_SESSION[ admin ]))//判斷用於存儲用戶名的Session會話變數是否為空
$my_value = $_SESSION[ admin ];//將繪畫變數賦值給一個變數$my_value
?>
讀取 session
PHP 內置的 $_SESSION 變數可以很方便的訪問設置的 session 變數。
代碼如下:
session_start();
echo "登記的用戶名為:".$_SESSION["username"]; //輸出 登記的用戶名為:nostop
?>
檢查變數是否被登記為會話變數 session_is_registered
語法:boobean session_is_registered(string name);
這個函數可檢查當前的session之中是否已有指定的變數註冊,參數name就是要檢查的變數名。成功則返回邏輯值true。
代碼如下:
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。
代碼如下:
$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 的生存期
代碼如下:
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。
代碼如下:
// 保存一天
$lifeTime = 24 * 3600;
session_set_cookie_params($lifeTime);
session_start();
$_session["admin"] = true;
?>
設置 Session 文件的保存路徑
session_save_path() :必須在 session_start() 函數調用之前調用。
代碼如下:
// 設置一個存放目錄
$savePath = "./session_save_dir/";
// 保存一天
$lifeTime = 24 * 3600;
session_save_path($savePath);
session_set_cookie_params($lifeTime);
session_start();
$_session["admin"] = true;
?>
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:
凡是出現"........headers already sent..........",就是Session_Start()之前向瀏覽器輸出信息.
去掉輸出就正常,(COOKIE也會出現這種錯誤,錯誤原因一樣)
提示2:
如果你的Session_Start()放在循環語句里,並且很難確定之前哪裡向瀏覽器輸出信息,可以用下面這種方法:
1行
........這裡是你的程序......
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-X ZendAPI的C+封裝庫
※說說 php.ini 的配置問題
※Linux+Apache+Mysql+PHP優化技巧
※30歲跳進創業公司,我經歷了怎樣的「逆生長」?
※epoll事件驅動框架使用注意事項
TAG:PHP技術大全 |
※PHP 使用 Redis
※利用PHPstorm進行代碼review
※PHP Session 封裝類
※PPython:PHP 擁抱 Python 的利器
※WordPress Nginx 安全配置 – 禁用某些目錄執行PHP
※使用PHP簡單操作Memcached
※Oracle開源GraphPipe:幾行代碼讓你在TensorFlow部署PyTorch模型
※Web Pages 編程 PHP
※Linux部署Nginx+Mysql+PHP+PHPMyAdmin4環境
※關於如何使用PHP連接mysql
※PHP的session的實現機制
※Linux 環境下 PHP 如何獲取 Access 資料庫數據
※strace幫助你調試PHP代碼
※濫用ThinkPHP漏洞的殭屍網路Hakai和Yowai
※StackOverflow 調查:富裕國家流行 Python和C 語言,低收入國家愛用 PHP
※php7在FreeBSD靜態編譯iconv,導致BUS ERROR (core dump)解決
※Redis的PHP操作手冊
※Docker 安裝 PHP
※高性能的 PHP 封裝的 HTTP Restful 多線程並發請求庫-MultiHttp
※趣圖:用 Python 重構 PHP 代碼