快速入門:PHP Session用法_PHP教程

來源:互聯網
上載者:User
PHP經過長時間的發展,很多使用者都很瞭解PHP了,這裡我發表一下個人理解,和大家討論討論PHP Session用法。對於虛擬機器主機來說,如果所有使用者的Session都儲存在系統臨時檔案夾裡,將給維護造成困難,而且降低了安全性,我們可以手動設定 Session 檔案的儲存路徑,session_save_path() 就提供了這樣一個功能。我們可以將 Session 存放目錄指向一個不能通過 Web 方式訪問的檔案夾,當然,該檔案夾必須具備可讀寫屬性。

PHP Session用法:

 
  1. php
  2. // 設定一個存放目錄
  3. $savePath = "./session_save_dir/";
  4. // 儲存一天
  5. $lifeTime = 24 * 3600;
  6. session_save_path($savePath);
  7. session_set_cookie_params($lifeTime);
  8. session_start();
  9. $_SESSION["admin"] = true;
  10. ?>

同 session_set_cookie_params(); 函數一樣,session_save_path() 函數也必須在 session_start() 函數調用之前調用。我們還可以將數組,Object Storage Service在 Session 中。運算元組和操作一般變數沒有什麼區別,而儲存對象的話,PHP 會自動對對象進行序列化(也叫序列化),然後儲存於 Session 中。下面例子說明了這一點:

person.php

 
  1. php
  2. class person
  3. {
  4. var $age;
  5. function output() {
  6. echo $this->age;
  7. }
  8. function setAge($age) {
  9. $this->age = $age;
  10. }
  11. }
  12. ?>
  13. setage.php
  14. php
  15. session_start();
  16. require_once "person.php";
  17. $person = new person();
  18. $person->setAge(21);
  19. $_SESSION['person'] = $person;
  20. echo "<a href='output'>check here to output agea>";
  21. ?>
  22. output.php
  23. // 設定回呼函數,確保重新構建對象。
  24. ini_set('unserialize_callback_func', 'mycallback');
  25. function mycallback($classname) {
  26. include_once $classname . ".php";
  27. }
  28. session_start();
  29. $person = $_SESSION["person"];
  30. // 輸出 21
  31. $person->output();
  32. ?>

當我們執行 setage.php 檔案的時候,調用了 setage() 方法,設定了年齡為 21,並將該狀態序列化後儲存在 Session 中(PHP 將自動完成這一轉換),當轉到 output.php 後,要輸出這個值,就必須還原序列化剛才儲存的對象,又因為在解序列化的時候需要執行個體化一個未定義類,所以我們定義了以後回呼函數,自動包含 person.php 這個類檔案,因此對象被重構,並取得當前 age 的值為 21,然後調用 output() 方法輸出該值。另外,我們還可以使用 session_set_save_handler 函數來自訂 PHP Session用法。


http://www.bkjia.com/PHPjc/446464.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/446464.htmlTechArticlePHP經過長時間的發展,很多使用者都很瞭解PHP了,這裡我發表一下個人理解,和大家討論討論PHP Session用法。對於虛擬機器主機來說,如果所有用...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.