6月1日,小雨。“ 梅子金黄杏子肥,麦花雪白菜花稀。

日长篱落无人过,唯有蜻蜓蛱蝶飞。”

七、MVC模式

ThinkPHP的MVC开发机制例如以下:


Model层    模型
:就是数据库操作类(通过数据库操作类去操作各个表)。       

       V  View层     视图:指模版。

       C  Controller层  控制器:就是通过控制器来实现模版,模型之间的控制关系。

MVC架构中,Controller是必须的。由于controller掌管着业务逻辑的控制权。

通常的流程是:请求从入口文件进入。然后就经过路由匹配。最后把控制权交到对应的controller上。開始处理业务,model和view的调用都由controller的代码决定。换句话说,在Controller中能够不用Model和View,仅仅是这样一来,就表示你的这个业务不与数据库交互(Model),也不产生不论什么表现性的输出(View)。

八、后台编写

1、 改动admin/Lib/Action/IndexAction.class.php。例如以下:

<?php
// 本类由系统自己主动生成,仅供測试用途
class IndexAction extends Action {
public function index() {
if (session ( '?username' )) { } else {
$this->error ( '亲,您好,请先登录!', U ( '/Login/index/' ) );
}
}
}

代码说明:

要推断一个session值是否已经设置,能够使用 session('?name'); 用于推断名称为name的session值是否已经设置 相当于: isset($_SESSION['name']);

U ( '/Login/index/' )的含义是找Login模块下的index方法。

2、编写admin\Lib\Action\LoginAction.class.php

<?

php
class LoginAction extends Action {
function index() {
// 配置页面显示内容
$this->assign ( 'title', '后台管理系统' );
$this->display ();
}
}

在Action中使用assign方法能够给模板变量赋值。那么使用内置的模板引擎输出变量,仅仅须要在模版文件使用:{$title}。模板编译后的结果就是<?

php echo ($title); ?

>,最后执行的时候就能够在标签位置显示ThinkPHP的输出结果。

        注意模板标签的{和$之间不能有不论什么的空格。否则标签无效。

3、编写admin\Tpl\Login\index.html

直接把后台模板,admin-templates.rar里面的login.html里面的所有内容拷入。

前后台模板下载地址:http://download.csdn.net/detail/zwszws/8773601

把下载的前端模板里面目录css、images和scripts里面的文件所有分别放入public\Css\admin和\public\Images\admin以及\publicJs\admin里面.

改动index.html文件中的相关资源路径。如:

<link rel="stylesheet" href="__PUBLIC__/Css/admin/reset.css"

<script type="text/javascript" src="__PUBLIC__/Js/admin/jquery-1.3.2.min.js"></script>

<img id="logo" src="__PUBLIC__/Images/admin/logo.png" alt="Simpla Admin logo" />

4、再次訪问:http://localhost/MyFirstThinkPHP_1/admin.php  。呵呵,后台登录页面出来了。

5、加个验证码

改动admin\Tpl\Login\index.html文件。增加

<p>
<label>验证码</label>
<input class="text-input" type="text" name="verify"/>
<img src="__APP__/Common/verify" onclick="show(this)"/>
</p> <script>
function show(obj){
obj.src="__APP__/Common/verify";
}
</script>

编写admin\Lib\Action\CommonAction.class.php

<?

php
class CommonAction extends Action{
function verify(){
//导入验证码类
import("ORG.Util.Image"); /*
* 參数1:验证码长度,默认4
* 參数2:类型。0为字母。1为数字。2为大写字母。3为小写字母。4为中文
* 參数3:图片类型,默认png格式,若server没有开PNG,就改成其它格式
* 參数4:图片宽度(依据长度自己主动计算)
* 參数5:图片高度,默认22个像素
* 參数6:验证码保存在Session的名称 'verify'
*/ Image::buildImageVerify(4,1,'png',70,30);//静态方法
}
}
? >

4、再次訪问:http://localhost/MyFirstThinkPHP_1/admin.php  。呵呵。验证码出来了!

第三天 ThinkPHP手把手高速拼接站点(三)的更多相关文章

  1. 第四天 ThinkPHP手把手高速拼接站点(四)

    6月6日,晴天."熟梅天气豆生蛾.一见榴花感慨多. 芒种积阴凝雨润,菖蒲修剪莫蹉跎. " 九.后台编写-续-1 1.改动admin/Tpl/Login/index.html 自己改 ...

  2. 使用ThinkPHP框架高速开发站点(多图)

    使用ThinkPHP框架高速搭建站点 这一周一直忙于做实验室的站点,基本功能算是完毕了.比較有收获的是大概了解了ThinkPHP框架.写一些东西留作纪念吧.假设对于相同是Web方面新手的你有一丝丝帮助 ...

  3. [译]MVC网站教程(三):动态布局和站点管理

    目录 1.   介绍 2.   软件环境 3.   在运行示例代码之前(源代码 + 示例登陆帐号) 4.   自定义操作结果和控制器扩展 1)   OpenFileResult 2)   ImageR ...

  4. (视频)《高速创建站点》 4.2 完结篇 – 应用运营vs.发射卫星,遥測(Telemetry) 技术

    本文是<高速创建站点>系列的第10篇(完结篇),假设你还没有看过之前的内容,建议你点击下面文件夹中的章节先阅读其它内容再回到本文.訪问本系列文件夹.请点击:http://anb.io/bl ...

  5. m_Orchestrate learning system---十三、thinkphp的验证器支持多语言么

    m_Orchestrate learning system---十三.thinkphp的验证器支持多语言么 一.总结 一句话总结:支持,不仅验证器支持,其它的插件应该都支持 不仅thinkphp支持多 ...

  6. LVS(Linus Virtual Server):三种负载均衡方式比较+另三种负载均衡方式

    还有个姊妹篇也可以参考这个文章:六大Web负载均衡原理与实现 什么是LVS (Linux Virtual Server)?   首先简单介绍一下LVS (Linux Virtual Server)到底 ...

  7. uni-app&H5&Android混合开发三 || uni-app调用Android原生方法的三种方式

    前言: 关于H5的调用Android原生方法的方式有很多,在该片文章中我主要简单介绍三种与Android原生方法交互的方式. 一.H5+方法调用android原生方法 H5+ Android开发规范官 ...

  8. 乒乓球队比赛,甲队有abc三人,乙队有xyz三人。 抽签得出比赛名单:a不和x比,c不和x,z比, 利用集合求出比赛名单

    import java.util.HashMap; import java.util.Map; /** * 乒乓球队比赛,甲队有abc三人,乙队有xyz三人. * 抽签得出比赛名单:a不和x比,c不和 ...

  9. ThinkPHP 3.2.3(三)架构之URL模式

    一.标准URL格式 http://serverName/index.php/模块/控制器/操作   二.URL大小写 在/ThinkPHP/Conf/convention.php文件里有URL大小写的 ...

随机推荐

  1. bzoj 1303 杂题

    首先如果一个数是中位数,在这段区间中比他大的数量=比他小的数量,那么如果一个数比他大设为1,比他小设为-1,设要求的数在数组中的位置是mid,那么我们可以用num[i] 表示1-mid这一段中,j-m ...

  2. 【mysql优化1】表的优化与列类型选择

    数据类型及字节数参考http://www.cnblogs.com/qlqwjy/p/8590639.html -------------------------表的优化:--------------- ...

  3. Linux eject弹出光驱

    Linux eject命令用于退出抽取式设备. 若设备已挂入,则eject会先将该设备卸除再退出. 语法 eject [-dfhnqrstv][-a <开关>][-c <光驱编号&g ...

  4. Linux make命令详解

    在linux环境下的工作,免不了需要经常编译C/C++源代码,所以make命令是我们经常都会用到的.当然make工具不一定针对C代码,它也可以维护其他各种代码,详见:man make    在列举其详 ...

  5. python 文件操作 r w a

    python基础-文件操作   一.文件操作 对文件操作的流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件       打开文件时,需要指定文件路径和以何等方式打开文件, ...

  6. python3 uper(),继承实现原理,封装

    抽象类:本身不能被实例化,也不应该不实例化,它的作用就定义标准,并不用具体实现 import abc class Parent(metaclass=abc.ABCMeta): x=1 @abc.abs ...

  7. pinctrl框架

    pinctrl框架是linux系统为统一各SOC厂家pin管理,目的是为了减少SOC厂家系统移植工作量. 通常通过设备树初始化pinctrl,并提供调用io接口,以下为全志A64平台的实例: 在dri ...

  8. MYSQL通过索引优化数据库的查询

    #转载请联系 索引是什么? 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的位置信息. 更通俗的说,数据库索引好比是一本书前面的目录,能加快数据 ...

  9. delphi.memory.分配及释放---New/Dispose, GetMem/FreeMem及其它函数的区别与相同,内存分配函数

    来自:http://www.cnblogs.com/qiusl/p/4028437.html?utm_source=tuicool&utm_medium=referral ---------- ...

  10. head first (一):策略模式

    head first 看了一遍,被面试时问我工厂模式,我发现我还是不记得,所以还是认认真真的看一遍吧,上一遍看的太快了,什么都没有记住.这一遍我会写下一些东西帮助自己记忆和理解,例子我也会用C#自己写 ...