ホームページ >バックエンド開発 >PHPチュートリアル >thinkphp がモデル内のセッション割り当てを自動的に完了する方法に関する小さなチュートリアル、thinkphpsession_PHP チュートリアル

thinkphp がモデル内のセッション割り当てを自動的に完了する方法に関する小さなチュートリアル、thinkphpsession_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:19:27915ブラウズ

thinkphp がモデル内のセッション割り当てを自動的に完了する方法に関する小さなチュートリアル、thinkphpsession

thinkphp を使用したことのあるユーザーは、thinkphp のモデルが自動検証、自動補完などの多くの補助機能を完了できることをご存知だと思います。今日の開発中に、自動完了中にセッション値を取得する必要があることに遭遇しました

次に、自動割り当ての機能です。詳細についてはコードを参照してください;

リーリー


ここでは、最後のパラメータ関数とコールバックの違いに注意する必要があります。 function: 関数を使用する場合、自動的に Common/common.php に移動して、対応する関数を見つけます
callback: 現在のモデルで定義されているコールバック メソッドを使用します

セッションはセッションの設定、取得、削除、管理操作に使用されます使用方法セッション($name, $value='')パラメータname (必須): 配列が渡される場合は、セッションの初期化を意味します。null が渡される場合は、現在のセッションをクリアすることを意味します。文字列の場合は、セッションの割り当て、取得、または操作を意味します。 戻り値

セッション関数は、さまざまなパラメーターを渡すことで、次の関数を含むさまざまな機能操作を完了できる多様な操作関数です。 [-続き-]
セッション初期化設定
セッション メソッドの name パラメーターが配列に渡される場合、それはセッションの初期化設定を意味します。例:
session(array('name'=>'session_id','expire'=>3600));

サポートされているセッションパラメータは次のとおりです:


値 (オプション): 設定されるセッション値。null が渡された場合、デフォルトは空の文字列です。
詳細を見る (特定の使用法に応じて異なる値を返します)
パラメータ名 手順
ID session_id 値
名前 セッション名の値
パス session_save_path の値
プレフィックス セッションローカリゼーションスペースプレフィックス
期限切れ session.gc_maxlifetime設定値
ドメイン session.cookie_domain設定値
use_cookies session.use_cookies 设置值
use_trans_sid session.use_trans_sid 设置值
cache_limiter session_cache_limiter设置值
cache_expire session_cache_expire设置值
type session hander类型,可以使用hander驱动扩展

Session初始化设置方法 无需手动调用,在App类的初始化工作结束后会自动调用,通常项目只需要配置SESSION_OPTIONS参数即可,SESSION_OPTIONS参数的设置是一个数组,支持的索引名和前面的session初始化参数相同。

默认情况下,初始化之后系统会自动启动session,如果不希望系统自动启动session的话,可以设置SESSION_AUTO_START为false,例如:

'SESSION_AUTO_START' =>false

关闭自动启动后可以项目的公共文件或者在控制器中通过手动调用session_start或者session('[start]') 启动session。
session赋值
Session赋值比较简单,直接使用:

session('name','value'); //设置session

相当于:

$_SESSION['name'] = 'value';

session取值

Session取值使用:
$value = session('name');

相当于使用:
$value = $_SESSION['name'];

session删除

session('name',null); // 删除name

相当于:
unset($_SESSION['name']);

要删除所有的session,可以使用:
session(null); // 清空当前的session

相当于:
$_SESSION = array();

session判断
要判断一个session值是否已经设置,可以使用
session('?name');

用于判断名称为name的session值是否已经设置
相当于:
isset($_SESSION['name']);

session管理
session方法支持一些简单的session管理操作,用法如下:
session('[操作名]');

支持的操作名包括:

操作名 含义
start 启动session
pause 暂停session写入
destroy 销毁session
regenerate 重新生成session id

使用例は次のとおりです:
session('[pause]'); // セッションの書き込みを一時停止します
session('[start]') // セッションを開始します
session('[destroy]') // セッションを破棄します
session('[regenerate]') // セッションIDを再生成します

ローカリゼーションのサポート

セッション設定の初期化時に接頭辞パラメーターを渡すか、SESSION_PREFIX パラメーターを個別に設定すると、ローカライズされたセッション管理サポートを有効にすることができます。ローカライズされたセッションを開始すると、すべての割り当て、値の取得、削除、および判定の操作が自動的にローカライズされたセッションに対応します。

ローカライズされたセッションのサポートがオンになった後、生成されたセッション データ形式は元の形式から変更されます
$_SESSION['name'] は $_SESSION['prefix']['name'] になります

プレフィックスが think に設定されていると仮定すると、代入操作は次のようになります:
session('name','value') //セッションを設定します

以下と同等:
$_SESSION['think']['name'] = 'value';

値の操作:
$value = セッション('名前');

次の使用と同等:
$value = $_SESSION['think']['name'];

削除操作:
セッション('名前',null);

以下と同等:
unset($_SESSION['think']['name']);

クリア操作:
セッション(null); 以下と同等:

unset($_SESSION['think']);
判定操作:

セッション('?名前');
以下と同等:

isset($_SESSION['think']['name']);

thinkphpのバージョン31を使用していますが、公式手順に従った自動検証、フィールドマッピング、自動補完が使用できません

$User=new Model('Admin'); //問題はこのコード行にあります。 Model() または M() メソッドは基本モデルをインスタンス化し、カスタム モデルであるモデルに自動検証を追加します。したがって、自動検証部分は機能しなくなります。 // 前の文を次のように変更します $User=new AdminModel(); // カスタム モデルとして直接インスタンス化します // またはより単純な $User=D('Admin') // 詳細については、公式ドキュメント 6.2 を参照してください。モデルのインスタンス化


セッションを使用してユーザーをログイン状態に保つ方法

thinkphp では、プロジェクト フォルダー内の conf フォルダーの下にある config.php を介して「追加、削除、変更、確認」することでセッションを再構成します。まず、対応する部分を見つけてから、Cookie にどのメソッドを使用するかを確認します。 mencache サーバーに保存されます。mencache の設定方法もたくさんあります。詳細を知るには、それを読む必要があります。


http://www.bkjia.com/PHPjc/874631.html

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/874631.html技術記事 thinkphp がモデル内のセッション割り当てを自動的に完了する方法に関する短いチュートリアル、thinkphpsession。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。