thinkphp

来源:互联网 发布:excel表格删除重复数据 编辑:程序博客网 时间:2024/06/07 17:46

1、设置多入口

       index.php 只有一个入口,就是应用程序入口。如果有多个站,或者后台,那就需要另 一个入口。

       创建一个 admin.php,应用目录改成对应的即可。

       //修改应用目录

      define('APP_PATH','./Admin/');

      在自动生成的目录中,为了防止访问到应用程序的目录结构,会创建个index.html文 件。当然,你也可以自行设置。

      //设定目录生成的文件

      define('DIR_SECURE_FILENAME', 'default.html');

     //设置目录页面内容

      define('DIR_SECURE_CONTENT', '目录禁止');

      一般来说,第一次生成应用程序,应该加上静态主页防止目录结构暴露。但如果你的环 境非常安全,可以关闭生成静态主页。

     //禁止目录主页生成

     define('BUILD_DIR_SECURE', false);

2、模块访问设置

       有一些模块我们希望是被用户禁止访问的,比如 Common 和 Runtime 模块。当然,框 架已经在默认就禁止访问了。

        当强行访问 Common 模块的时候,会提示:“无法加载模块:Common”的错误信息。

       在Common\Conf\config.php文件中进行配置

        //禁止访问模块

        'MODULE_DENY_LIST' => array('Common','Runtime'),
        PS:当你去掉数组里的'Common',那么会提示:“无法加载控制器:Index”的错误信 息。说明这个模块已经可以访问了。

        //禁止访问模块,添加一个Admin模块

       'MODULE_DENY_LIST' => array('Common','Runtime','Admin'),

       有禁止访问模块的设置,就有允许访问模块的设置。当设置了此选项,就务必把所有允 许访问的模块都添加上,否则会变成拒绝访问。

       //允许访问的模块,设置了,就必须写全,漏写的将无法访问

        'MODULE_ALLOW_LIST' => array('Home','Admin'),
        如果有多个访问模块,那么在默认 URL 访问的时候,应该有一个首选访问。默认是 Home, 想设置 Admin 为默认,可以这么设置:

        //设置默认起始模块

        'DEFAULT_MODULE' => 'Admin',
         应用项目如果只允许单个模块的话,可以设置拒绝多个模块,这样创建更多的模块将失效。
        //单模块设置

        'MULTI_MODULE' => false,

        有时,你会觉得 index.php/Admin 这样很麻烦。你可能想直接 admin.php 就代表后 台就方便很多,那么可以使用多入口设置。

        这里的多入口和上一节多个应用项目不同,而是通过 admin.php 访问 Weibo 目录下的 Admin 模块。

        将 index.php 复制出来改成 admin.php,然后添加如下代码:

       //默认指向Admin模块

        $_GET['m'] = 'Admin';

      //默认指向Index控制器

        $_GET['c'] = 'Index';

3、URL模式

       //PATHINFO模式

       http://localhost/demo39/index.php/Home/User/test/user/Lee/pass/123

       在这条 URL 上,Home 表示模块,User 表示控制器,test 表示方法,user/Lee 表示 第一个键值对,pass/123 表示第二个键值对。

       PATHINFO 模式下默认的分隔符是/,我们可以设置为你想要的,比如:_

       //设置键值对分隔符 'URL_PATHINFO_DEPR'=>'_',
       设置了分隔符的 URL: http://localhost/demo39/index.php/Home_User_test_user_Lee_pass_123

       //普通模式

        http://localhost/demo39/index.php?m=Home&c=User&a=test&user=Lee&pass =123

        在这条 URL 上,我们发现采用的就是传统的 GET 模式,m 表示模块,c 表示控制器,a 表示方法,后面的表示键值对。 普通模式的 m、c、a 可以自行设置为你习惯的键名称:
         //修改键名称

        'VAR_MODULE' => 'mm',

        'VAR_CONTROLLER' => 'cc',

        'VAR_ACTION' => 'aa',

         http://localhost/demo39/index.php?mm=Home&cc=User&aa=test&user=Lee&p ass=123

         //REWRITE模式(重写模式)

         httpd.conf 配置文件中加载了 mod_rewrite.so 模块

        AllowOverride None 将 None 改为 All

         把下面的内容保存为.htaccess 文件放到应用入口文件的同级目录下 这样,ThinkPHP 自带的.htaccess 文件就起作用了,可以过滤掉 index.php 这个字 符串。 

<IfModule mod_rewrite.c>  Options +FollowSymlinks  RewriteEngine On  RewriteCond %{REQUEST_FILENAME} !-d  RewriteCond %{REQUEST_FILENAME} !-f  RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]</IfModule>
        //去除了index.php

       http://localhost/demo39/Home/User/test/user/Lee/pass/123
        PS:兼容模式一般用于不支持 PATHINFO 的特殊环境,基本上用不到。

4、调试

      //页面Trace,调试辅助工具

      'SHOW_PAGE_TRACE' =>true,

5、Model层定义