首頁 > php教程 > PHP开发 > ThinkPHP中Session用法詳解

ThinkPHP中Session用法詳解

高洛峰
發布: 2016-12-22 10:25:49
原創
1534 人瀏覽過

本文實例講述了ThinkPHP中Session用法。分享給大家供大家參考。具體如下:

在ThinkPHP封裝了Session類別,使用者可以直接使用,常用的方法有:

Session::set(name, value):註冊 session 。

Session::is_set(name):檢查Session的值是否設定。

Session::get(name):讀取 session 。

Session::clear():清空Session。

Session::destroy():銷毀 session 。

ThinkPHP 預設開啟了session 會話,因此在使用Session 類別之前不需要使用session_start() 函數來開啟會話.

使用session 實例

下面以表單提交的方式註冊頁面分別以範本方式與操作中以Session::get 方式讀出session 值.

註冊session

User 模組sessionTest 操作註冊session 範例:

class UserAction extends Action{  
public function session(){  
if(!emptyempty($_POST['username'])){  
Session::set('username',$_POST['username']);  
}  
$this->display();  
}  
}
登入後複製

sessionTest.html 範本(片段):rrrereee

如testuser),點擊提交按鈕後,提交至sessionTest 方法(即當前頁面)處理並註冊session 值,以模板標籤present 來控制輸出邏輯,檢測到已經註冊$_SESSION['username'] 變數即輸出:


testuser 你好! 首頁 註銷

否則會輸出表單。

檢測session 是否註冊

模板裡檢測

在模板裡面,可以直接使用present 或notempty 甚至switch 等標籤判斷session 變數是否註冊,以決定輸出對應的session 值(直接以輸出數組單元的方式輸出session變數值)或顯示其他頁面元素,具體可參見本教程範本標籤部分內容以及上面的範例.

操作裡偵測

在操作裡,可以使用Session::is_set 方法檢查Session 的值是否設定,例如User模組user 操作如下:

<p>  
<present name="_SESSION[&#39;username&#39;]">{$_SESSION[&#39;username&#39;]} 你好!  
<a href="__APP__/">首页</a>  
<a href="__URL__/user">本模块其他页面</a>  
<a href="__URL__/logout">注销</a><else />请输入您的用户名:  
</p>  
<form action="__SELF__" method="post">  
<p><input type="text" name="username" /></p>  
<p><input type="submit" value=" 提交 " /></p>  
</form>  
</present>
登入後複製

其他模組頁面

在其他頁面(如Index/index)裡,判斷並讀取session 的程式碼片段:

public function user(){  
// 由于直接在操作里输出,为避免乱码  
header("Content-Type:text/html; charset=utf-8");  
if(Session::is_set(&#39;username&#39;)){  
echo Session::get(&#39;username&#39;).&#39; 你好&#39;;  
}else{  
echo &#39;session 未注册&#39;;  
}  
}
登入後複製
session 無效(無法傳遞)ThinkPHP 中可能無法出現session 無效(傳遞至其他頁面)的情況,可能的原因如下:

使用Session 類頭字母未大寫,如:session::set.

頁面有信息輸出,如入口文件有空行等.

伺服器上( Linux/Unix)的session 儲存路徑(session.save_path)權限不正確導致無法將session 資訊正確儲存.

作用域問題建議:

ThinkPHP 的Session 類別只是對session 做了簡單的包裝,實際可以在操作中直接使用PHP 原生的session 函數,官方亦是如此建議.

希望本文所述對大家的ThinkPHP框架程式設計有所幫助。

更多ThinkPHP中Session用法詳解相關文章請關注PHP中文網!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門推薦
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板