thinkphp5判断移动或pc端访问并调用不同模块

把下面的代码放在appcommon.php公共方法那里。functionisMobile(){if(isset($_SERVER['HTTP_X_WAP_PROFILE'])){returntrue;}if(isset($_SERVER['HTTP_VIA'])){returnstristr($_SERVER['HTTP_VIA'],"wap")?true:false;}if(isset($_SERVER['HTTP_USER_AGENT'])){$clientkeywords=array('nokia','sony','ericsson','mot','samsung','htc','sgh','lg','sharp','sie-','philips','panasonic','alcatel','lenovo','iphone','ipod','blackberry','meizu','android','netfront','symbian','ucweb','windowsce','palm','operamini','operamobi','openwave','nexuso...

thinkphp5实现文章上一篇,下一篇

写在控制器//列表是按照根据id降序排列的,所以上一篇$prv=Db::table('qy_article')->where('at_id','>',$at_id)->where('cate_id',$cate_id)->order('at_idasc')->limit('1')->find();$this->assign('prv',$prv);//列表是按照根据id降序排列的,所以下一篇$next=Db::table('qy_article')->where('at_id','<',$at_id)->order('at_iddesc')->where('cate_id',$cate_id)->limit('1')->find();$this->assign('next',$next);写在模板{if($prv)!=null}<aclass="fy-left"href="{:url('article/index'['at_id'=>$prv['at_id'],'cate_id'=>$...

php微信公众号开发简单记录

开发前准备:1、服务器2、微信公众号测试号(有真实的账号更好)测试号申请地址:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login开发前首先要配置微信公众号后台URL和Token,我这里是验证通过后显示的验证代码:新建了一个wx.php,放入以下代码,点击后台配置, //defineyourtokendefine("TOKEN","aabbc_lzpt");$wechatObj=newwechatCallbackapiTest();$wechatObj->valid();classwechatCallbackapiTest{publicfunctionvalid(){$echoStr=$_GET["echostr"];//validsignature,optionif($this->checkSignature()){echo$echoStr;exit;}}publicfunctionresponseMsg(){//getpostdata,Maybeduetothedifferentenvir...

thinkphp5自定义分页样式

1.在extend目录下创建page目录,在page目录中创建Page.php文件,将以下代码放入文件中<?phpnamespacepage;usethinkPaginator;classPageextendsPaginator{//首页protectedfunctionhome(){if($this->currentPage()>1){return"<ahref='".$this->url(1)."'title='首页'>首页</a>";}else{return"<p>首页</p>";}}//上一页protectedfunctionprev(){if($this->currentPage()>1){return"<ahref='".$this->url($this->currentPage-1)."'title='上一页'>上一页</a>";}else{return"<p>上一页</p>";}}//下一页protectedfunctionne...

php数组处理函数

array_reverse()数组反向排序,$arr=array_reverse($arr)...
代码星球 代码星球·2020-03-28

thinkphp5.1使用支付宝接口(沙箱环境)

接口文件以及沙箱的测试账号可以去支付宝开发中心获取,下面给出一个简单地例子我新建了一个控制器Pay用来专门做支付<?phpnamespaceappindexcontroller;usethinkDb;require_oncedirname(dirname(dirname(dirname(__FILE__)))).'/extend/alipay/pagepay/service/AlipayTradeService.php';require_oncedirname(dirname(dirname(dirname(__FILE__)))).'/extend/alipay/pagepay/buildermodel/AlipayTradePagePayContentBuilder.php';classPayextendsController{public$config=array(//应用ID,您的APPID。'app_id'=>"**********",//商户私钥'merchant_private_key'=>"¥¥¥¥¥¥¥¥¥",//异步通知地址'notify_url'...

thinkphp5.1常量定义使用

thinkphp5.1取消了系统常量可以把常量配置在app.php文件中//配置网站地址'WEB_URL'=>'http://127.0.0.1/tp5',可以使用config()函数直接取出,config('WEB_URL')在模板文件中使用{$Think.config.WEB_URL}...

php路径问题

./是在当前目录开始寻找文件/是在下一级目录开始寻找文件 ../这个是在上一级目录开始寻找文件$_SERVER['DOCUMENT_ROOT']获取站点根目录__FILE__获取当前文件的完整路径及文件名__DIR__获取当前文件所在目录dirname()函数返回路径中的目录部分。即返回去掉目录名后的文件名。dirname(path):参数path是一个包含有指向一个文件的全路径的字符串。...
代码星球 代码星球·2020-03-28

php类内方法使用类外变量和类外函数

如果要调用另一个类的属性和方法,直接实例化后调用就可以但是要使用的变量和函数是独立的,不在本类或其他类里面,这时调用就要用下面的方法(本例是在同一个php文件里,如果不再同一个类文件可以require或者include进来)函数可以直接调用,变量要声明为全局变量,通过$GLOBALS以数组的方式可以访问到<?phpfunctionaaa(){echo111;}global$a;$a=222;classIndexextendsController{publicfunctiontestbl(){aaa();    echo"<br/>";echo$GLOBALS['a'];}}输出结果: ...

PHP函数之dirname()

1.定义和用法dirname()函数返回路径中的目录部分。即返回去掉目录名后的文件名。2.参数dirname(path):参数path是一个包含有指向一个文件的全路径的字符串。3.举例<?phpechodirname("c:/testweb/home.php");echodirname("/testweb/home.php");?>输出结果为:(1)c:/testweb (2)/testweb          ...
代码星球 代码星球·2020-03-28

php魔术常量、超全局变量、魔术方法

一、魔术常量(魔术变量)概念:所谓的魔术常量就是PHP预定义的一些常量,这些常量会随着所在的位置而变化。1、__LINE__ 获取文件中的当前行号。2、__FILE__ 获取文件的完整路径和文件名。3、__DIR__ 获取文件所在目录。4、__FUNCTION__ 获取函数名称(PHP4.3.0新加)。5、__CLASS__   获取类的名称(PHP4.3.0新加)。6、__METHOD__ 获取类的方法名(PHP5.0.0新加)。7、__NAMESPACE__当前命名空间的名称(区分大小写)。8、__TRAIT__ Trait的名字(PHP5.4.0新加)。自PHP5.4起此常量返回trait被定义时的名字(区分大小写)。Trait名包括其被声明的作用区域(例如FooBar)。 情况一:    __FUNCTION__与__METHOD__同处于“类外”的函数体中,他们的返回值是一样一样滴.情况二:  ...

thinkphp5使用第三方没有使用命名空间的类库

特别注意的是,如果你需要调用PHP内置的类库,或者第三方没有使用命名空间的类库,记得在实例化类库的时候加上  //错误的用法$class=newstdClass();$xml=newSimpleXmlElement($xmlstr);//正确的用法$class=newstdClass();$xml=newSimpleXmlElement($xmlstr); ...

php解决高并发问题

我们通常衡量一个Web系统的吞吐率的指标是QPS(QueryPerSecond,每秒处理请求数),解决每秒数万次的高并发场景,这个指标非常关键。举个例子,我们假设处理一个业务请求平均响应时间为100ms,同时,系统内有20台Apache的Web服务器,配置MaxClients为500个(表示Apache的最大连接数目)。 那么,我们的Web系统的理论峰值QPS为(理想化的计算方式):20*500/0.1=100000(10万QPS)咦?我们的系统似乎很强大,1秒钟可以处理完10万的请求,5w/s的秒杀似乎是“纸老虎”哈。实际情况,当然没有这么理想。在高并发的实际场景下,机器都处于高负载的状态,在这个时候平均响应时间会被大大增加。普通的一个p4的服务器每天最多能支持大约10万左右的IP,如果访问量超过10W那么需要专用的服务器才能解决,如果硬件不给力软件怎么优化都是于事无补的。主要影响服务器的速度有:网络-硬盘读写速度-内存大小-cpu处理速度。就Web服务器而言,Apache打开了越多的连接进程,CPU需要处理的上下文切换也越多,额外增加了CPU的消耗...

thinkphp实现登录后返回原界面

主要思路还是用session记录原地址,在登录后再跳转回原界面先保存请求login方法界面的urlpublicfunctionsavelogin(){session('returnUrl',$_SERVER['HTTP_REFERER']);}在登录方法最后跳转时控制if($returnUrl=session('returnUrl')){session('returnUrl',null);$this->success('登录成功',$returnUrl,0);}else{$this->success('登录成功',U("Home/Index/index"),0);}}elseif($returnUrl=session('returnUrl')){session('returnUrl',null);$this->error('登录失败(用户名或密码错误)',$returnUrl,0);}else{$this->success('登录失败',U("Home/Login/index"),0);}}退出时也一样publicfunctionlogout(){$return...

浏览记录实现思路及方法

之前想过用cookie来实现这个,但是cookie不能存放数组,而且也不好实现,就用了session方法//将用户浏览过的商品保存到session里,可以在浏览记录里显示$_SESSION['recent_products'][]=$id;$_SESSION['recent_products']=array_unique($_SESSION['recent_products']);$recentgoods=array();foreach($_SESSION['recent_products']as$k=>$v){if(Db::table('sp_goods')->where('id',$v)->field('sm_thumb,goods_name,id,shop_price')->find()){$recentgoods[]=Db::table('sp_goods')->where('id',$v)->field('sm_thumb,goods_name,id,shop_price')->find();}}$this->assign('r...
首页上一页...609610611612613...下一页尾页