thinkphpでのセッションの使い方の説明

韦小宝
リリース: 2023-03-20 19:56:01
オリジナル
1857 人が閲覧しました

PHP の基礎を学ぶとき、私たちは必ず session コントロールに遭遇します。まだまだ理解が浅いので、今日はthinkPHPフレームワークでのセッションの使い方についてお話しましょう!

Session クラスは ThinkPHP でカプセル化されており、ユーザーはそれを直接使用できます。一般的に使用されるメソッドは次のとおりです:

  • Session::set(name, value): セッションを登録します。

  • Session::is_set(name): Session の値が設定されているかどうかを確認します。

  • Session::get(name): セッションを読み取ります。

  • Session::clear(): セッションをクリアします。

  • Session::destroy(): セッションを破棄します。

ThinkPHP はデフォルトでセッションを開くため、Session クラスを使用する前に session_start() 関数を使用してセッションを開く必要はありません。

セッション インスタンスを使用します。

フォームを送信してセッションを登録します。以下の 2 つのメソッドを使用して、セッションを登録します。各ページは、テンプレート モードと Session::get モードの操作でセッション値を読み取ります。

ユーザー モジュールの sessionTest 操作でセッションを登録します。 sessionTest.html テンプレート (フラグメント):

class UserAction extends Action{  
public function session(){  
if(!emptyempty($_POST['username'])){  
Session::set('username',$_POST['username']);  
}  
$this->display();  
}  
}
ログイン後にコピー

ユーザー名 (testuser など) を入力するときに、送信ボタンをクリックし、それを sessionTest メソッド (つまり、現在のページ) に送信して、セッション値を処理および登録します。出力ロジックを制御するために存在する

template タグ

$_SESSION['username has been registered '] 変数が出力されます:

testuser こんにちは! ホームページ ログアウト

それ以外の場合はフォームが出力されます。

セッションが登録されているかどうかを検出します

テンプレート内で検出します

テンプレートでは、present や notempty などのタグを直接使用することも、switch を使用してセッション変数が登録されているかどうかを判断して、対応するセッションを決定することもできます出力する値 (セッション変数値を出力する出力配列ユニットを直接使用する)、または他のページ要素を表示する方法については、このチュートリアルのテンプレート タグ部分と、

動作中の検出例を参照してください。操作では、Session::is_set メソッドを使用して、セッションの値が設定されているかどうかを確認できます。たとえば、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/ など)セッションコードスニペット:

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;;  
}  
}
ログイン後にコピー

セッションがThinkPHPに表示される場合があります。無効(他のページに渡せない)の場合、考えられる理由は次のとおりです:

セッションの最初の文字session::set のように、クラスは大文字で始まりません。

ページには、

エントリ ファイル

に空白行があるなどの情報出力があります。サーバー上のセッション ストレージ パス (session.save_path) Linux/Unix) の権限が正しくないため、セッション情報が正しく保存されません。

スコープの問題に関する提案:

ThinkPHP の Session クラスはセッションに対してのみこれを実行します。単純なパッケージ化なので、実際には PHP のネイティブ セッション関数を直接使用できます。操作に関しては、公式の推奨事項と同じです

こちらもご覧ください:

PHPセッション制御セッション、Cookieの概要

Laravel Sessionid処理メカニズムの詳細な説明

以上がthinkphpでのセッションの使い方の説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート