教你如何使用php session_PHP教程

來源:互聯網
上載者:User
PHP session用法其實很簡單它可以把使用者提交的資料以全域變數形式儲存在一個session中並且會產生一個唯一的session_id,這樣就是為了多了不會產生混亂了,並且session中同一瀏覽器同一網站只能有一個session_id,下面我們一起來看看關於session使用方法。
如何使用session,凡是與session有關的,之前必須調用函數session_start();
為session賦值很簡單,如:
複製代碼 代碼如下:
Session_start();
$Name = "這是一個Session例子";
Session_Register("Name");//注意,不要寫成:Session_Register("$Name");
Echo $_SESSION["Name"];
//之後$_SESSION["Name"]為"這是一個Session例子"
?>

在php4.2之後,可以為session直接賦值:
複製代碼 代碼如下:
Session_Start();
$_SESSION["name"]="value";
?>

取消session可以這樣:
複製代碼 代碼如下:
session_start();
session_unset();
session_destroy();
?>

讀取 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行
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:....
因為你沒有指定session檔案的存放路徑.

解決方案:

(1)在c盤建立檔案夾tmp
(2)開啟php.ini,找到session.save_path,修改為session.save_path= "c:/tmp"

http://www.bkjia.com/PHPjc/824972.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/824972.htmlTechArticlePHP session用法其實很簡單它可以把使用者提交的資料以全域變數形式儲存在一個session中並且會產生一個唯一的session_id,這樣就是為了多了不會...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.