当前位置:网站首页>The new version judges the code of PC and mobile terminal, the mobile terminal jumps to the mobile terminal, and the PC jumps to the latest valid code of PC terminal
The new version judges the code of PC and mobile terminal, the mobile terminal jumps to the mobile terminal, and the PC jumps to the latest valid code of PC terminal
2022-07-04 22:39:00 【~ central qianche ~】
Cause due to songshu.youyacao.com The official website accidentally found that the mobile version of access is also pc edition , So the urgent discussion and internal team members began to check , There is nothing wrong with the judgment code , Due to the failure of the judgment code
Get the following solution :
The original invalid code :
function isMobile()
{
// If there is HTTP_X_WAP_PROFILE It must be a mobile device
if (isset ($_SERVER['HTTP_X_WAP_PROFILE']))
return true;
// This article is taken from TPM Intelligent switching template engine , fit TPM Development
if (isset ($_SERVER['HTTP_CLIENT']) && 'PhoneClient' == $_SERVER['HTTP_CLIENT'])
return true;
// If via The information contains wap It must be a mobile device , Some services will block this information
if (isset ($_SERVER['HTTP_VIA']))
// Cannot find for flase, Otherwise true
return stristr($_SERVER['HTTP_VIA'], 'wap') ? true : false;
// Judge the client mark sent by the mobile phone , Compatibility needs to be improved
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'
);
// from HTTP_USER_AGENT Search for the key words of mobile browser
if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT']))) {
return true;
}
}
// The law of agreement , Because it may not be accurate , Put it to the final judgment
if (isset ($_SERVER['HTTP_ACCEPT'])) {
// If it only supports wml And does not support html That must be a mobile device
// If the support wml and html however wml stay html Before it was mobile devices
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;
}
// Change it to pc
// define('VIEW_PATH', '../template/pc/');
// Change to mobile phone +pc
if (isMobile()) {
define('VIEW_PATH', '../template/mobile/');
} else {
define('VIEW_PATH', '../template/pc/');
}
// [ Application entry file ]
define('TIME', date("Y-m-d H:i:s", time()));
// Define the application directory
define('APP_PATH', __DIR__ . '/../application/');
// Load the framework boot file
require __DIR__ . '/../thinkphp/start.php';
Recently available code after modification :
$useragent=$_SERVER['HTTP_USER_AGENT'];
if(preg_match('/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i',$useragent)||preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i',substr($useragent,0,4))) {
define('VIEW_PATH', '../template/mobile/');
} else {
define('VIEW_PATH', '../template/pc/');
}
// header('Location: http://detectmobilebrowser.com/mobile');
// [ Application entry file ]
define('TIME', date("Y-m-d H:i:s", time()));
// Define the application directory
define('APP_PATH', __DIR__ . '/../application/');
// Load the framework boot file
require __DIR__ . '/../thinkphp/start.php';
It can be used directly
边栏推荐
- Google Earth Engine(GEE)——基于 MCD64A1 的 GlobFire 日常火灾数据集
- Force buckle 2_ 1480. Dynamic sum of one-dimensional array
- [the 2023 autumn recruitment of MIHA tour] open [the only exclusive internal push code of school recruitment eytuc]
- More than 30 institutions jointly launched the digital collection industry initiative. How will it move forward in the future?
- How diff are the contents of the same configuration item in different environments?
- Why is Dameng data called the "first share" of domestic databases?
- UML图记忆技巧
- 攻防世界 misc 高手进阶区 a_good_idea
- Redis sentinel simply looks at the trade-offs between distributed high availability and consistency
- How to reset the password of MySQL root account
猜你喜欢
Play with grpc - go deep into concepts and principles
Close system call analysis - Performance Optimization
Wake up day, how do I step by step towards the road of software testing
Embedded development: skills and tricks -- seven skills to improve the quality of embedded software code
10 schemes to ensure interface data security
Attack and Defense World MISC Advanced Area Erik baleog and Olaf
NFT insider 64: e-commerce giant eBay submitted an NFT related trademark application, and KPMG will invest $30million in Web3 and metauniverse
Logo special training camp section 1 Identification logo and logo design ideas
Concurrent optimization summary
Attack and defense world misc advanced grace-50
随机推荐
About stack area, heap area, global area, text constant area and program code area
leetcode 72. Edit Distance 编辑距离(中等)
Locust性能测试 —— 环境搭建及使用
傳智教育|如何轉行互聯網高薪崗比特之一的軟件測試?(附軟件測試學習路線圖)
How can the advertising system of large factories be upgraded without the presence of large models
Short video system source code, click the blank space of the screen, the keyboard does not automatically stow
The Sandbox 和数字好莱坞达成合作,通过人力资源开发加速创作者经济的发展
Force buckle 3_ 383. Ransom letter
模拟摇杆控制舵机
Introduction and application of bigfilter global transaction anti duplication component
业务太忙,真的是没时间搞自动化理由吗?
Domestic database chaos
Service online governance
Google Earth Engine(GEE)——Tasks升级,实现RUN ALL可以一键下载任务类型中的所有影像
记录:关于Win10系统中Microsoft Edge上的网页如何滚动截屏?
Deployment of JVM sandbox repeater
页面关闭前,如何发送一个可靠请求
SQL中MAX与GREATEST的区别
Logo special training camp Section V font structure and common design techniques
SPSS安装激活教程(包含网盘链接)