thinkphp5部署到LAMP服务器显示Access denied.

问题:thinkphp5部署到LAMP服务器,首页正常访问,其余页面访问显示Accessdenied 解决:1.先把文件夹权限改为777     2. 进入服务器,改文件。将php.ini的值改成1...

tinkphp5使用中碰到的问题 持续更新

1.使用助手函数(如controller(),model(),validate())进行实例化时只需要引入thinkController或thinkModel或thinkValidate即可,无需引入实例化类所在的文件。 在实例化模型时如果用new来实例化时,就需要引入与之对应的类文件,如果控制器类名和该模型的类名相同时,会引发冲突,报错。   2.今天在注册用户时验证碰到一个问题,创建了验证类文件,使用$this->validate(true)->save($data)进行插入数据时,此时数据$data中多了一个密码确认字段,导致无法插入数据库,而使用$this->validate(true)->save([要插入的字段])这个方法进行插入时,又导致无法验证密码确认字段,最终解决是用:先用validate实例化验证类,在执行check($data)方法对发送的数据进行验证,最终插入需要的字段 3.使用halt()方法调试输出数据时要注意,如果有循环时应小心使用,会终止循环的。 4.tp5中删除文件用u...

thinkphp5修改入口文件位置及相应的问题

问题1:thinkphp5修改入口文件解决:参考手册http://www.kancloud.cn/manual/thinkphp5/129746,然后需要把.htaccess跟入口文件放到同一目录下,否则路由配置会出错  问题2:入口文件更改后静态资源加载出错,修改/public/static解决:参考手册http://www.kancloud.cn/manual/thinkphp5/118120...

phpstorm使用

生成注释快捷键/**+enter注释快捷键ctrl+/...
IT猿 IT猿·2020-03-28

php追加数组的问题

PHP数组合并两种方法及区别 如果是关联数组,如下: 代码如下:$a=array( 'where'=>'uid=1', 'order'=>'uid', ); $b=array( 'where'=>'uid=2', 'order'=>'uiddesc', ); 1.array_merge,如果两个数组存在相同的key,后面的一个会覆盖前面的 代码如下:<?php $c=array_merge($a,$b); var_export($c);//结果与原来的$b相同 $d=array_merge($b,$a); var_export($d);//结果与原来的$a相同 2."+"操作符,如果两个数组存在相同的key,前面的一个会覆盖后面的 代码如下:<?php $c=$a+$b; var_export($c);//结果与原来的$a相同 $d=$b+$a;&nbs...

thinkphp5引入百度编辑器

在ThinkPHP的模板(html文件)中引入Ueditor 下载ueditor解压至public/static目录在需要的页面引入js文件<scripttype="text/javascript"src="__STATIC__/ueditor/ueditor.config.js"></script><scripttype="text/javascript"src="__STATIC__/ueditor/ueditor.all.min.js"></script>下面这段代码要放在页面最下方,textarea定义id后<scripttype="text/javascript">UE.getEditor('content',{//content为要编辑的textarea的idinitialFrameWidth:1100,//初始化宽度initialFrameHeight:500,//初始化高度});</script> ...

thinkphp5更新时验证数据

在编辑页面form表单中添加一个隐藏域:<inputtype="hidden"name="表中id字段名"value="get方式传过来的id值">(千万注意name要和主键同名),然后定义好验证器类中的相关规则,此时不需再要定义验证场景了,添加编辑都用同一规则:classAdminextendsValidate{protected$rule=[['account','require|length:3,15|checkChanese:|checkSpecial:|unique:admin,admin_account','账号必须填写|账号长度在3~15个字符之间|账号中不能含有中文|账号中不能含有特殊字符|该账号已存在,请重新添加']]}模型中验证://执行验证$validate=validate('Admin');if($validate->check($data)){//验证通过......}else{//验证失败......}  ...

thinkphp5缓存使用

之前不明白缓存有什么用处,后来看了一些案例大概有点了解,记录一下。1、thinkphp5没有静态缓存2、对于一些更新不是太频繁的数据,我们可以使用缓存机制对查询到的数据进行缓存,减缓数据库压力3、下面讲的例子缓存类型都是file,{memcache、wincache、sqlite、redis和xcache}这几种目前还不了解4、应用配置文件中默认是有缓存配置的if(!Cache::get('dat')){//判断缓存是否存在$data=db('user')->select();//查询数据数据Cache::set('dat',$data,30);//设置缓存}Cache::get('dat');//读取缓存//设置查询缓存,查询到的数据也会生成缓存文件在60秒内有效$data=db('user')->cache(true,60,'file')->select(); 具体参考thinkphp5参考手册:https://www.kancloud.cn/manual/thinkphp5/118131...

thinphp5会员注册邮箱验证

1、首先完成邮箱发送http://www.cnblogs.com/jcydd/p/7299750.html2、在完成会员新增后执行后置函数,在模型类当中//注册后置函数protectedstaticfunctioninit(){self::event('after_insert',function($data){$url="http://127.0.0.1/shop/public/index.php/index/user/check?id=".$data['mb_id']."&&token=".$data['mail_str'];$url2="<ahref='".$url."'>点击激活</a>";sendMail($data['mb_email'],'亲爱的'.$data['mb_username'],$url2);});}3、在控制器当中定义验证函数publicfunctioncheck(){$mb_id=input('param.id');$mail_str=input('param.token');$user=model('user');...

thinkphp5使用phpmailer发送邮件

1、首先让邮箱开启smtp服务,本案例使用163的SMTP服务器:smtp.163.com发送邮件 2、下载phpmailer,在tp项目里的extends文件夹下新建一个文件夹phpmailer,把class.phpmailer.php和class.smtp.php放到里面,修改文件名为phpmailer.php和SMTP.php\注意这里是大写的SMTP(因为在phpmailer.php中实例化SMTP类是大写的,tp5中实例化类名要与文件名要一致),不然会报错的,然后在两个文件内头部加入命名空间namespacephpmailer;3、在phpmailer.php中的2315行使用到了php的Exception异常类,在thinkphp框架中直接继承,thinkphp找不到Exception所以要在Exception前加上反斜杠; 4、在公共文件common.php中加入下面代码/**发送邮件*@param$tostring要发送的邮箱地址*@param$titlestring邮件标题*@param$contentstring邮件内容*@returnbool*...

thinkphp5加密解密

thinkphp5目前没有提供加密解密类,但是tp3.2中提供了好几种加密解密方法,我们可以吧3.2的这些类拿来使用。1、将tp3.2中ThinkPHPLibraryThink的Crypt文件夹放到tp5的thinkphplibraryhink目录下,并将里面的类文件名称中的.class去掉,tp5的类不需要加这些。2、在使用时要用use引入一下要使用的类,如usethinkCryptDriverCrypt;3、然后就可以愉快的使用里面的方法了...
IT猿 IT猿·2020-03-28

PHP之:序列化和反序列化-serialize()和unserialize()

参考PHP在线手册(php.net):http://php.net/manual/zh/function.serialize.php1、序列化serialize()将变量序列化— Generatesastorablerepresentationofavalue—产生一个可存储的值的表示 说明serialize() 返回字符串,此字符串包含了表示 de>valuede> 的字节流,可以存储于任何地方。这有利于存储或传递PHP的值,同时不丢失其类型和结构。想要将已序列化的字符串变回PHP的值,可使用 unserialize()。serialize() 可处理除了 resource 之外的任何类型。甚至可以 serialize() 那些包含了指向其自身引用的数组。你正 serialize() 的数组/对象中的引用也将被存储。当序列化对象时,PHP将试图在序列动作之前调用该对象的成员函数 __sleep()。这样就允许对...

thinkphp5使用QueryList实现采集功能

QueryList是基于phpQuery的1.下载`QueryList.php`和`phpQuery.php`这两个文件。2.在`extend`下新建`QL`目录。3.将下载好的`QueryList.php`和`phpQuery.php`这两个文件复制到`extend/QL`目录。4.在QueryList.php头部加入5、在需要使用的控制器中加入useQLQueryList;下面给出一个示例代码://需要采集的目标页面$page='http://cms.querylist.cc/news/566.html';//采集规则$reg=array(//采集文章标题'title'=>array('h1','text'),//采集文章发布日期,这里用到了QueryList的过滤功能,过滤掉span标签和a标签'date'=>array('.pt_info','text','-span-a',function($content){//用回调函数进一步过滤出日期$arr=explode('',$content);return$arr[0];}),//采集文章正文内容,利用过滤功能去掉文...

php对数组操作的函数

array_intersect两个或多个数组取交集 implode和explode也只对一维数组有效   ...

thinkphp5使用前置后置操作

下面举个例子,前置删除的例子 模型事件只可以在调用模型的方法才能生效,使用查询构造器通过Db类操作是无效的 控制器中实例化类 $cate=model('cate');$cate->destroy($cate_id)这里为什么使用destroy()---注意destroy只能根据主键进行删除,不用delete()方法,因为用delete()方法进行删除时不能加where()条件,加了where条件就不能触发beforeDelete,而不加where条件有不能删除。发现这是个bug。 模型中要注册前置或者后置操作,如下:protectedstaticfunctioninit(){self::beforeDelete(function($cate){$cate->where('cate_pid',$cate['cate_id'])->delete();});}这个例子是删除分类时先把下级分类删除具体参考手册:https://www.kancloud.cn/manual/thinkphp5/135195...
首页上一页...611612613614615...下一页尾页