日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

使用基于ThinkPHP3.2.3的ThinkAdmin创建手机电脑通用的表白墙(七)优化:访问控制

發(fā)布時(shí)間:2024/3/13 php 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用基于ThinkPHP3.2.3的ThinkAdmin创建手机电脑通用的表白墙(七)优化:访问控制 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

這個(gè)表白墻的最初設(shè)計(jì)是:電腦端只能看彈幕和微信二維碼,移動(dòng)端提供彈幕、發(fā)表白信息、看表白墻等功能。

所以要修改相應(yīng)代碼來實(shí)現(xiàn)這個(gè)訪問控制,也避免在不同設(shè)備訪問界面亂了。

最簡(jiǎn)單的思路就是在手機(jī)端的每個(gè)頁面添加設(shè)備判斷代碼來實(shí)現(xiàn),但這樣產(chǎn)生很多相同的代碼。用面向?qū)ο蟮睦^承能簡(jiǎn)單的解決這個(gè)問題。

在Mobile/Controller/新建一個(gè)BaseController.class.php讓每個(gè)移動(dòng)頁面的Controller來繼承他,所以只需要在BaseController中實(shí)現(xiàn)一次即可解決代碼冗余的問題.使用ThinkPHP的初始化函數(shù)_initialize()中。

Mobile/Controller/BaseController.class.php

<?php namespace Mobile\Controller; use Think\Controller; class BaseController extends Controller{public function _initialize(){//初始化函數(shù)if(!$this->isMobile()){$this->redirect('/Home/');}}function isMobile(){// 如果有HTTP_X_WAP_PROFILE則一定是移動(dòng)設(shè)備if (isset ($_SERVER['HTTP_X_WAP_PROFILE']))return true;//此條摘自TPM智能切換模板引擎,適合TPM開發(fā)if(isset ($_SERVER['HTTP_CLIENT']) &&'PhoneClient'==$_SERVER['HTTP_CLIENT'])return true;//如果via信息含有wap則一定是移動(dòng)設(shè)備,部分服務(wù)商會(huì)屏蔽該信息if (isset ($_SERVER['HTTP_VIA']))//找不到為flase,否則為truereturn stristr($_SERVER['HTTP_VIA'], 'wap') ? true : false;//判斷手機(jī)發(fā)送的客戶端標(biāo)志,兼容性有待提高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','nexusone','cldc','midp','wap','mobile');//從HTTP_USER_AGENT中查找手機(jī)瀏覽器的關(guān)鍵字if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT']))) {return true;}}//協(xié)議法,因?yàn)橛锌赡懿粶?zhǔn)確,放到最后判斷if (isset ($_SERVER['HTTP_ACCEPT'])) {// 如果只支持wml并且不支持html那一定是移動(dòng)設(shè)備// 如果支持wml和html但是wml在html之前則是移動(dòng)設(shè)備if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html')))) {return true;}}return false;}}這個(gè)isMobile函數(shù)用到的頻率比較高,并且多個(gè)模塊都要用到,還可以抽取出來寫到公共方法中,只不過試了下寫在Comon/function.php中不起作用


總結(jié)

以上是生活随笔為你收集整理的使用基于ThinkPHP3.2.3的ThinkAdmin创建手机电脑通用的表白墙(七)优化:访问控制的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。