ThinkPHP の入門例
今では国産の PHP フレームワーク ThinkPHP が根強い人気があるので、今回は ThinkPHP を使って簡単に操作してみます。
私がやったのは単純なログイン操作です。つまり、ログイン機能を実装しますが、他のページに不正にアクセスすることはできません。そうでない場合は、ログインインターフェイスにジャンプします。
1: 公式サイトに移動します。最新の ThinkPHP をダウンロードするための Web サイト、私がダウンロードしたのは 3.2.3 のフルバージョンです
2: プロジェクトの作成には、PHP 統合環境である wampserver を使用します。もちろん、phpstudy や xampp を使用することもできます。ここでは詳細は説明しません。
www ディレクトリに think-demo フォルダーを作成します。これはプロジェクト名です。ここでそれを選択して、解凍します。ダウンロードした thinkphp 圧縮パッケージを think-demo ディレクトリに移動します
これらのディレクトリは解凍後に表示されます。このとき、アプリケーションにはインデックスが 1 つだけあり、index.php を設定すると、ブラウザは生成されたプロジェクトのディレクトリ
<?php// +----------------------------------------------------------------------// | ThinkPHP [ WE CAN DO IT JUST THINK ]// +----------------------------------------------------------------------// | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved.// +----------------------------------------------------------------------// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )// +----------------------------------------------------------------------// | Author: liu21st <[email protected]>// +----------------------------------------------------------------------// 应用入口文件// 检测PHP环境if(version_compare(PHP_VERSION,'5.3.0','<')) die('require PHP > 5.3.0 !');// 开启调试模式 建议开发阶段开启 部署阶段注释或者设为falsedefine('APP_DEBUG',True);// 定义应用目录define('APP_PATH','./Application/');/*缓存目录设置*/define("RUNTIME_PATH",'./Runtime/');// 引入ThinkPHP入口文件require './ThinkPHP/ThinkPHP.php';
<?php// +----------------------------------------------------------------------// | ThinkPHP [ WE CAN DO IT JUST THINK ]// +----------------------------------------------------------------------// | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved.// +----------------------------------------------------------------------// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )// +----------------------------------------------------------------------// | Author: liu21st <[email protected]>// +----------------------------------------------------------------------// 后台入口文件// 检测PHP环境if(version_compare(PHP_VERSION,'5.3.0','<')) die('require PHP > 5.3.0 !');// 开启调试模式 建议开发阶段开启 部署阶段注释或者设为falsedefine('APP_DEBUG',True);define('BIND_MODULE','Admin');// 定义后台Admin目录define('APP_PATH','./Application/');/*缓存目录设置*/define('RUNTIME_PATH','./Runtime/');// 引入ThinkPHP入口文件require './ThinkPHP/ThinkPHP.php';
データベースを作成するには、考えてテーブルを作成します admin:
データを挿入 1 、admin、admin (パスワードは暗号化されています) md5 を使用)
次に、ここでバックグラウンド ログイン モジュールを完了するだけです。そのため、ホーム ディレクトリを使用する必要はなく、Admin ディレクトリのみが必要です。Controller ディレクトリに新しいディレクトリを作成します。 CommonController.class.php と LoginController.php の 2 つのファイル
のコードはそれぞれ次のとおりです:
<?php/* * 公共控制器 */ namespace Admin\Controller; use Think\Controller; class CommonController extends Controller{ /*判断用户是否登录*/ public function _initialize(){ if(!isset($_SESSION['uid']) || !isset($_SESSION['username'])){ redirect(U('Login/index')); } } } ?>
<?php/* * 后台登录控制器 */ namespace Admin\Controller; use Think\controller; class LoginController extends Controller{ /*登录页视图*/ public function index(){ $this->display(); } /*登录处理*/ public function login(){ if(!IS_POST) $this->error('访问页面不存在'); $name = I('username'); $pwd = md5(I('password')); $db = M('admin'); $admin = $db->where(array('username'=>$name))->find(); if(!$admin || $admin['password'] != $pwd){ $this->error('账号或密码错误'); } session('uid',$user['id']); session('username',$user['username']); $this->success('登录成功!', __APP__); } }
<?phpreturn array( /*数据库配置*/ 'DB_TYPE' => 'mysql', //数据库类型 'DB_HOST' => '127.0.0.1', //数据库地址 'DB_NAME' => 'wldt', //数据库名称 'DB_USER' => 'root', //用户名 'DB_PWD' => '', //密码 //'DB_PREFIX' => 'dt_', //数据库表前缀 /*模板配置*/ 'TMPL_PARSE_STRING' => array( '__PUBLIC__' => '/think-demo/Application/Admin/View/Public', ), /*SESSION和COOKIE配置*/ 'SESSION_PREFIX' => 'dt_admin');
Admin の下の View ディレクトリの下に新しいディレクトリを作成します Login と Public Login はログイン ビューを保存し、Public は使用した CSS、JS、画像などのリソースを保存し、ログイン ディレクトリに新しい Index.html を作成します。これがログイン ページです。私が完成したデモはそれに応じて処理されています
ログイン ページ コード:
次に、アドレス http://localhost/ を入力します。 think-demo/index.php/Admin/login にアクセスします。正しいアカウントを入力すると、アクセスは正しく行われます。そうでない場合は、ログイン ページに戻ります
<html><!DOCTYPE html><html lang="en" class="no-js"> <head> <meta charset="utf-8"> <title>登录(Login)</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="description" content=""> <meta name="author" content=""> <!-- CSS --> <link rel="stylesheet" href="__PUBLIC__/assets/css/reset.css"> <link rel="stylesheet" href="__PUBLIC__/assets/css/supersized.css"> <link rel="stylesheet" href="__PUBLIC__/assets/css/style.css"> <!-- HTML5 shim, for IE6-8 support of HTML5 elements --> <!--[if lt IE 9]> <script src="__PUBLIC__/assets/js/html5.js"></script> <![endif]--> </head> <body> <div class="page-container"> <h1>登录(Login)</h1> <form action="{:U('login')}" method="post"> <input type="text" name="username" class="username" placeholder="请输入您的用户名!"> <input type="password" name="password" class="password" placeholder="请输入您的用户密码!"> <button type="submit" class="submit_button">登录</button> <div class="error"><span>+</span></div> </form> </div> <!-- Javascript --> <script src="__PUBLIC__/assets/js/jquery-1.8.2.min.js" ></script> <script src="__PUBLIC__/assets/js/supersized.3.2.7.min.js" ></script> <script src="__PUBLIC__/assets/js/supersized-init.js" ></script> <script src="__PUBLIC__/assets/js/scripts.js" ></script> </body></html>
この時点で、小さなデモが完了しました。プロセス全体は非常に長くなりますが、この小さなデモをリソース リストにアップロードしました。