Web应用,web应用防火墙

Web应用Thinkphp框架 二级导航分类,模板继承,内置标签Public 修改MVC模块化 ——访问机制传参加载模版模版引入 分离Runtime 缓存文件 管理员添加数据验证及验证场景 控制器 validat

Thinkphp框架

二级导航分类、模板继承、内置标签公共修改MVC模块化——访问机制转发和加载模板引入模板独立运行时缓存文件

管理员添加数据验证和验证方案。控制器验证。

SQL执行前验证数据模板(敏感操作) 分页数据表连接查询TP相关查询

——————

这是3.2版本的教程,所以稍后会针对5.0版本进行改进。主要记录思路是无限分类模块实现产品模块、会话控制器设计、模板布局初始化、模板分配请求和响应。

回复

URL 和路由

网址和路线

二级导航分类,模板继承,内置标签

模板继承

登录后复制

{block name=\’title\’}title网站标题/title{/block}

1.

登录后复制

{块名称=\’title\’}标题{$web_title}/title{/block}

1.

登录后复制

{块名称=\’include\’}{include file=\’Public:header\’/}{/block}

1.

登录后复制

html

meta http-equiv=\’内容类型\’ content=\’text/html\’;

标题{块名称=\’title\’}标题{/块}/标题

/头

身体

{块名称=\’菜单\’}菜单{/块}

{block name=\’left\’}左列{/block}

{block name=\’main\’}主要内容{/block}

{block name=\’right\’}右栏{/block}

{块名称=\’页脚\’}底部{/块}

/身体

/html

1.2.3.4.5.6.7.8.9.10.11.12.13。

登录后复制

{extend name=\’base\’ /} {块名称=\’title\’}{$title}{/block}

1.

登录后复制

{块名称=\’菜单\’}

a href=\’/\’ 主页/a

a href=\’/info/\’信息/a

href=\’/bbs/\’ 论坛/a

{/堵塞}

{块名称=\’左\’}

{/堵塞}

{块名称=\’主\’}

{vo 列表名称=\’list\’ id=\’vo\’}

a href=\’/new/{$vo.id}\'{$vo.title}/a

br/

{$vo.内容}

{/鲍里斯特}

{/堵塞}

{块名称=\’右\’}

最新消息:{volist name=\’news\’ id=\’new\’}

a href=\’/new/{$new.id}\'{$new.title}/a

br/

{/鲍里斯特}

{/堵塞}

{块名称=\’页脚\’}

{__block__} @ThinkPHP 保留所有权利

{/堵塞}

1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27。

登录后复制

{block name=\’footer\’} {__block__}@ThinkPHP 版权所有{/block}

1.

登录后复制

{扩展名称=\’Public:base\’/}

1.

登录后复制

{扩展名称=\’./Template/Public/base.html\’/}

1.

登录后复制

{块名称=\’标题\’}

标题{$标题}/标题

{/堵塞}

a href=\’/\’ 主页/a

a href=\’/info/\’ 信息/a

href=\’/bbs/\’ 论坛/a

1.2.3.4.5.6。

内置标签

循环输出标签

登录后复制

$列表=users:all();

$this-assign(\’列表\’,$list);

1.2.

登录后复制

{vo 列表名称=\’list\’ id=\’vo\’}

{$vo.id}:{$vo.name}br/

{/鲍里斯特}

1.2.3.

登录后复制

{volist name=\’list\’ id=\’data\’}

{$data.id}:{$data.name}br/

{/鲍里斯特}

1.2.3.

登录后复制

{volist name=\’list\’ id=\’vo\’ offset=\’5\’ length=\’10\’}

{$vo.name}

{/鲍里斯特}

1.2.3.

登录后复制

{volist name=\’list\’ id=\’vo\’ mod=\’2\’ }

{eq name=\’mod\’ value=\’1\’}{$vo.name}{/eq}

{/鲍里斯特}

1.2.3.

登录后复制

{vo 列表名称=\’列表\’ id=\’vo\’ mod=\’5\’ }

{$vo.name}

{eq name=\’mod\’ value=\’4\’}br/

{/eq}

{/鲍里斯特}

1.2.3.4.5。

登录后复制

{volist name=\’list\’ id=\’vo\’ empty=\’尚无数据\’ }

{$vo.id}|{$vo.name}

{/鲍里斯特}

1.2.3.

登录后复制

$this-assign(\’空\’,\’span class=\’空\’无数据/span\’);

$this-assign(\’列表\’,$list);

1.2.

登录后复制

{volist name=\’list\’ id=\’vo\’ empty=\’$empty\’ }

{$vo.id}|{$vo.name}

{/鲍里斯特}

1.2.3.

登录后复制

{volist name=\’list\’ id=\’vo\’ key=\’k\’ }

{$k}.{$vo.name}

{/鲍里斯特}

1.2.3.

登录后复制

{vo 列表名称=\’列表\’ id=\’vo\’ }

{$i}.{$vo.name}

{/鲍里斯特}

1.2.3.

登录后复制

{vo 列表名称=\’列表\’ id=\’vo\’ }

{$key}.{$vo.name}

{/鲍里斯特}

1.2.3.

登录后复制

{volist name=\’:fun(\’arg\’)\’ id=\’vo\’}

{$vo.name}

{/鲍里斯特}

1.2.3.

FOREACH标签

登录后复制

{foreach $list 作为$vo}

{$vo.id}:{$vo.name}

{/foreach}

1.2.3.

登录后复制

{foreach name=\’list\’ item=\’vo\’}

{$vo.id}:{$vo.name}

{/foreach}

1.2.3.

登录后复制

{foreach name=\’list\’ item=\’vo\’ }

{$key}|{$vo}

{/foreach}

1.2.3.

登录后复制

{foreach name=\’list\’ item=\’vo\’ key=\’k\’ }

{$k}|{$vo}

{/foreach}

1.2.3.

FOR标签

登录后复制

{for start=\’起始值\’ end=\’结束值\’ Comparison=\’\’ step=\’步长值\’ name=\’循环变量名\’ }

{/为了}

1.2.

登录后复制

{开始=\’1\’结束=\’100\’}

{$i}

{/为了}

1.2.3.

登录后复制

如果($i=1;$i100;$i+=1)

{

回声$i。

}

1.2.3.4。

比较标签

登录后复制

{比较标签名称=\’变量\’值=\’值\’}

内容

{/比较标签}

1.2.3.

登录后复制

{eq 名称=\’名称\’ 值=\’值\’}

价值

{/eq}

1.2.3.

登录后复制

{等于名称=\’名称\’值=\’值\’}

价值

{/平等的}

1.2.3.

登录后复制

{eq 名称=\’名称\’ 值=\’值\’}

平等的

{除此之外/}

不等于

{/eq}

1.2.3.4.5。

登录后复制

{gt name=\’name\’ value=\’5\’}value{/gt}

1.

登录后复制

{egt name=\’name\’ value=\’5\’}value{/egt}

1.

登录后复制

{eq name=\’vo.name\’ value=\’5\’}

{$vo.name}

{/eq}

1.2.3.

登录后复制

{eq name=\’vo:name\’ value=\’5\’} {$vo.name} {/eq}

1.

登录后复制

{eq name=\’vo[\’name\’]\’ value=\’5\’}

{$vo.name}

{/eq}

1.2.3.

登录后复制

{eq name=\’vo:name|strlen\’ value=\’5\’}{$vo.name}{/eq}

1.

登录后复制

{eq name=\’Think.get.name\’ value=\’value\’}

平等的

{除此之外/}

不等于

{/eq}

1.2.3.4.5。

登录后复制

{eq name=\’vo:name\’ value=\’$a\’}{$vo.name}{/eq}

1.

登录后复制

{比较名称=\’名称\’值=\’5\’类型=\’eq\’}值{/比较}

1.

登录后复制

{eq name=\’name\’ value=\’5\’ }value{/eq}

1.

条件判断

开关标签

登录后复制

{开关名称=\’变量\’}

{case value=\’值1\’ Break=\’0或1\’}输出内容1{/case}

{case value=\’值2\’}输出内容2{/case}

{默认/}默认

{/转变}

1.2.3.4.5。

登录后复制

{switch name=\’用户级别\’}

{case value=\’1\’}value1{/case}

{case value=\’2\’}value2{/case}

{默认/}默认

{/转变}

1.2.3.4.5。

登录后复制

{开关名称=\’Think.get.userId|abs\’}

{case value=\’1\’}管理员{/case}

{默认/}默认{/开关}

1.2.3.

登录后复制

{switch name=\”Think.get.type\”}
{case value=\”gif|png|jpg\”}图像格式{/case}
{default /}其他格式
{/switch}
1.2.3.4.

登录后复制

{switch name=\”Think.get.userId|abs\”}
{case value=\”1\” break=\”0\”}admin{/case}
{case value=\”2\”}admin{/case}
{default /}default
{/switch}
1.2.3.4.5.

登录后复制

{switch name=\”User.userId\”}
{case value=\”$adminId\”}admin{/case}
{case value=\”$memberId\”}member{/case}
{default /}default
{/switch}
1.2.3.4.5.

登录后复制

{switch $User.userId}
{case $adminId}admin{/case}
{case $memberId}member{/case}
{/switch}
1.2.3.4.

IF标签

登录后复制

{if condition=\”($name == 1) OR ($name > 100) \”}
value1
{elseif condition=\”$name eq 2\”/}
value2
{else /}
value3
{/if}
1.2.3.4.5.6.7.

登录后复制

{if condition=\”strtoupper($user[\’name\’]) neq \’THINKPHP\’\”}
ThinkPHP
{else /}
other Framework
{/if}
1.2.3.4.5.

登录后复制

{if condition=\”$user.name neq \’ThinkPHP\’\”}
ThinkPHP
{else /}
other Framework
{/if}
1.2.3.4.5.

登录后复制

{if condition=\”$user:name neq \’ThinkPHP\’\”}
ThinkPHP
{else /}
other Framework
{/if}
1.2.3.4.5.

登录后复制

{if condition=\”表达式\”}
{if (表达式)}
{if 表达式}
1.2.3.

IN和NOTIN

登录后复制

$id = 1;
$this->assign(\’id\’,$id);
1.2.

登录后复制

{in name=\”id\” value=\”1,2,3\”}
id在范围内
{/in}
1.2.3.

登录后复制

{notin name=\”id\” value=\”1,2,3\”}
id不在范围内
{/notin}
1.2.3.

登录后复制

{in name=\”id\” value=\”1,2,3\”}
id在范围内
{else/}
id不在范围内
{/in}
1.2.3.4.5.

登录后复制

{in name=\”Think.get.id\” value=\”1,2,3\”}
$_GET[\’id\’]
在范围内
{/in}
1.2.3.4.

登录后复制

{in name=\”id\” value=\”$range\”}
id在范围内
{/in}
1.2.3.

登录后复制

{in name=\”id\” value=\”$Think.post.ids\”}
id在范围内
{/in}
1.2.3.

BETWEEN 和 NOTBETWEEN

登录后复制

{between name=\”id\” value=\”1,10\”}
输出内容1
{/between}
1.2.3.

登录后复制

{notbetween name=\”id\” value=\”1,10\”}
输出内容2
{/notbetween}
1.2.3.

登录后复制

{between name=\”id\” value=\”1,10\”}
输出内容1
{else/}
输出内容2
{/between}
1.2.3.4.5.

登录后复制

{between name=\”id\” value=\”1,3,10\”}
输出内容1
{/between}
1.2.3.

登录后复制

{between name=\”id\” value=\”A,Z\”}
输出内容1
{/between}
1.2.3.

登录后复制

{between name=\”Think.post.id\” value=\”1,5\”}
输出内容1
{/between}
1.2.3.

登录后复制

{between name=\”id\” value=\”$range\”}
输出内容1
{/between}
1.2.3.

登录后复制

{between name=\”id\” value=\”$Think.get.range\”}
输出内容1
{/between}
1.2.3.

RANGE

登录后复制

{range name=\”id\” value=\”1,2,3\” type=\”in\”} 输出内容1 {/range}
1.

PRESENT NOTPRESENT标签

登录后复制

{present name=\”name\”} name已经赋值 {/present}
1.

登录后复制

{notpresent name=\”name\”} name还没有赋值 {/notpresent}
1.

登录后复制

{present name=\”name\”}
name已经赋值
{else /}
name还没有赋值
{/present}
1.2.3.4.5.

登录后复制

{present name=\”Think.get.name\”}
$_GET[\’name\’]已经赋值
{/present}
1.2.3.

EMPTY NOTEMPTY 标签

登录后复制

{empty name=\”name\”}
name为空值
{/empty}
1.2.3.

登录后复制

{notempty name=\”name\”} name不为空 {/notempty}
1.

登录后复制

{empty name=\”name\”}
name为空
{else /}
name不为空
{/empty}
1.2.3.4.5.

登录后复制

{empty name=\”Think.get.name\”} $_GET[\’name\’]为空值 {/empty}
1.

DEFINED 标签

登录后复制

{defined name=\”NAME\”} NAME常量已经定义 {/defined}
1.

登录后复制

{notdefined name=\”NAME\”} NAME常量未定义 {/notdefined}
1.

登录后复制

{defined name=\”NAME\”} NAME常量已经定义 {else /} NAME常量未定义
{/defined}
1.2.

Public 修改

入口文件位置

tp3—->tp5根路径tp5 —>public文件夹内入口重定向
域名 重定向
更改网站目录到public—>访问index
hosts配置

MVC模块化 ——访问机制

application 应用模块 eg: index admin

模块里面 controller 控制器

访问非索引方法 ——自己写模块

传参

加载模版

没有 找到 方法fetch引入空间/引入空间类元素

继承(类用类方法)用限定方法引入类也可以使用引入空间 再继承相关类也可以限定模版名称

模版引入 分离

复制模版进入输出替换 –配置模版路径 tp3–>;

总config 和 分config之分

模版替换

拼装路径

静态文件 css images js

模版分离(公共文件)

Runtime 缓存文件

管理员添加

提交到 本文件下 即:list打印测试 与tp3.2 不同

静态方法 —insert插入传出值

引入类添加一条数据批量添加 返回成功数据量

数据验证及验证场景 控制器 validate

后端验证 3.2字段验证 5.0以后变化很大validate创建验证文件

控制器 validate
实例化 验证类
数组 验证字段/规则
传入验证字段
执行 验证策略
Dump 执行结果

在sql执行(敏感操作)之前验证

也可以引入 继承

打印调试验证规则创建 拦截器文件

注意TP的namespace的根命名空间

一个元素就是一个验证场景

数据模板 分页

获取数据

创建model

分配到模板当中 名字/值循环输出 分配过来的数组数据

空间类元素引入完全限定名称

分页

排序 默认升序

查询数据 一维二维数组的区别调试查询功能结果

修改数据 需要主键——判断哪一条数据隐藏域 数据表主键

dump 一下 调试

数组传值

密码为空 不修改

验证 拦截器功能

数组传值看一下传值查看是否解析 (还是用数组写法)初始化管理员 不可动摇助手函数 (不用引用类了) 准备好那个id写入组件/where执行成功 跳回当前控制器条件判断 来隐藏初始化管理员

模型—>引入类 使用静态方法伪静态 .html可以不带

id以隐藏于submit

控制器首字母要大写

唯一性验证

还是这样 重复造轮子 把上面的文档 复制 更改增加就行根据策划 数据库 来写拼搭前端页面res 二维数组

前端 form 表单name 对应 数据库表单调试 打印 上传图片信息调试 上传结果拼装路径

关联查询

数据表连接查询

生成sql查询 –>返回二维数组 —->分配到模板

TP 关联查询

主 从表关系 相对关联关系关联好了 取数据

文章修改

编辑

Ctrl + F5

隐藏域标记

这里调整 删除路径的

验证码类 管理登录逻辑
TP 拓展类 (下一个完整版)- composer/官网

model 模型 处理数据验证完 就执行登陆跳转写入session清除 session验证码配置放在公用 config内样式对齐字符提取 重置 点击刷新验证验证码

复用功能代码 拆分 到public 控制器代码继承base class 继承Controller 且 公用base 已经继承 think本身controller

科学权限认证 公用机制

前端页面调用
前端后台控制器 变量接收 获得数据库 二维数组数据 写入模板
并 排序

导航 链接 跳转 传参-当前栏目id伪静态加载模板header 加载导航变量 引导页面
也要 添加需要的数据 -助手函数很方便(不用引用类)

其他页面 的操作方法
分配页面数据

– 控制器复用 直接继承
构造初始化方法 调试

继承

前端 base 复用方法

根据id 查询并分页数据 循环显示更改分页 查询调整样式

跳转到 文章页 分配内容补全时间戳变换

推荐 数据 查找 分配

首页 数据 分配

右侧栏 拆分

有一些图片 链接地址 更改

标签 关键字 字符替换保证写进数据库 的是 英文“ ,” 分割方便

相关文章推荐:<暂无>
#以上关于Web应用的相关内容来源网络仅供参考,相关信息请以官方公告为准!

原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/92592.html

(0)
CSDN's avatarCSDN
上一篇 2024年6月27日 下午5:17
下一篇 2024年6月27日 下午5:17

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注