原文來自php
PHP session 變量用於存儲有關用戶會話的信息,或更改用戶會話的設置。Session 變量保存的信息是單一用戶的,而且可供應用程序中的全部頁面使用。 當你在瀏覽器訪問一個網站的時候,網站的後臺爲你打開了一個回話,這個回話就是session。它能夠存儲你的一些重要的信息。它會分配給你一個ID,你什麼時候啓動它了,什麼時候關閉它了。經過服務器上存儲的信息,方便隨後使用。它有這麼多的好處強項。可是……當你關閉了這個網頁。一切都回到了解放前,它忘記了你。惟有存儲到數據庫中,才能真正的作到它往後都記得你。 session的工做機制是:每個訪問者都有一個惟一的ID,而且基於UID來存儲信息到服務器。UID存儲在cookie中,經過URL能夠傳導。 有了這個惟一的ID,你在當前訪問的網頁中隨處跳轉它仍是可以記住你的ID,從而實現給你提供你存儲在服務器的準確信息(如:用戶名,購物車等)。html
使用session首先要肯定你的服務器是否支持session。你能夠經過 phpinfo() 查看PHP配置信息。找到看你的配置信息中是否存在session 模塊上面的session_support 值爲 enable 的則說明你能正常的使用session了。若是沒有session這個模塊你必須先去php.ini啓用session 組件。 另外。php.ini 中session.save_handle = files,才能正常的使用session。數據庫
session_start()
session_start() 函數必須位於 <html> 標籤以前,在session_start()前不容許有輸出。 session_start()是session機制的開始。開始以後,session會開啓垃圾回收機制,由於session是存放文件當中的,則不可能不回收,不然佔用太多會致使一系列的系統問題。而PHP自己的垃圾回收機制對session來講是無效的,session的回收是指刪除存儲的文件。session回收的機率在php.ini中有定義。session.gc_probability系統默認的是1,可是有些系統的session.gc_probability值是0,這也就是說回收的機率是0,這時系統會經過cron腳原本實現垃圾回收機制。 另外,session配置項中有session.gc_maxlifetime 這麼一項,這時配置session過時時長的,默認是1440,24分鐘。這個不建議設置的過小,由於session回收須要根據它。 session開啓以後,即可覺得session賦值。服務器會存儲session變量。 存儲和取回session 變量的正確方式是使用 $_SESSION 變量。瀏覽器
<?php $_SESSION['key'] = 'value'; ?>
新添加的key值,這個值則會存儲在內存當中,當腳本執行完畢後,session就會被存儲到指定的session_id 文件。若是已經存在,則可能須要建立新的文件。在php.ini設定的回收時間內會銷燬session_id的文件。安全
讀取session 方式以下:服務器
<?php $_SESSION['key']; ?>
session關鍵字$_SESSION['鍵值'];cookie
<?php unset($_SESSION['key']); //銷燬某個指定鍵值 unset($_SESSION) //銷燬整個session ?>
刪除某些 session 數據,除了可使用 unset() ,還可使用 session_destroy() 函數。 session
利用session實現用戶登陸和註銷 session的特性之一是安全,因此用它來實現登陸將會是一個很好的方案。整個登陸的流程大概以下。 用戶進入登陸頁面===>>輸入正確的用戶帳戶密碼===>>服務器端腳本驗證成功後,開啓一個session回話,存儲用戶ID($_SESSION['uid'])和用戶名($_SESSION['user_name'])===>>跳轉它網站中的其餘頁面,利用($_SESSION['user_name'])顯示用戶姓名,必要時能夠經過$_SESSION['u_id']等到用戶ID===>>用戶退出登陸( unset($_SESSION) ) 登陸頁面中包含如下代碼:ide
<?php session_start();//開啓session $_SESSION['user_name'] = $_POST['user_name']; ?> <html> 登陸表單 </html>
登陸成功跳轉以後。在其餘的頁面,如選購商品、生成交易訂單等頁面,須要用到用戶信息的頁面可使用如下方式得到用戶信息函數
<?php session_start(); //首先須要開啓session //讀取用戶信息 $user_name = $_SESSION['user_name']; //根據用戶名查詢到這個用戶的信息 ?>
以後若是用戶直接退出了瀏覽器,或者關閉了網站。session在指定的回收時間內,session將會自動註銷回收。如果用戶想要手動退出呢,能夠:
<?php session_start(); unset($_SESSION);//註銷全部session ?>
這樣即是一個基本的用戶登陸註銷系統流程。其中還有不少地方能夠作安全處理的。這裏將不一一道來。原文來自