两套程序各有哪些文件、谁 require 谁、表是怎么配出来的、哪些文件不能公开。需要访问口令。
这一套东西里其实装着三类互相独立的程序,共用一份代码仓库,但各有各的入口、配置和数据表前缀:
index.php + application/(库 laoli_new 这类),
另外三套 llseo / laoli-toolbox / laoli-bizhi 各自一个目录一套库,装到客户站点上跑内容、工具、壁纸。web/ 根目录,纯静态加 inc/site.php,没有数据库;首页是 laolicms 的介绍,
/seo/、/tool/、/bizhi/ 各是一个二级目录,文档在 /docs/{程序}/。web/shouquan/ 一个独立应用,自己的 index.php、config.php、自己的库(laoli_lic,表前缀 un_),
卖四套程序、发授权码、发模板与插件包,对外提供 /api/ 校验、目录、更新与下载接口。几边代码互不引用:官网与授权中心都不 require application/ 里的任何东西,程序也不碰 web/。
相同的函数名(guojiz()、arcurl()、siteurl()…)是各自 inc/fun.php 里的独立实现,改一边不会同步另一边。
index.php 只做一件事:require application/inc/common.php。common.php 定义 IN_APP、UN_VERSION、UN_ROOT、APP_PATH,
没装(没有 application/config.php)就跳安装向导。db.php → page.php → tpl.php → fun.php → schema.php → jifen.php → license.php,
然后建全局连接 db()、开 UNSESSID 会话。form.php(表单令牌/防刷)、user.php(会员)、jump.php(跳转统计)、plugin.php(插件扫描)。route() 按 url 第一段分发:内置频道走各自函数,剩下的按子系统标识走通用 page_index/page_list/page_detail;
论坛、收录申请、ajax 这些才按需再 require forum.php、apply.php、ajax.php、misc.php。require __DIR__.'/global.php',鉴权、CSRF、控件渲染全在里面。web/shouquan/index.php → web/shouquan/inc/common.php:定义路径、读 web/shouquan/config.php、连库、开 UNSESSID 会话。common.php 里 route() 先跑内置频道(buy/order/license/dev/download/plan/user/forum/notice/search/tag/page),
剩下的按子系统标识取货;定义在 UN_ADMIN / UN_API 时不跑前台路由。web/shouquan/admin/*.php 各自 require global.php:超管门槛(admin_need_super())、
admin_safe_post() 会话令牌、admin_input() 字段控件、admin_data() 表单收集都在这里。inc/order.php + inc/license.php + inc/shop.php,
对外四个接口在 web/shouquan/api/,鉴权与限流在 web/shouquan/inc/api.php。web/index.php 与四个程序落地页都是静态页,数据只在 web/inc/site.php 一处(程序名、版本、价格、功能清单、下载地址)。web/inc/docs.php + web/inc/docs/{程序}/*.html,片段里的 {site}、{store}、{doc:xxx}
在输出前替换成真实地址,所以同一份片段既能从官网根目录走,也能从二级目录走。字段配置驱动是这一套程序的核心:子系统不是代码写死的,而是三张表配出来的。
un_sys:一个子系统一行,记标识、别名 url、内容表名、每页条数、默认排序、开关分类、列表/详情模板名。un_fields:这个子系统有哪些列、控件类型、哪个是标题/封面/正文、进不进列表/表单/搜索。un_sort:全部分类共用一张表,按 sys 区分,parent_id=0 是一级。un_content_标识:真正存内容的表,un_sys + un_fields 决定它有哪些列,
后台「数据工具」建子系统或补字段时按这两张表现建表(sys_build())。un_config:站点设置,前台用 guojiz('键') 读;带 tpl_ 前缀的键属于模板设置。官网端另有 un_plan(授权等级)、un_order(订单)、un_license / un_license_domain(授权码与绑定域名)、
un_dev_*(开发者投稿)、un_key(接口密钥)。CMS 端另有 un_user、un_forum_*、un_apply、
un_plugin、un_ad、un_nav、un_link、un_page、un_notice、un_stats 等。
删子系统要谨慎:商店、订单、下载、文档页都按 cms / mb / cj / doc
这四个标识取货(CMS 端的站点频道 html 是首页站块与收录申请依赖的核心),这几个只能停用不能删,后台已经拦住了。
「作用」这一列直接从每个文件头部注释里取,改文件说明时记得同步改注释,两边一致才对得上。
| 文件 | 作用 | 行数 |
|---|---|---|
index.php | 前台唯一入口(所有页面地址经此进入通用路由) | 10 |
install/index.php | 网页安装向导(环境检测 → 数据库与站点信息 → 建表写配置 → 安装完成) | 281 |
install/demo.php | 安装演示数据(分类、示例内容、公告、友情链接、广告位、管理员) | 568 |
| 文件 | 作用 | 行数 |
|---|---|---|
application/inc/ajax.php | 前台交互接口(点赞 / 收藏 / 评论),一套代码服务所有子系统,只按 sys + id 定位 | 126 |
application/inc/apply.php | 前台「提交收录」页。收录只进「站点」这一个子系统(旧站也只有网址导航收投稿), * 所以这里的目标固定是站点,下面选的是站点分类;提交时先过违禁词,再按需出门抓一次 * 对方网页(一键获取标题/关键词/简介/图标,同时判断对方有没有链回本站,勾了自动审核就直接通过)。 * 地址:/apply.html(GET 出表单,POST 收表单)、/ajax/fetch(一键获取的接口) | 277 |
application/inc/common.php | 前台引导与路由(读配置、连库、加载通用函数、按 url 分发到模板) | 730 |
application/inc/db.php | 数据库封装(极简 PDO 版,全站只用这一个类) | 126 |
application/inc/fetch.php | 代客户抓一次网页信息(收录申请页的「一键获取网站信息」)。 * 这是本站唯一会主动访问外人填的网址的地方,所以只放 http/https、只放公网 IP、 * 限制大小和时间,抓回来的标题/关键词/简介/图标和「有没有链回本站」一起给前端和审核用。 | 299 |
application/inc/form.php | 前台表单帮手。会员、论坛、收录申请三处表单共用同一套令牌校验、一次性提示、 * 防刷与上传,写法跟后台 global.php 的 admin_safe_post() 一致,只是会话键分开存, * 前台的令牌不会跟后台互相顶掉。 | 281 |
application/inc/forum.php | 前台论坛。板块列表、帖子列表、帖子详情、发帖、回复、删除都在这份文件里, * 地址统一是 /forum/xxx:b12=12号板块、p34=34号帖子、new=发帖、reply=回复、act=管理动作。 * 帖子和回复存纯文本,模板里用 nl2br 输出,会员写的 html 不会被当代码执行。 | 346 |
application/inc/fun.php | 全站通用函数库(一套函数服务所有子系统,只差表名与字段配置) | 1295 |
application/inc/jifen.php | 积分与会员权益引擎。积分/经验的加减与流水、经验等级表、勋章与头像框、积分商城、 * VIP 开通、打赏、扣积分解锁(下载 / 隐藏内容)、关注与访客、站内消息、会员申请单 * 全部集中在这里,前台会员中心(inc/user.php)、详情页和后台(admin/user*.php)都调这一份。 * 数据表是 MyISAM,没有事务,所以所有扣费都走「带余额条件的 UPDATE」,扣不成负数。 | 1024 |
application/inc/jump.php | 站点的本站跳转与点入/点出统计(旧站的 go.php 只管网址导航,这里也一样)。 * 前台的站点外链一律换成 /go/短链,地址栏里看不到对方域名; * 点出去给对方加一次点出,别人带着本站地址跳进来时按 Referer 加一次点入。 * 软件下载地址、工具外链这些都不接管。 | 179 |
application/inc/license.php | 授权码本地校验 + 联网激活(去授权中心远程核对)。未授权站点功能完全正常,不弹窗不降级。 | 217 |
application/inc/migrate.php | 旧站数据迁移引擎 —— 把老站库(zzdh_* 那一套表)按字段映射搬进新骨架: * 12 个子系统的分类与内容、会员、评论、论坛板块/帖子/回复、导航菜单、公告、友情链接, * 以及旧站目录里的本地图片和工具页面。所有步骤都按旧表主键分批推进,几十万条也不会超时。 | 963 |
application/inc/misc.php | 前台的零散页面 —— 友情链接(/link.html)与排行榜(/ranking.html)。 * 排行榜不写死栏目:凡是有浏览数列的子系统都会出现在切换条里, * 新增子系统后排行榜自动多一个页签,不用改这个文件。 * 榜型照旧站那十七种归并成十种(总浏览/日榜/月榜/最新/点入/点出/点赞/收藏/评分/编辑/随机/精选), * 地址不带 sys 就是全站聚合榜(每个子系统各取一批再按同一个指标合排),带 sys 就是这一个子系统自己的榜。 | 200 |
application/inc/page.php | 分页结果对象(既能被 {list} 直接循环,又能输出分页条) | 92 |
application/inc/plugin.php | 插件内核。插件放在 application/plugin/<标识>/ 下面,各自带 info.php(名称版本作者说明)、 * main.php(启用时包含的代码)、set.php(默认参数)、admin/<标识>.php(自己的后台页)。 * 开没开只看 config 表里的 plugin_<标识>,卸载只删目录,不动数据库里的内容。 | 158 |
application/inc/schema.php | 数据层(基础建表 + 子系统与字段配置种子 + 按字段配置自动建内容表) | 1269 |
application/inc/store.php | 应用商店 —— 从授权端在线拉模板/插件/程序目录,模板与插件买断下载(收费的要先在那边开通,免费的直接给链接), * 程序包仍要授权码换一次性令牌;模板包可以直接解压安装到 application/template/,插件与程序包只落到 uploads/store/ 由站长手动安装。 | 512 |
application/inc/tpl.php | 模板引擎(laolicms 标签语法:{list}/{if}/{include}/{page}/变量点语法,编译成 php 缓存) | 351 |
application/inc/update.php | 在线更新 —— 查本站授权对应商品的最新版,下载程序包,预览并备份后覆盖到站点根目录, * 覆盖完自动补齐新数据表与设置项,出问题时一键回滚到覆盖前的文件。 | 360 |
application/inc/user.php | 前台会员中心。登录、注册、退出、我的精选(收藏 / 评论 / 帖子 / 申请)、每日签到、 * 资料与密码修改都在这一份文件里,地址统一是 /user/动作。 * 会员表就是后台那张 user,role>=1 的账号既能进后台也能在论坛发帖,一个账号走全站。 | 821 |
| 文件 | 作用 | 行数 |
|---|---|---|
application/admin/comment.php | 评论管理。全站评论都在一张 comment 表里,用 sys + item_id 指向任意子系统的一条内容。 * 地址:comment.php?sys=&status=&ks=&page= | 144 |
application/admin/content.php | 内容管理。所有子系统共用这一页,列表显示哪些列、表单有哪些项,全由「字段配置」决定。 * 地址:content.php?sys=标识&ks=关键词&cid=分类&status=&page= | 318 |
application/admin/edit.php | 新增 / 编辑一条内容。表单项目完全由「字段配置」里 in_form=1 的字段生成, * 换任何子系统都是同一套代码,只是字段不同。 * 地址:edit.php?sys=标识&id=内容ID(不带 id 就是新增) | 235 |
application/admin/fields.php | 字段配置。子系统有哪些列、后台表单怎么渲染、列表/详情/搜索取哪些字段,都在这里改; * 保存后自动建列或改列(sys_build),加新字段不用动代码。 * 地址:fields.php?sys=标识 ;编辑加 &id=字段ID | 272 |
application/admin/global.php | 后台公共入口(登录鉴权、CSRF、页面框架、菜单、字段控件渲染、上传与批量操作) * 每个后台页面第一句都是 require __DIR__ . '/global.php'; | 1010 |
application/admin/index.php | 后台首页(数据概览、各子系统条数、待处理事项、系统信息) | 113 |
application/admin/license.php | 授权信息页。显示本站授权状态、当前域名与本站密钥,支持录入或清除授权码。 | 176 |
application/admin/logout.php | 退出后台登录 | 14 |
application/admin/migrate.php | 后台「数据迁移」页 —— 填旧站数据库(还有可选的旧站目录),把老站全部内容与分类、会员、 * 论坛、评论、导航、公告、友链分批搬进本站,页面自己一跳一跳跑完,几十万条也不会超时。 | 345 |
application/admin/plugin.php | 插件管理。上面是插件卡片列表(本地插件 / 在线插件两个页签,本地卡片能启用、停用、卸载、设置), * 下面是某个插件自己的后台页(插件在 info.php 里声明 admin 文件才会出现)。 * 地址:plugin.php ;看某个插件的页面加 ?see=插件标识 | 251 |
application/admin/setting.php | 站点设置。改的就是 config 表里的键,前台用 guojiz('键名') 读取; * 带 tpl_ 前缀的键是给「模板设置」用的,这里不显示。 | 166 |
application/admin/sort.php | 分类管理。所有子系统共用一张分类表(sort),用 sys 区分,支持两级。 * 地址:sort.php?sys=标识 ;编辑加 &id=分类ID | 211 |
application/admin/stats.php | 数据统计。展示 visit 表的浏览量趋势、每个子系统的内容数与浏览/收藏/评论合计, * 以及全站浏览最多的十条内容。 | 126 |
application/admin/store.php | 应用商店。浏览官网的程序/模板/插件目录,把包拉到 uploads/store/,模板包可以一键解压安装。 * 只有程序类商品要本站授权码换下载地址;模板与插件是买断下载,免费的直接给链接,收费的看官网那边开通没有。 | 215 |
application/admin/sys.php | 子系统管理。一套函数通用所有子系统,这里只是登记一个标识、一张内容表和它的字段, * 新建子系统会自动建表;字段在「字段配置」里加,内容在「内容管理」里发。 * 地址:sys.php ;编辑加 ?id=子系统ID | 355 |
application/admin/table.php | 导航菜单 / 广告位 / 友情链接 / 公告 / 单页这一批简单表的增删改查,一个文件管五张表, * 每张表要填什么由 global.php 里的 admin_tables() 规格决定。 * 地址:table.php?tb=nav|ad|link|notice|page ;编辑加 &id=ID | 283 |
application/admin/theme.php | 模板设置。上面是模板卡片列表(本地模板 / 在线模板两个页签,本地卡片可以启动、删除、进设置), * 下面是当前模板自己的设置:首页各子系统模块的顺序与开关(写进 config 表的 tpl_ 前缀键,前台用 * cmspc('键名') 覆盖模板 set.php 的默认值)和配色等模板参数。 | 494 |
application/admin/tools.php | 数据工具。清模板缓存、按字段配置同步数据表、导出 SQL 备份、修复与优化表、清理访问记录。 | 172 |
application/admin/update.php | 在线更新。向授权端问本站授权对应的程序有没有新版,下载更新包,先预览再备份, * 确认后覆盖到站点根目录;覆盖完自动补新数据表和新设置项,出问题可以回滚。 | 248 |
application/admin/upload.php | 后台上传接口(图片与附件,返回 {code:1,data:{url}}) | 30 |
application/admin/user.php | 会员管理。全站共用一张 user 表,一个账号在论坛、收藏、投稿里通用; * 这里的积分/经验调整都会走 inc/jifen.php 记一笔流水,方便和会员中心的「积分记录」对上账。 * 地址:user.php?ks=&role=&status=&page= ;编辑加 ?id=UID | 406 |
application/admin/user_apply.php | 会员审核。勋章申请、头像框申请、实名认证都进 user_apply 表这一条队列, * 通过就按申请类型发放(发勋章 / 发头像框 / 实名奖励),驳回会同时给会员发站内消息。 * 地址:user_apply.php?kind=&status=&page= | 178 |
application/admin/user_set.php | 会员与积分设置。这些开关和数值存在 user_config 表里(分组 grp), * 前台会员中心、积分商城、扣积分解锁、打赏、实名认证都读这一份(inc/jifen.php 的 ucfg())。 * 地址:user_set.php | 138 |
| 文件 | 作用 | 行数 |
|---|---|---|
index.php | — | 123 |
inc/site.php | — | 175 |
inc/docs.php | — | 153 |
| 文件 | 作用 | 行数 |
|---|---|---|
inc/api.php | 对外接口公共引导(加载内核但不跑前台路由,统一 JSON 输出与来源校验) | 47 |
inc/common.php | 官网(授权端)前台引导与路由 —— 读配置、连库、加载通用函数,按地址分发到商品页、下单页、开发者中心、下载中心与接口 | 505 |
inc/db.php | 数据库封装(极简 PDO 版,全站只用这一个类) | 126 |
inc/dev.php | 开发者中心 —— 会员投稿模板/插件(含 zip 上传)、我的作品与在售状态、接口密钥管理 | 273 |
inc/form.php | 前台表单帮手。会员、论坛、收录申请三处表单共用同一套令牌校验、一次性提示、 * 防刷与上传,写法跟后台 global.php 的 admin_safe_post() 一致,只是会话键分开存, * 前台的令牌不会跟后台互相顶掉。 | 203 |
inc/forum.php | 前台论坛。板块列表、帖子列表、帖子详情、发帖、回复、删除都在这份文件里, * 地址统一是 /forum/xxx:b12=12号板块、p34=34号帖子、new=发帖、reply=回复、act=管理动作。 * 帖子和回复存纯文本,模板里用 nl2br 输出,会员写的 html 不会被当代码执行。 | 332 |
inc/fun.php | 全站通用函数库(一套函数服务所有子系统,只差表名与字段配置) | 815 |
inc/license.php | 授权码签发与校验 —— 订单开通时签发授权码、域名绑定与额度、程序端远程校验、下载令牌 | 408 |
inc/order.php | 订单层 —— 前台下单、人工审核开通、免费商品自动签发、我的订单列表与详情 | 238 |
inc/page.php | 分页结果对象(既能被 {list} 直接循环,又能输出分页条) | 92 |
inc/schema.php | 官网数据层 —— 基础表(商品/授权等级/订单/授权码/下载记录/接口密钥)+ 子系统与字段配置种子 + 按字段配置建内容表 | 781 |
inc/shop.php | 商品与下载层 —— 授权等级与定价、商品取数、下载中心与对外目录接口、前台导航 | 563 |
inc/tpl.php | 模板引擎(laolicms 标签语法:{list}/{if}/{include}/{page}/变量点语法,编译成 php 缓存) | 321 |
inc/user.php | 前台会员中心。登录、注册、退出、我的精选(收藏 / 评论 / 帖子 / 申请)、每日签到、 * 资料与密码修改都在这一份文件里,地址统一是 /user/动作。 * 会员表就是后台那张 user,role>=1 的账号既能进后台也能在论坛发帖,一个账号走全站。 | 421 |
| 文件 | 作用 | 行数 |
|---|---|---|
admin/content.php | 内容管理。所有子系统共用这一页,列表显示哪些列、表单有哪些项,全由「字段配置」决定。 * 地址:content.php?sys=标识&ks=关键词&cid=分类&status=&page= | 207 |
admin/dev.php | 开发者管理 —— 审核开发者投稿的模板 / 插件作品(上架 / 下架 / 驳回), * 查看某位作者名下的接口密钥(只显示前缀与掩码,绝不输出 KEY 明文或 secret)。 * 地址:dev.php?sys=mb|cj&status=&ks=&page= ;查密钥加 &uid=会员ID | 174 |
admin/edit.php | 新增 / 编辑一条内容。表单项目完全由「字段配置」里 in_form=1 的字段生成, * 换任何子系统都是同一套代码,只是字段不同。 * 地址:edit.php?sys=标识&id=内容ID(不带 id 就是新增) | 182 |
admin/fields.php | 字段配置。子系统有哪些列、后台表单怎么渲染、列表/详情/搜索取哪些字段,都在这里改; * 保存后自动建列或改列(sys_build),加新字段不用动代码。 * 地址:fields.php?sys=标识 ;编辑加 &id=字段ID | 271 |
admin/global.php | 后台公共入口(登录鉴权、CSRF、页面框架、菜单、字段控件渲染、上传与批量操作) * 每个后台页面第一句都是 require __DIR__ . '/global.php'; | 793 |
admin/index.php | 后台首页(数据概览、各子系统条数、待处理事项、系统信息) | 126 |
admin/license.php | 授权管理 —— 按授权码/域名/商品/状态搜索授权列表,查看授权详情与校验历史, * 追加/删除绑定域名(license_domain_bind、license_domains),手工延期或提前停用、恢复、吊销,复制授权码。 * 地址:license.php?ks=&sys=&status=&page= ;详情加 &id=ID | 321 |
admin/logout.php | 退出后台登录 | 14 |
admin/order.php | 订单管理 —— 按状态/子系统/关键词/时间筛选订单列表,查看订单详情, * 审核开通(order_pass:程序签授权码,模板与插件只开通下载)、驳回、批量操作、导出 CSV。 * 地址:order.php?status=&sys=&ks=&d1=&d2=&page= ;详情加 &id=ID | 298 |
admin/setting.php | 站点设置。改的就是 config 表里的键,前台用 guojiz('键名') 读取; * 带 tpl_ 前缀的键是给「模板设置」用的,这里不显示。 | 170 |
admin/sort.php | 分类管理。所有子系统共用一张分类表(sort),用 sys 区分,支持两级。 * 地址:sort.php?sys=标识 ;编辑加 &id=分类ID | 211 |
admin/stats.php | 数据统计。展示 visit 表的浏览量趋势、每个子系统的内容数与浏览/收藏/评论合计, * 以及全站浏览最多的十条内容。 | 133 |
admin/sys.php | 子系统管理。一套函数通用所有子系统,这里只是登记一个标识、一张内容表和它的字段, * 新建子系统会自动建表;字段在「字段配置」里加,内容在「内容管理」里发。 * 地址:sys.php ;编辑加 ?id=子系统ID | 241 |
admin/table.php | 导航菜单 / 广告位 / 公告 / 单页 / 论坛 / 签到这一批简单表的增删改查,一个文件管多张表, * 每张表要填什么由 global.php 里的 admin_tables() 规格决定。tb 参数走严格白名单,杜绝拖库。 * 地址:table.php?tb=nav|ad|notice|page|sign|forum_board|forum_post|forum_reply ;编辑加 &id=ID | 291 |
admin/theme.php | 模板设置。官网前台的配色与区块开关都来自 template/laoli/set.php, * 这里保存后写进 config 表的 tpl_ 前缀键覆盖默认值,前台用 cmspc('键名') 读取。 | 130 |
admin/tools.php | 数据工具。清模板缓存、按字段配置同步数据表、导出 SQL 备份、修复与优化表、清理访问记录。 | 160 |
admin/upload.php | 后台上传接口(图片与附件,返回 {code:1,data:{url}}) | 29 |
admin/user.php | 会员管理。全站共用一张 user 表,一个账号在论坛、收藏、投稿里通用。 * 地址:user.php?ks=账号&role=&status=&page= | 211 |
| 文件 | 作用 | 行数 |
|---|---|---|
api/catalog.php | 对外接口 —— 商品目录(程序后台「应用商店」在线拉取模板与插件清单) | 61 |
api/download.php | 对外接口 —— 令牌下载商品包(授权码 + 当天有效令牌,或登录后的会员本人) | 64 |
api/latest.php | 对外接口 —— 版本与更新日志查询(程序后台点「检查更新」时调用) | 44 |
api/verify.php | 对外接口 —— 程序端联网激活与远程校验(提交授权码与域名,返回授权状态、到期时间与下载入口) | 44 |
install/demo.php | 安装演示数据 —— 四套程序的更新包、随程序附带的官方模板与插件、带目录结构的开发文档、公告与管理员账号 * 约束:商品行指向交付包里 uploads/ 下真实存在的 zip;封面用同目录生成的 svg/png,不引外部 CDN / 字体 / 网络请求 | 305 |
install/demo_doc.php | 开发文档的正文数据(模板标签全量参考 / 程序文件详解),由 php tools/_dev/doc_build.php 从源码注释里生成, * 改这两篇请改生成脚本里的正文,手工改会被下次生成覆盖。 * 每条:[一级分类, 二级分类, 标题, 摘要, 正文 HTML, 是否口令保护] | 281 |
install/index.php | 官网(授权端)网页安装向导 —— 环境检测 → 数据库与站点信息 → 建表写种子 → 生成配置/目录/锁文件 → 安装完成 * 步骤:step1 环境检测 step2 表单 step3 执行安装(含写库/建账号/写 config.php) step4 完成页 | 319 |
application/cache/:模板编译产物,源文件改动自动重编译,删了会重建。application/plugin/、plugins/:插件目录,后台「插件管理」在线安装时往这里落文件。uploads/image/、uploads/file/、uploads/store/:后台上传的图片、附件与商店包缓存,前台地址由 upurl() 拼。uploads/tool/:在线工具「本地文件」这一类工具的文件目录。后台编辑一条工具,打开方式选「本地文件」,
可以上传文件,也可以把工具代码整段贴进编辑框——两种写法最后都写成 uploads/tool/文件名,
内页由 tool_local() 执行(.php 走 include,.html/.htm 原样输出)。
只认 .php/.html/.htm 三种扩展名,文件名里带 ../ 会被削成纯文件名,代码永远出不了这个目录;
目录里放的是可直接访问的独立文件,所以工具代码要写成内页里的片段,不必再套 html 骨架。
这个目录必须可写,否则上传与贴代码保存不了。application/config.php、web/config.php:数据库账号密码、站点地址,只在本机。application/install.lock、web/install.lock:装完请把 install/ 目录整个删掉,留着会被反复访问。application/cache/、web/cache/:模板编译产物与数据缓存,不用备份,删了自动重建。data/license.secret 与配置里的 license_secret):只在签发端,绝不进交付包。tools/(含 tools/_dev/)与本地伪静态入口 router.php:打包脚本会排除,别手工塞回包里。inc/fun.php(按小节注释分组,开发文档的函数索引就是照小节收的);
只有跟着路由走的取值函数(title_of()、field_html()…)放在 inc/common.php,两处都会被收进函数索引;只在某个后台页用的函数放那个页里。fun.php 与 common.php 里这些函数和标签,不要在模板里 new 类或直连数据库;
需要新数据就在后台加一个子系统或字段,模板用 {list 标识 …} 取。