发现好多网站的链接都是这种URL是以双斜杠“//”开头的,这种写法有特殊的用途,它会判断当前的页面协议是http 还是 https 来决定请求 url 的协议。防止IE下出现“This Page Contains Both Secure and Non-Secure Items”的报错。
TCP/IP体系有人把它分为四层也有人把它分为五层,不同书有着不同的分法。五层和四层的区别就在于五层的数据链路层和物理层对应着四层的网络接口层。二者都对,不必要纠结,了解一下即可。如果按照协议划分的话,物理层是没有必要单独划分出来的,毕竟物理层是没有协议的。本篇文章采用的是四层结构。
现在很多的网站都已上了安全证书SSL实现了HTTPS化,这样不仅使网站的安全得以保证,而且还防止了被一些非法的运营商劫持DNS的情况。虽然说网站上了HTTPS以后,网站的网安全有了保证,但是一些网站的插件是不支持HTTPS的,比如百度的分享代码。
首页展示出所有文章,因此需要单独处理,首先在后台将首页的栏目删除,并将首页栏目下的文章移到其他栏目或者删除;
在文章详情页面需要展示相关文章列表,该列表使用过当前文章的关键词来获取的;当前文章的关键词可能不止一个,因此需要查询所有文章是否具有该关键词,如果有则将该文章相关信息储存到数组中;这样遍历出来文章可能重复,因为需要对该数组中的文章进行去重;去重的方法有很多,这里使用对数组降维的处理方法;
本文介绍的文章展示页面功能包括:文章内容(标题,时间,图片,内容),文章点击数,上一篇下一篇功能。文章的详情信息有Article控制器操作
每篇文章下面展示有关键词,点击关键词可以查询该栏目下的所有具有该关键词的文章;点击关键词,需要将该关键词当做参数传值tahs控制器进行联表查询;
前台导航完成后就需要将每个栏目下对应的文章展示到栏目下;每个栏目展示对应的lists控制器的index操作方法
之前的前台页面的导航栏是通过a标签实现跳转的,但是在实际项目中栏目的信息可能是动态变化的,因此展示的导航栏也会根据数据库存储的变化而变化;通过后台操作对导航栏的管理,实现前台页面的展示。每次打开前台页面都需要优先展示导航栏,需要创建初始化方法在其他页面的控制器调用之前调用导航栏页面
登录成功后需要在头部展示登录的管理员的名称信息,并且点击修改能跳转到修改页面进行操作登录成功后,需要将用户的信息写入服务器的session中,从session中获取用户名和idthinkPHP5的session使用方法https://www.kancloud.cn/manual/thinkphp5/126166在登录的model中成功后写入session
管理员登录就是根据用户输入的信息对数据库进行比对返回处理结果数据库连接处理放在模型model中新建登录对应的控制器文件controller/Login.php,模型文件model/Login.php,视图view/Login/login.html
包含获取管理员列表、修改管理员和删除等方法。另外,保留了一个管理员不能删除和对管理员的密码进行了md5加密,由于md5加密空后不为空,所以先进行空验证再加密
thinkPHP5提供了模型增加数据的功能,通过实例化模型来实现数据库操作,下面以增加链接为例分享改功能的使用,在admin下新建文件model/Link.php模型文件并初始化定义
类似于添加栏目和文章完善添加友情链接的功能分别新建友情链接link对应的视图模板、控制器和验证器文件
页面间传值;数据库查询;模板赋值;下拉框赋值,略缩图展示等,文章列表页面修改跳转点击修改跳转到edit页面,并将文章的id值传过去
文章列表展示的主要功能点有:联动栏目数据库查询文章对应的栏目展示出来;展示略缩图;展示格式化时间;列表分页;
本文分享在创建文章时读取栏目列表并选择的功能首先在数据库中添加cateid字段,类型为mediumint创建文章的页面展示cate代码
thinkPHP5提供了场景验证功能,参考文档位于https://www.kancloud.cn/manual/thinkphp5/129322比如在创建栏目中,我们不允许关键词为空,而在编辑栏目时允许关键词为空,在同一个验证器中,可以针对这些不同的场景进行不同的验证定义首先打开之前写好的cate验证器application/admin/validata/Cate.php,添加指定处代码:
新增文章验证器和控制器,根据[thinkPHP5入门实战_09]后台添加栏目及验证介绍新增栏目的方式构建新增文章的操作方法
创建文章信息存储数据表访问http://localhost/phpMyAdmin/index.php默认账号和密码为root,创建数据库tp5,新建数据表tp6_article,字段数为8
如果开发过程中出现了页面不可用,请稍后再试,可以将application文件夹下的config.php文件中的调试模式打开,可以看到代码报错提示信息。
上一篇分享了如何添加栏目和验证。添加栏目后需要将其从数据库中取出展示在列表上,比如数据库的tp5_cate有以下数据,在Cate控制器的lists方法中读取数据数据并赋值给模板
上一篇介绍了前台页面的模板分离和URL生成,构建博客系统还需要后台管理系统,通过类似的方法构建后台的模板
在前端网页项目中不同的页面存在公共的模块,例如头部、底部和侧边栏等,使用tp5的模板分离可以将这些公共模块抽出,在需要的页面进行引入减少前端代码量,提高运行效率以前台页面为例,在application/index/view下面新建一个Public文件夹,用于存放页面公共模板,分别新建header.html,resource.html,footer.html,sidebar.html将网页公共部分提取出来
常说的页面静态化分为两种,一种是伪静态,即url 重写,一种是真静态化。前两篇讲了两种静态化方法,基本都是使用TP自带的静态化机制。但TP写的网站页面路由都比较繁琐复杂,不利于引擎优化。
在网站http跳转https的时候我们的免费证书只能使主域名跳转,而二级域名就成了危险标识,所利用规则只让顶级域名跳转https,二级域名正常访问http
追梦猪在做vue项目的时候会遇见各种各样的奇葩报错,以此收集来带入坑不知所措的坑友脱坑,当你在改完vue代码进行热加载的时候,我们的控制台出现了报红(也就是错误),打开控制台f12看到以下如图所示错误:
常说的页面静态化分为两种,一种是伪静态,即url 重写,一种是真静态化。前两篇讲了两种静态化方法,基本都是使用TP自带的静态化机制。但TP写的网站页面路由都比较繁琐复杂,不利于引擎优化。
报错 npm Error : EBUSY resource busy or locked出现这样的错误是因为我们的文件被占用就是其他地方可能在使用文件夹或文件导致无法删除造成的,
在hbuilderX启动拷贝下来的项目的时候uniapp云端打包提示:“DCloud APPID非当前账号所有,请联系应用所有者设置此账号为协作者,或重新生成APPID后打包”
刚开始我是通过在index页面直接引入wow.js效果,第一天可以,但是第二天就不行了,看了一下代码的前端执行结果发现动画的名称是none,那问题出现在了没有找到动画名称,为什么会出现这样的我想应该是加载顺序导致的,wow.js在页面加载完以后便已经执行了,但是我的数据还没有获取到所有才出现了数据被display:none;