thinkphp的url路径的表示格式为

http://ip/tp/public/index.php/模块/控制器/操作

这里url最后的操作就是类里面的函数。

0x01:url访问格式

官方文档中有个驼峰的命名方法比如你实际目录名写的“HelloWorld”,但在解析的时候会成“helloworld”即默认转化为小写。

针对这个问题,可以把url写成“../hello_world/”等价于HelloWorld即目录命名为驼峰的2个大写,也就是可以用“_”来达到访问大写字母的目的。

这个例子的模块名字叫做demo

这里插播一个方法,在application/config.php文件中

// 开启调试模式
'app_debug' => true;

设置好后,即可出现详细的报错回显。

首先创建模块,弹出命令窗口找到根目录tp/,并输入以下命令(我在根目录用shift+右键打开的cmd竟然不成功,不知道是不是cmd权限的问题)

php think build --module demo

并在controller文件下创建个HelloWorld.php文件,手写下代码,熟练下PHP的手感23333(自己写的时候,他老报错,最后发现<?(空格)php的问题,写代码敲空格排版的习惯竟然坑了我一次qwq)

<?php
namespace app\demo\controller; class HelloWorld
{
public function HelloWorld()
{
return "Hello World";
}
public function Hello()
{
return "Hello thinkphp";
}
}

这里2个方法,我们调用一个吧

这里发现了我下面HackBar的url明明写的HelloWorld,但是在报错的且明摆的写出了路径是..\Helloworld,可以看出thinkphp将控制器的名字首字母大写(我试了将名字小写,他也会转化成大写,所以命名的时候要注意)。

这里我url用的"hello_world"回显正确,说明_是来区分每个单词的,并且每个单词的首字母是被转化成大写的。

还有一种办法,在application\config.php中

// 关闭URL自动转换(支持驼峰访问控制器)
'url_convert' => false,

这样就能不加“_”,也能愉快的访问我们的控制器组件了

还有种方法可以访问控制器,即使用参数的模式

0x02:参数传入

先来修改下之前写的HelloWorld.php的源码,将我们的hello方法带个参

<?php
namespace app\demo\controller; class HelloWorld
{
public function helloWorld()
{
return "Hello World";
}
public function hello($name = 'yayayayaya')
{
return "Hello thinkphp ". $name;
}
}

然后在url中输入

http://192.168.60.132/tp/public/index.php?s=demo/hello_world/Hello

默认参数回显

然后在url中输入带参的url

http://192.168.60.132/tp/public/index.php?s=demo/hello_world/Hello/name/miaomiaomiao

回显

用=来表示参数的值的输入

http://192.168.60.132/tp/public/index.php/demo/hello_world/hello?name=miao

回显

这里我发现了个问题,在第三个示例中我把/index.php?s=demo/.. 改成了/index.php/demo/..

原因是,我用 ?name=miao回显的内容竟然是默认参数的yayayayaya,而我删除默认参数的值,thinkphp就给我报错,报错信息为参数不存在。希望有大佬看到的话,能给点建议呀。

0x03:缩短url

此时此刻我们的url已经十分长了,有些不方便。

首先缩短\tp\public这2个目录,即用Apache修改默认路径

这时候修改Apache里conf目录下的vhost,本人是入门小白,不太清楚下面的url是什么作用,但是上面那个是我们要修改的。

接下来是隐藏入口文件,这里我的入口文件是public下的index.php 之后的调用模块&控制器&参数

还有个就是.htaccess这个文件,该文件在thinkphp的application目录下就有,本人是phpstudy的构架

这代码做啥的,我不懂................但是结果是能隐藏的

效果为:

http://192.168.60.132/demo/hello_world/hello?name=miao

并且能够正确访问~(但有个悲伤的事情是,phpmyadmin的目录和tp同级,这下一设置就访问不了phpmyadmin了,大概以后会解决)

这时候的/demo/hello_world/是否也能隐藏呢?答案是肯定的。

这里就要用到路由application\route.php这个配置文件了

<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +---------------------------------------------------------------------- return [
'__pattern__' => [
'name' => '\w+',
],
'[hello]' => [
':id' => ['index/hello', ['method' => 'get'], ['id' => '\d+']],
':name' => ['index/hello', ['method' => 'post']],
],
'hello/[:name]$' => 'demo/hello_world/hello', ];

倒数第二行代码即使我们加上去的内容,前面的是thinkphp安装后原文件自带的,我们不管它。

这里代码/[:name]$采用正则表达式,$限制了只能接name这一个参数,多了的参数即不合法url

现在的效果为:

http://192.168.60.132/hello?name=miao

再者我们可以对我们的url后的helloworld控制器设置限制(可以起到一定的安全作用)

'helloWorld/[:var]' => ['demo/hello_world/helloWorld',['method' => 'get', 'ext' => 'html' ]],

这里定义的是请求必须是get,后缀是html(其实这个后缀不是真正的html),因为这里网页请求都是get,我后面改成post后便不可访问了。

初识thinkphp(2)的更多相关文章

  1. 初识thinkphp(3)

    这篇内容主要涉及请求相应内容. 该系列主要是个人笔记,且内容是连贯的,其中涉及到的自己写的模块或者方法在前面文章中有介绍咋来的,如果您看得云里雾里,给您带来不便,真的不好意思. 0x01:请求对象 官 ...

  2. 初识thinkphp(5)

    这次主要内容是模型的基本操作 0x01:什么是模型 通过手册的阅览,笼统的说就是,把打开数据库等操作在另一个php文件中进行 以及对变量的规则具体细节,查询,取值等操作进行定义,方便在控制器中直接使用 ...

  3. 初识thinkphp(4)

    这次内容是数据库的使用方法 因为在第一章讲过就是拿index这个文件写的数据库的访问,这次实验我使用文件是系统默认的首页 配置的内容也在那里有提过就不重发戳图了. 数据库按照手册上的建议建了3行的内容 ...

  4. 初识thinkphp(1)

    作为一名准备成为CTF里WEB狗的萌新,在做了3个月的CTF的web题后,发现自己php代码审计非常不过关,并且web的架构模式条理也十分的不清晰,于是抱着提高代码审计能力的态度在近期会去写一个简单的 ...

  5. ThinkPHP学习笔记(一)----初识ThinkPHP

    在做微信开发的时候原本使用来yii框架,后续觉得yii虽然功能强大使用方便,但是整个框架太大了,不适合一些轻量级的开发:这个时候发现thinkphp这个框架,框架本身很小,只有几M,但麻雀虽小,但五脏 ...

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

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

  7. 使用ThinkPHP框架高速发展网站(多图)

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

  8. ThinkPHP Widget模块开发流程

    初识ThinkPHP的Widget,现把模块开发的流程发布如下,也方便以后自己查阅: 一.新建数据库表self_modules,sql代码如下 CREATE TABLE `self_modules` ...

  9. [转]使用ThinkPHP框架快速开发网站(多图)

    本文转自:http://blog.csdn.net/ruby97/article/details/7574851 这一周一直忙于做实验室的网站,基本功能算是完成了.比较有收获的是大概了解了ThinkP ...

随机推荐

  1. 【leetcode】 Validate Binary Search Tree

    Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST is defined as ...

  2. Hadoop生态圈-Flume的组件之拦截器与选择器

      Hadoop生态圈-Flume的组件之拦截器与选择器 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客只是配置的是Flume主流的Interceptors,想要了解更详细 ...

  3. webpack快速入门——CSS进阶:自动处理CSS3前缀

    为了浏览器的兼容性,有时候我们必须加入-webkit,-ms,-o,-moz这些前缀.目的就是让我们写的页面在每个浏览器中都可以顺利运行. 1.安装 cnpm i postcss-loader aut ...

  4. 拼接html a标签字符串,onClick传递两个字符串类型参数写法

    在参数传递过程中字符串类型的参数要有引号,我一开始拼接的完成后,没有想到要加引号,后来想到了这一问题,可是怎么拼都不对,于是就搜了很多拼接的例子,发现并没有几个能借鉴的,最后终于在一个人的博客中看到, ...

  5. 数学:二次剩余与n次剩余

    二次剩余求的是这个东西 如果给定x,再给定若干个大的质数p,如果结果a相同,那么x是完全平方数? 给出别人的二次剩余的代码: /*poj 1808 题意: 判断平方剩余,即判断(x^2)%p=a是否有 ...

  6. Oracle 查看锁表进程_杀掉锁表进程 [转]

    查看锁表进程SQL语句1: select sess.sid, sess.serial#, lo.oracle_username, lo.os_user_name, ao.object_name, lo ...

  7. 第13月第16天 ios keywindow

    1. 在弹出层弹出后keywindow已改变 http://www.jianshu.com/p/4695d7efa20b

  8. mysqldump只导出表结构或只导出数据的实现方法【转】

    mysql mysqldump 只导出表结构 不导出数据 mysqldump --opt -d 数据库名 -u root -p > xxx.sql 备份数据库 #mysqldump 数据库名 & ...

  9. oracle任务job

    1)创建测试表 1 create table test1(a date); 2)创建存储过程 1 2 3 4 5 create or replace procedure myproc as begin ...

  10. 0行代码实现任意形状图片展示--android-anyshape

    前言 在Android开发中, 我们经常会遇到一些场景, 需要以一些特殊的形状显示图片, 比如圆角矩形.圆形等等.关于如何绘制这类形状, 网上已经有很多的方案,比如自定义控件重写onDraw方法, 通 ...