PHP判断是否手机端或PC端访问_php判断手否电脑端-程序员宅基地

技术标签: 手机  pc  thikphp  实例  PHP  php  thinkphp  

1.在PublicController控制器中写好判断手机端方法。

<?php
namespace Home\Controller;
use Think\Controller;
class PublicController extends Controller {
    
    //判断是否是手机端还是电脑端
    function isMobile(){
        // 如果有Http_X_WAP_PROFILE则一定是移动设备
        if (isset ($_SERVER['HTTP_X_WAP_PROFILE'])){
            return true;
        }
        // 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
        if (isset ($_SERVER['HTTP_VIA'])){
            // 找不到为flase,否则为true
            return stristr($_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',
                    'nexusone',
                    'cldc',
                    'midp',
                    'wap',
                    'mobile'
            );
            // 从HTTP_USER_AGENT中查找手机浏览器的关键字
            if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT']))){
                return true;
            }
        }
        // 协议法,因为有可能不准确,放到最后判断
        if (isset ($_SERVER['HTTP_ACCEPT'])){
            // 如果只支持wml并且不支持HTML那一定是移动设备
            // 如果支持wml和html但是wml在html之前则是移动设备
            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;
    }
}

2.在PHP控制器 IndexController.class.php中继承该方法:

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends PublicController {

    function __construct(){   //构造方法   
        parent::__construct();
    }

3.在方法中调用并实例化:

    /*用户首页*/
    public function Personal(){
        $mobile = parent::isMobile(); //实例化该方法 
        if($mobile=="true"){
            $this->display(Personal);
        }else{
            $this->display(Wap_Personal);
        }
       
    }
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_37883694/article/details/77432204

智能推荐

Linux驱动学习--DRM框架介绍及基于DRM框架的HDMI开发_嵌入式linux hdmi视频环出功能实现-程序员宅基地

文章浏览阅读4.5k次,点赞2次,收藏19次。目录一、引言二、DRM框架介绍三、DRM框架的使用四、源码分析一、引言Android4开始,hdmi等视频输出框架开始由framebuffer想DRM迁移,今天我们就来简单分析下DRM框架二、DRM框架介绍DRM是一个内核级的设备驱动,具体的说是显卡驱动的一种架构源码位置因为Linux kernel内部接口和数据结构可能随时发生变化,所以DRI模块要针对特定的内核版本进行编译。kernel 2.6.26之后的版本,DRM(DRI kernel模块)源码存放在kernel/drivers/_嵌入式linux hdmi视频环出功能实现

homebrew安装后路径只可用一次的解决办法:添加环境变量_homebrew path-程序员宅基地

文章浏览阅读2.8k次。homebrew安装后路径只可用一次的解决办法在上次安装后遇到了找不到路径的问题,虽然通过export解决了问题,但是在重启后,又出现了这个问题,现在给出:export PATH=/usr/local/bin:$PATH只能解决一次,重启后又失灵了,是因为没有写进系统环境变量中。下面将把/usr/local/bin路径写进系统环境变量中:1.执行管理权限,使用vim编辑sudo vim ~..._homebrew path

蚁群算法原理及其实现(python)_蚁群算法python代码-程序员宅基地

文章浏览阅读10w+次,点赞294次,收藏1.8k次。蚁群算法(AG)是一种模拟蚂蚁觅食行为的模拟优化算法,它是由意大利学者Dorigo M等人于1991年首先提出,并首先使用在解决TSP(旅行商问题)上。之后,又系统研究了蚁群算法的基本原理和数学模型.蚁群算法的基本思想:# -*- coding: utf-8 -*-import randomimport copyimport timeimport sysimport mathimpor..._蚁群算法python代码

ElasticSearch 8-程序员宅基地

文章浏览阅读740次,点赞24次,收藏21次。Port | LoadBalancer(外部负载均衡) | ExternalName (外部DNS解析)ports:

【数据结构】括号匹配(栈的应用)_括号匹配 栈应用-程序员宅基地

文章浏览阅读235次,点赞28次,收藏9次。括号匹配附栈基本操作_括号匹配 栈应用

css垂直居中最常用的八种布局方法_css常用垂直居中布局-程序员宅基地

文章浏览阅读531次。css垂直居中最常用的八种布局方法 首先定义两个盒子,然后进行下面操作! <body> <div class="box"> <div class="coco"></div> </div></body> 方法一 display:flex /* 1 display:flex */ .box{ width: 40..._css常用垂直居中布局

随便推点

数字信号处理7——点到向量的距离_点到向量的距离公式-程序员宅基地

文章浏览阅读9.4k次,点赞2次,收藏4次。目录一、前言二、点到线段的最短距离——向量法三、点到直线的最短距离——直线法四、点到直线最短距离——向量法一、前言 其实在工程应用中很多情况下计算点到直线或者点到线段的距离,比如在unity3d游戏软件设计中计算任意形状路径起点和终点连线距离最远的点,比如用于雷达聚类后在跟踪算法中计算哪个sensor距离最近,另外还需要知道要计算的点位于直线的哪一侧,这些计算在游戏开发或者数字信号后处理要求实时性,因此需要高效的运算。这里记录一下几种计算方法,方便需要时回忆。二、..._点到向量的距离公式

Sublime Text 3 全程详细图文原创教程(持续更新中。。。)-程序员宅基地

文章浏览阅读66次。Sublime Text 3 全程详细图文原创教程(持续更新中。。。)[摘要:1、 媒介 应用Sublime Text 也有几个岁首了,版本也从2进级到3了,但如同冷天饮冰火,热热尽自知。最后也是没有晓得从何动手,谦天下天查找材料,但能查阅到的材料,苦于它们的零星]一、前言 使用Sublime Text 也有几个年头了,版本也从2升级到3了,但犹如寒天饮冰水,...

page fault in nonpaged area 蓝屏_Windows 10系统遇到蓝屏怎么解决?-程序员宅基地

文章浏览阅读1.9k次。针对以下常见的蓝屏错误代码进行问题排除,并未提供所有错误代码的列表,但由于许多错误代码可能具有相同的解决方案,因此最佳做法是按照以下步骤操作来对蓝屏错误进行问题排除。CRITICAL_PROCESS_DIEDSYSTEM_THREAD_EXCEPTION_NOT_HANDLEDIRQL_NOT_LESS_OR_EQUALVIDEO_TDR_TIMEOUT_DETECTEDPAGE_FAU..._interrupt exception not handled/page fault in nonpaged area/system threa

虚拟机安装centos7网络配置_虚拟机centos7如何重装网络-程序员宅基地

文章浏览阅读1.8k次,点赞3次,收藏12次。1、虚拟机网络设置,设置桥接模式,复制物理网络2、修改网络配置 启用网络vi /etc/sysconfig/network-scripts/ifcfg-ens33修改ONBOOT=yes3、安装网络工具 yum search ifconfig yum install net-tools4、测试ping www.baidu.com......_虚拟机centos7如何重装网络

postgres 空间坐标转换和获取geom中心点_pgsql 获取中心点-程序员宅基地

文章浏览阅读1.4k次。select st_x(st_centroid(geom)) AS x from table_pgsql 获取中心点

基于STM32单片机智能电能表市电抄表交流电费功率无线设计23-198_stm32 智能电表-程序员宅基地

文章浏览阅读233次,点赞6次,收藏3次。23-198、基于STM32单片机智能电能表市电抄表交流电表插座电费功率检测TFT彩屏显示无线蓝牙手机APP设计功能描述:本系统由STM32F103C8T6单片机核心板、TFT1.44寸彩屏液晶显示电路、交流电压互感器TV1005M、交流电流互感器TA1005M、继电器驱动电路、无线蓝牙模块、蜂鸣器报警驱动电路及电源组成。【1】220V市电经过互感器后产生微弱交流电信号,经过整流滤波后变为直流,然后通过单片机内容AD转换进行采集,单片机换算出实际值,最终获取到交流电压(单位V)、交流电流(单位A);由功率(_stm32 智能电表

推荐文章

热门文章

相关标签