现在很多网站的手机端和PC端都是分开的模块,这是问题就来了,有些手机端的用户输入了PC端的网址,直接访问了PC端。下面我教大家如何实现手机端用户访问PC时,跳转回手机端。

解决方法:把下面的代码放到公共区域,例如:Frontend下的_initialize(注:必须继承这个类)

//判断当前浏览器为手机
if($this->request->isMobile()){
//获取当前域名,比如:http://www.fa.com/index/index/index,它获取www.fa.com
$SERVER_NAME = $_SERVER['SERVER_NAME']; //$_SERVER['HTTP_HOST']也可以获取域名
//执行匹配正则表达式,返回$matches的值:Array ( [0] => www.fa.com [1] => www. )
preg_match('/(.*\.)?\w+\.\w+$/', $SERVER_NAME, $matches);
if (!empty($matches[1])) {
//去除点,返回www
$domain_url = trim($matches[1], '.');
} else {
$domain_url = '';
}
if($domain_url <> 'm'){
//跳转到手机对应地址
/*$website = Config::get("site");
$mobileUrl = $website['siteurl'];//在FastAdmin设置siteurl
//获取手机端的地址,重定向
$this->redirect($mobileUrl.$this->request->url());*/ //重定向;$this->request->url()获取当前URL地址,不含域名
$this->redirect("/mobile".$this->request->url());
//退出;在PHP中die() 和 exit()的用法和作用是一样的
exit;
}
};

PHP获取当前域名$_SERVER['HTTP_HOST']和$_SERVER['SERVER_NAME']的区别

相同点:

当满足以下三个条件时,两者会输出相同信息。

1、服务器为80端口

2、apache的conf中ServerName设置正确

3、HTTP/1.1协议规范

不同点:

1、通常情况:

$_SERVER["HTTP_HOST"] 在HTTP/1.1协议规范下,会根据客户端的HTTP请求输出信息。

$_SERVER["SERVER_NAME"] 默认情况下直接输出apache的配置文件httpd.conf中的ServerName值。

2、当服务器为非80端口时:

$_SERVER["HTTP_HOST"] 会输出端口号,例如:snsgou.com:8080

$_SERVER["SERVER_NAME"] 会直接输出ServerName值

因此在这种情况下,可以理解为:$_SERVER['HTTP_HOST'] = $_SERVER['SERVER_NAME'] : $_SERVER['SERVER_PORT']

3、当配置文件httpd.conf中的ServerName与HTTP/1.0请求的域名不一致时:

httpd.conf配置如下:

<virtualhost *>
ServerName snsgou.com
ServerAlias blog.snsgou.com
</virtualhost>

客户端访问域名 blog.snsgou.com

$_SERVER["HTTP_HOST"] 输出 blog.snsgou.com
$_SERVER["SERVER_NAME"] 输出 snsgou.com

所以,在实际程序中,应尽量使用_SERVER["HTTP_HOST"] ,比较保险和可靠。

原文链接:https://www.cnblogs.com/52php/p/5670054.html

tp5判断多模块下访问PC端和手机端的更多相关文章

  1. js 判断pc端或手机端

    <script> (function () { var navUA = navigator.userAgent; var defIncludeStr = "iPhone|Andr ...

  2. 判断浏览器是pc端还是手机端

    1. 判断浏览器是pc端还是手机端 <script type="text/javascript"> var browser = { versions: function ...

  3. 关于PC端与手机端随着手指移动图片位置放生变化的拖拽事件

    当按下鼠标时,图片随鼠标移动松开时图片回到原位 drag("div_id") function drag(node_id){ var node = document.getElem ...

  4. 山西大同大学教务处教师端——可在PC端,手机端操作

    解决问题:大同大学教务处官网教师端口一进去就卡住了,点上面一行的菜单无响应 下载方法(学生端 / 教师端  / 验证脚本): 链接:https://pan.baidu.com/s/1MWrJXoPzE ...

  5. 山西大同大学教务处学生端--送给学弟,学妹的礼物,可在PC端,手机端操作

    解决问题:大同大学教务处官网学生端口一进去就卡住了,点上面一行的菜单无响应 转眼已是四年,想想自己大学即将结束,不由得让人感慨啊.这才刚开学几天,我就听到有同学在因为补考,选课的事情发愁.学校官方的教 ...

  6. 【工具】PC端调试手机端 Html 页面的工具

    一.概述 有一个项目需要在手机端显示一个 web 页面,而每次把应用 launch 后,从手机端看比较麻烦,因此搜罗了几种在 PC 端调试手机端页面的工具. 二.工具 http://fonkie.it ...

  7. 判断是pc端还是手机端,并跳转到相应页面

    <!-- 判断浏览器是否为手机端 -->  <script>     // class     ! function(navigator) {         var user ...

  8. 自动判断PC端、手机端跳往不同的域名JS实现代码

    输入相同域名,在pc端和移动端会出现不同的页面效果,一种是用栅格系统实现自适应, 更多的是设计两套不同的模板和两个二级域名或者一个主域名和一个二级域名(就是有区别就可以了); js代码判断浏览器的用户 ...

  9. 自动PC端显示 手机端隐藏CSS代码判断实现

    实现场景描述: 有些内容部署在PC端但是有不适合在手机端显示(比如盒子过大,遮挡内容)或者手机端显示毫无意义等.我们可以使用下面的代码来实现:电脑端显示,手机端隐藏 实现方法: CSS控制判断 @me ...

随机推荐

  1. Java迭代Map方法

    Map map=new HashMap(); map.put("1", "one"); map.put("2","two" ...

  2. loadrunner常用web动作函数

    web_custom_request  ---允许使用任何http请求方法 脚本一: web_custom_request("baidu_request","URL=ht ...

  3. AtCoder Grand Contest 036 A-C

    目录 \(\bf A - Triangle\) \(\bf B - Do\ Not\ Duplicate\) \(\bf C - GP 2\) \(\bf D - Negative \ Cycle\) ...

  4. 基于xposed逆向微信、支付宝、云闪付来实现个人免签支付功能

    我的个人网站如何实现支付功能? 想必很多程序员都有过想开发一个自己的网站来获得一些额外的收入,但做这件事会遇到支付这个问题.目前个人网站通过常规手法是无法实现支付管理的,所有支付渠道都需要以公司的身份 ...

  5. xms跨平台基础框架 - 基于.netcore

    背景 敝人经过多年开发,数百个项目“打磨(折磨)”,各种国内外框架平台都有涉及,没有一款称心顺手的,原因有三,一是设计反人类,二是不开源根本无法突破框架限制,三是即使开源也是阉割版,然后xms就开始萌 ...

  6. JS面试题-<变量和类型>-JavaScript的数据类型

    前言 整理以前的面试题,发现问js数据类型的频率挺高的,回忆当初自己的答案,就是简简单单的把几个类型名称罗列了出来,便没有了任何下文.其实这一个知识点下可以牵涉发散出很多的知识点,如果一个面试者只是罗 ...

  7. mjpg-stream 视频服务 (1)| 简介与配置树莓派使用

    源码地址为:https://github.com/jacksonliam/mjpg-streamer Mjpg简介: (1)mjpg-streamer是一个命令行应用程序,它将JPEG帧从一个或多个输 ...

  8. 02-model设计

    一.项目依赖包安装 1.安装Django(2.2.7) pip3 install django 2.安装DjangoRestFramework 因为DjangoRestFramework是基于Djan ...

  9. VMware下Centos7-Minimal上网配置

    1.Centos7下载 http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1810.iso 2.推荐 ...

  10. Docker学习-Kubernetes - 集群部署

    Docker学习 Docker学习-VMware Workstation 本地多台虚拟机互通,主机网络互通搭建 Docker学习-Docker搭建Consul集群 Docker学习-简单的私有Dock ...