手机端跳转的一个小建议

By 迈达斯之手 at 2016-04-22 • 0人收藏 • 1950人看过

针对没有设置手机端域名的情况,主域名在被手机访问时也应该要加载为手机模板。

common.php(line755-794)

/* Set current template
 * default: PC Version
 * mobile: Mobile Version
 * api: API
 */
if ($IsApp) {
	///balabalbala省略
} elseif ($_SERVER['HTTP_HOST'] == $Config['MobileDomainName']) {
	$TemplatePath = __DIR__ . '/styles/mobile/template/';
	$Style        = 'Mobile';
	header('X-Frame-Options: SAMEORIGIN');
} else {
	$TemplatePath = __DIR__ . '/styles/default/template/';
	$Style        = 'Default';
	header('X-Frame-Options: SAMEORIGIN');
	//header('X-XSS-Protection: 1; mode=block');
	//X-XSS-Protection may cause some issues in dashboard
}
$CurView = GetCookie('View', $IsMobile ? 'mobile' : 'desktop');
if ($Config['MobileDomainName'] && $_SERVER['HTTP_HOST'] != $Config['MobileDomainName'] && $CurView == 'mobile' && !$IsApp) {
	//如果是手机,则跳转到移动版,暂时关闭
	header("HTTP/1.1 302 Moved Temporarily");
	header("Status: 302 Moved Temporarily");
	header('Location: ' . $CurProtocol . $Config['MobileDomainName'] . $RequestURI);
	exit();
}


主要是修改776行的条件判断:

/* Set current template
 * default: PC Version
 * mobile: Mobile Version
 * api: API
 */
$CurView = GetCookie('View', $IsMobile ? 'mobile' : 'desktop'); 

if ($IsApp) {
	//balabalabla省略
} elseif ($_SERVER['HTTP_HOST'] == $Config['MobileDomainName'] || $CurView == 'mobile') {
	$TemplatePath = __DIR__ . '/styles/mobile/template/';
	$Style        = 'Mobile';
	header('X-Frame-Options: SAMEORIGIN');
} else {
	$TemplatePath = __DIR__ . '/styles/default/template/';
	$Style        = 'Default';
	header('X-Frame-Options: SAMEORIGIN');
	//header('X-XSS-Protection: 1; mode=block');
	//X-XSS-Protection may cause some issues in dashboard
}

if ($Config['MobileDomainName'] && $_SERVER['HTTP_HOST'] != $Config['MobileDomainName'] && $CurView == 'mobile' && !$IsApp) {
	//如果是手机,则跳转到移动版,暂时关闭
	header("HTTP/1.1 302 Moved Temporarily");
	header("Status: 302 Moved Temporarily");
	header('Location: ' . $CurProtocol . $Config['MobileDomainName'] . $RequestURI);
	exit();
}


5 个回复 | 最后更新于 2016-04-22
2016-04-22   #1
if ($IsApp) {
    ///balabalbala省略
} elseif ($_SERVER['HTTP_HOST'] == $Config['MobileDomainName'] || ( !$Config['MobileDomainName'] && $IsMobile )) {
    //blbl省略
}

实际上应该这么写。

2016-04-22   #2

回复#1 @lincanbin :

这样写会不会手机页面里的“桌面模式”用不了了?

http://www.94cb.com/view-desktop?callback=%2F

毕竟它是通过cookie强制切换的

2016-04-22   #3

回复#2 @迈达斯之手 :

这个只要判断$Config['MobileDomainName']为空时不显示就好了。

2016-04-22   #4

回复#3 @lincanbin :

会考虑加到下个版本里吗

2016-04-22   #5

回复 #0 @迈达斯之手 :

已经加了,但是还是建议每个不同的页面都要有不同的URL,对于手机和PC都是。

登录后方可回帖

登 录
信息栏

Carbon Forum是一个基于话题的高性能轻型PHP论坛

下载地址:Carbon Forum v5.9.0
QQ群:12607708(QQ我不常上)

donate

手机支付宝扫描上方二维码可向本项目捐款

粤公网安备 44030602003677号
粤ICP备17135490号

Loading...