ツールのタグ
ThinkPHP6.0 その他
1. Session
Sessionクラスを使用するには、ファサード メソッド (think\facade\) を使用する必要があります。 Session)の呼び出し 新しいバージョンでは、ネイティブ
$_SESSION配列とsession_で始まるすべての関数の操作はサポートされていません。
return [ // session name 'name' => 'PHPSESSID', // SESSION_ID的提交变量,解决flash上传跨域 'var_session_id' => '', // 驱动方式 支持file cache 'type' => 'file', // 存储连接标识 当type使用cache的时候有效 'store' => null, // 过期时间 'expire' => 1440, // 前缀 'prefix' => '', ];2. セッションを開く
- ミドルウェア
app\middleware.php
ファイル
\think\middleware\SessionInit::class3. 設定
- セッション サポート複数レベルの配列操作
Session::set('name','欧阳克');
// Session数组
Session::set('admin.name','欧阳克');
Session::set('admin.uid',1);4. 読み取り // 获取全部Session
Session::all();
// 获取Session中name的值
Session::get('name');5. 削除 Session::delete('name');6. 値を取得して Session::pull('name');# を削除##7. ログイン例- 新しいlogin.phpファイル
namespace app\controller; use think\facade\View; use think\facade\Db; use think\facade\Request; use think\facade\Session; class Login{ public function index(){ if(Request::method() == 'POST'){ $all = Request::param(); $admin = Db::table('shop_admin')->where('account',$all['account'])->find(); if(empty($admin)){ echo json_encode(['code'=>1,'msg'=>'未找到管理员']); exit; } if(md5($all['pwd']) != $admin['password']){ echo json_encode(['code'=>1,'msg'=>'密码错误']); exit; } Session::set('uid',$admin['uid']); Session::set('account',$admin['account']); echo json_encode(['code'=>0,'msg'=>'登陆成功']) ; }else{ $title = '商城'; View::assign([ 'title' => $title ]); return View::fetch(); } } }
- 新しいLogin/index.htmlファイル
<!DOCTYPE html> <html> <head> <title>登录</title> <link rel="stylesheet" type="text/css" href="/static/layui/css/layui.css"> <script type="text/javascript" src="/static/layui/layui.js"></script> </head> <body style="background: #1E9FFF"> <div style="position: absolute; left:50%;top:50%;width: 500px;margin-left: -250px;margin-top: -200px;"> <div style="background: #ffffff;padding: 20px;border-radius: 4px;box-shadow: 5px 5px 20px #444444;"> <form class="layui-form"> <div class="layui-form-item" style="color:gray;"> <h2>{$title}--后台管理系统</h2> </div> <hr> <div class="layui-form-item"> <label class="layui-form-label">用户名</label> <div class="layui-input-block"> <input type="text" id="account" class="layui-input"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">密 码</label> <div class="layui-input-block"> <input type="password" id="password" class="layui-input"> </div> </div> <div class="layui-form-item"> <div class="layui-input-block"> <button type="button" class="layui-btn" onclick="dologin()">登录</button> </div> </div> </form> </div> </div> <script type="text/javascript"> layui.use(['layer'],function(){ $ = layui.jquery; layer = layui.layer; // 用户名控件获取焦点 $('#account').focus(); // 回车登录 $('input').keydown(function(e){ if(e.keyCode == 13){ dologin(); } }); }); function dologin(){ var account = $.trim($('#account').val()); var pwd = $.trim($('#password').val()); if(account == ''){ layer.alert('请输入用户名',{icon:2}); return; } if(pwd == ''){ layer.alert('请输入密码',{icon:2}); return; } $.post('/index.php/login/index',{'account':account,'pwd':pwd},function(res){ if(res.code>0){ layer.alert(res.msg,{icon:2}); }else{ layer.msg(res.msg); setTimeout(function(){window.location.href = '/index.php/index/index'},1000); } },'json'); } </script> </body> </html>
- ##
use think\facade\Session; public function index(){ $title = '商城'; $session = Session::all(); if(empty($session['uid'])){ echo '<script type="text/javascript">alert("请登录!");window.location.href = "/index.php/login/index"; </script>'; exit; } $login = $session['account']; # 左侧菜单 $menu = Db::table('shop_menu')->where('fid',0)->select(); $left = $menu->toArray(); foreach($left as &$left_v){ $left_v['lists'] = Db::table('shop_menu')->where('fid',$left_v['id'])->select(); } # 右侧列表 $param = Request::param(); if(isset($param['status']) && $param['status'] == 1){ $where['status'] = 1; }else if(isset($param['status']) && $param['status'] == 2){ $where['status'] = 2; }else{ $where = true; } $p = isset($param['p']) ? $param['p'] : 1; $db = new Goods(); $order = [ 'add_time DESC', 'id DESC' ]; $right = $db->get_all($where,$order,$p,5); View::assign([ 'title' => $title, 'login' => $login, 'left' => $left, 'right' => $right['data'], 'count' => $right['count'], 'p' => $p, 'status' => isset($param['status']) ? $param['status'] : 0 ]); return View::fetch(); }2. Cookie
think\facade\Cookie
) を使用する必要があります。cookie.php にある# 構成ファイルを呼び出します。構成ディレクトリ内のファイルです。手動の初期化は必要ありません。システムは、呼び出す前に Cookie を自動的に初期化します。Work- 1. Cookie の使用
// 设置Cookie 有效期为 3600秒 Cookie::set('name', '欧阳克', 3600); // 永久保存Cookie Cookie::forever('name', '欧阳克'); //删除cookie Cookie::delete('name'); // 读取某个cookie数据 Cookie::get('name');2. Cookie 構成ファイル
#config ディレクトリの cookie.php ファイル
return [ // cookie 保存时间 'expire' => 0, // cookie 保存路径 'path' => '/', // cookie 有效域名 'domain' => '', // cookie 启用安全传输 'secure' => false, // httponly设置 'httponly' => false, // 是否使用 setcookie 'setcookie' => true, ];
- 3. キャッシュ
- 使用するにはキャッシュを呼び出すには、ファサード メソッド (
) を使用する必要があります。
サポートされる組み込みキャッシュ タイプには、
memcachefileが含まれます。 、 、- wincache
、
sqlite、redis1. キャッシュを使用する2. キャッシュ設定ファイル// 缓存在3600秒之后过期 Cache::set('number', 10, 3600); // number自增(步进值为3) Cache::inc('number',3); // number自减(步进值为1) Cache::dec('number'); // 获取缓存 Cache::get('number'); // 删除缓存 Cache::delete('number'); // push 追加缓存 Cache::set('name', ['欧阳克','朱老师']); Cache::push('name', '西门大官人'); // 获取并删除缓存 Cache::pull('name'); // 清空缓存 Cache::clear();
return [ // 默认缓存驱动 'default' => 'file', // 缓存连接方式配置 'stores' => [ 'file' => [ // 驱动方式 'type' => 'File', // 缓存保存目录 'path' => '', // 缓存前缀 'prefix' => '', // 缓存有效期 0表示永久缓存 'expire' => 0, // 缓存标签前缀 'tag_prefix' => 'tag:', // 序列化机制 例如 ['serialize', 'unserialize'] 'serialize' => [], ], // redis缓存 'redis' => [ // 驱动方式 'type' => 'redis', // 服务器地址 'host' => '127.0.0.1', ], // 更多的缓存连接 ], ];
4. パブリック コントローラー
- BaseController.php デフォルトの基本コントローラー クラス
use think\facade\View;
use think\facade\Db;
use think\facade\Session;
public function initialize(){
$session = Session::all();
if(empty($session['uid'])){
echo '<script type="text/javascript">alert("请登录!");window.location.href = "/index.php/login/index"; </script>';
exit;
}
$login = $session['account'];
# 左侧菜单
$menu = Db::table('shop_menu')->where('fid',0)->select();
$left = $menu->toArray();
foreach($left as &$left_v){
$left_v['lists'] = Db::table('shop_menu')->where('fid',$left_v['id'])->select();
}
View::assign([
'login' => $login,
'left' => $left,
]);
}
Index/Index.php
namespace app\controller;
use app\BaseController;
use think\facade\View;
use think\facade\Db;
use think\facade\Request;
use app\model\Goods;
class Index extends BaseController{
public function index(){
$title = '商城';
# 右侧列表
$param = Request::param();
if(isset($param['status']) && $param['status'] == 1){
$where['status'] = 1;
}else if(isset($param['status']) && $param['status'] == 2){
$where['status'] = 2;
}else{
$where = true;
}
$p = isset($param['p']) ? $param['p'] : 1;
$db = new Goods();
$order = [
'add_time DESC',
'id DESC'
];
$right = $db->get_all($where,$order,$p,5);
View::assign([
'title' => $title,
'right' => $right['data'],
'count' => $right['count'],
'p' => $p,
'status' => isset($param['status']) ? $param['status'] : 0
]);
return View::fetch();
}
}- 5. ファサード
facadeファサードコンテナ内の (動的) クラスに静的呼び出しインターフェイスを提供します。従来の静的メソッド呼び出しと比較して、テスト容易性と拡張性を向上させるために、非静的クラスに対してclass
| ファサードクラス | |
| think\facade\App | |
| think\facade\Cache | |
| think\facade\Config | |
| think\facade\Cookie | |
| think\facade\Db | |
| think\facade\Env | |
| think\facade\Event | |
| think\facade\ファイルシステム | |
| think\facade\Lang | |
| think\facade\Log | |
| think\facade\Middleware | |
| think\facade\Request | |
| think\facade\Response | |
| think\facade\Route | |
| think\facade\Session | |
| think\Validate | think\facade\Validate |
| think\View | think\facade\View |
| 説明 | |
| 実行を中止して送信HTTP ステータス コード | |
| コンテナ内のインスタンスの迅速な取得は依存関係の挿入をサポート | |
| ファストバインディングオブジェクトインスタンス | |
| キャッシュ管理 | |
| クラス名を取得(名前空間は含まれません) | |
| クラスで使用されているすべての特性を取得します | |
| Getそして構成パラメータを設定します | |
| Cookie管理 | |
| Get\think\response\オブジェクト インスタンスのダウンロード | |
| ブラウザ フレンドリーな変数出力 | |
| 環境変数の取得 | |
| トリガーイベント | |
| 変数デバッグ出力と割り込み実行 | |
| 入力データの取得はデフォルト値とフィルタリングをサポートします | |
| invoke | リフレクション実行 callable の呼び出しは依存関係の挿入をサポートします |
| json | JSON データ出力 |
| jsonp | JSONP データ出力 |
| lang | 言語変数値の取得 |
| parse_name | 文字列命名スタイルの変換 |
| リダイレクト出力 | |
| Get現在のリクエスト オブジェクト | |
| レスポンス オブジェクトのインスタンス化 | |
| セッション管理 | |
| フォーム トークン出力の生成 | |
| ログ情報の記録 | |
| トレイト内で参照されているすべてのトレイトを取得します | |
| URL 生成 | |
| インスタンス化されたバリデータ | |
| テンプレート出力のレンダリング | |
| 表示 | レンダリング コンテンツ出力 |
| xml | XML データ出力 |
| app_path | 現在のアプリケーション ディレクトリ |
| base_path | アプリケーション ベース ディレクトリ |
| config_path | アプリケーション構成ディレクトリ |
| #public_path | Web ルート ディレクトリ |
| アプリケーション ルート ディレクトリ | |
| アプリケーション ランタイム ディレクトリ |
# #/ / 入力データを取得します。Request::param()
$param = input();// 変数のデバッグ出力と実行の中断
$ shop = Db::table('shop_goods')->select();
halt($shop);
// View::fetch() 効果を伴うテンプレート出力のレンダリング 同じ
return view();
7. デバッグ
1. デバッグ モードとトレース デバッグ
- root
- ディレクトリ内の .env
ファイル
APP_DEBUG = true
準備: 正式なデプロイ後にデバッグ モードをオフにする
2. 変数のデバッグ
#ThinPHP には組み込みの- dump
- デバッグ メソッド
dump($shop);#
関連動画
ホットAIツール
Undress AI Tool脱衣画像を無料で
AI Clothes Remover写真から衣服を削除するオンライン AI ツール。
Undresser.AI Undressリアルなヌード写真を作成する AI 搭載アプリ
Stock Market GPTAIを活用した投資調査により賢明な意思決定を実現
人気の記事
モニターの色が褪せたり黄色くなったりするのを修正するにはどうすればよいですか? 4週間前 By 下次还敢プレミア公開で字幕を追加する方法 3週間前 By 下次还敢Windows10がインターネットに接続できない_Win10ネットワークリセットコマンド詳細解説 2週間前 By DDDホットトピック
# Douyin レベル価格表 1-7520449
7
# Wi-FiにIPが割り当てられていないことが表示される13592
4
# 確認コードを受け取るための仮想携帯電話番号11933
4
# Gmailメールのログイン入り口はどこですか?8937
17
人気のツール
メモ帳++7.3.1使いやすく無料のコードエディター
SublimeText3 中国語版中国語版、とても使いやすい
ゼンドスタジオ 13.0.1強力な PHP 統合開発環境
ドリームウィーバー CS6ビジュアル Web 開発ツール
SublimeText3 Mac版神レベルのコード編集ソフト(SublimeText3)












![PHP 実践開発入門: PHP クイック作成 [中小企業フォーラム]](https://img.php.cn/upload/course/000/000/035/5d27fb58823dc974.jpg)









