从thinkphp官网下载核心板thinkphp5
application 里面主要是项目文件
extend 里面是扩展的类库
public 这里是用户访问的入口
runtime 里面是缓存文件
thinkphp 里面是框架的核心
vendor 里面也是第三方的类库
为了模拟真实的网站,可以给127.0.0.1这个地址一个自己指定的域名,比如www.tp5.com
修改方法如下:
找到电脑上的这个hosts文件,里面都是域名和IP的对应关系。在最下方添加这样的对应关系就可以了。
保存,然后用ping一下,就知道是否修改成功了。若提示没有权限之类的修改失败。那么可以把这个文件拖到桌面再进行修改,然后再拖回去就可以了。
hosts文件修改完之后,还需要配置一下apache
但是,我电脑中的这个文件有点不大一样,我是通过这种方法,才找到类似的路径的(或许是因为我的是xampp,不是apache?):
将上面这个路径,改到thinkphp5中的public路径。同时将apache重启,然后在浏览器中输入www.tp5.com,就可以发现跳转到指定的public页面了。但是,由于我之前做了项目,所以就跳转到了我项目的主页。。。
上面都成功了
下面,既然是做项目开发,那么必须要开启调试模式
进入项目配置文件,开启debug调试
这里的调试模式一定要打开,方便找错误!
至于数据库配置文件么,无非就是连接数据库的账号密码之类的。
下面再从原理角度看一下为什么访问public目录就可以访问主页了。先看public目录里面的index.php是什么
再看start.php这个文件是干嘛的
所谓的模块,就是对应的文件夹。。。
现在我终于理解为什么在渗透测试过程当中,可以用大小写来区别windows系统和linux系统了。
这里虽然说得是模块、控制器、控制器方法的关系。但是,用户访问网站的时候,访问的是模块,只要修改访问url中模块的大小写,看能否访问成功,就知道目标是windows系统还是linux系统了。我的是windows系统。
关于命名空间,不是太懂:
总结一下就是(仅限thinkphp框架中的用法,若没有thinkphp框架,那么这样肯定会报错):
域名/模块名/控制器名/函数/参数名/参数值/参数名/参数值……
这样的一个访问形式
之所以上面的路径错误还可以执行,那是因为有个apache的配置文件,但是,在application中也有个这样同样名字的配置文件。只不过那个application中的htacess文件中写的是deny all ,拒绝全部。而这个却不是的。
下面在看一下控制器与控制器对应的文件夹的关系
可以看到,每个控制器对应的都是一个文件夹!是文件夹!不是文件!对应的都是view文件夹下的一个与控制器名字相像的文件夹。唯一的不同是,控制器开头字母大写,对应的view下的文件夹名字没有大写。
再进一步观看,会发现既然一个控制器,对应view下的一个文件夹,那么,一个控制器中的方法,对应的就是文件夹下的某个文件。名字都是一样的。很有规律,很有条理。当然这是默认情况下框架是这么对应的。
如果不想这么对应,也可以修改,可以看到,这里的Index.php控制器中的index类对应的是view/index/index.html模板,但是经过 return $this->fetch('index2') 的渲染模板的修改,就渲染了index2.html这个模板