当前位置:网站首页>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
边栏推荐
- Why is Dameng data called the "first share" of domestic databases?
- The Sandbox 和数字好莱坞达成合作,通过人力资源开发加速创作者经济的发展
- UML diagram memory skills
- Apachecn translation, proofreading, note sorting activity progress announcement 2022.7
- Nat. Commun.| Machine learning jointly optimizes the affinity and specificity of mutagenic therapeutic antibodies
- Tla+ introductory tutorial (1): introduction to formal methods
- leetcode 72. Edit distance edit distance (medium)
- leetcode 72. Edit Distance 编辑距离(中等)
- La prospérité est épuisée, les choses sont bonnes et mauvaises: Où puis - je aller pour un chef de station personnel?
- Scala download and configuration
猜你喜欢
Concurrent optimization summary
More than 30 institutions jointly launched the digital collection industry initiative. How will it move forward in the future?
傳智教育|如何轉行互聯網高薪崗比特之一的軟件測試?(附軟件測試學習路線圖)
SPSS安装激活教程(包含网盘链接)
2022-07-04:以下go语言代码输出什么?A:true;B:false;C:编译错误。 package main import “fmt“ func main() { fmt.Pri
Embedded development: skills and tricks -- seven skills to improve the quality of embedded software code
新版判断PC和手机端代码,手机端跳转手机端,PC跳转PC端最新有效代码
攻防世界 misc 进阶区 2017_Dating_in_Singapore
Logo special training camp section II collocation relationship between words and graphics
Domestic database chaos
随机推荐
Logo special training camp section 1 Identification logo and logo design ideas
Attack and defense world misc advanced area ditf
Introducing QA into the software development lifecycle is the best practice that engineers should follow
High school physics: linear motion
国产数据库乱象
Introduction and application of bigfilter global transaction anti duplication component
攻防世界 misc 进阶区 2017_Dating_in_Singapore
Ascendex launched Walken (WLKN) - an excellent and leading "walk to earn" game
Challenges faced by virtual human industry
通过Go语言创建CA与签发证书
BigFilter全局交易防重组件的介绍与应用
都说软件测试很简单有手就行,但为何仍有这么多劝退的?
攻防世界 MISC 进阶区 hit-the-core
我在linux里面 通过调用odspcmd 查询数据库信息 怎么静默输出 就是只输出值 不要这个
Mysql root 账号如何重置密码
关于栈区、堆区、全局区、文字常量区、程序代码区
Logo Camp d'entraînement section 3 techniques créatives initiales
Now MySQL cdc2.1 is parsing the datetime class with a value of 0000-00-00 00:00:00
LOGO special training camp section I identification logo and Logo Design Ideas
特征缩放 标准化 归一化