查看: 3264|回复: 4

[使用帮助] 手机访问PC端页面自动跳转到手机站页面 最新

[复制链接]
发表于 2016-5-25 23:55:32 | 显示全部楼层 |阅读模式
在论坛找了好久  最后自己动手修改源代码

第一步:找到 phpcms/libs/classes/param.class.php 修改为一下代码
  1. <?php
  2. /**
  3. *  param.class.php        参数处理类
  4. *
  5. * @copyright                        (C) 2005-2012 PHPCMS
  6. * @license                                http://www.phpcms.cn/license/
  7. * @lastmodify                        2012-9-17
  8. */
  9. class param {

  10.         //路由配置
  11.         private $route_config = '';
  12.         private $route_type = 'default';
  13.        
  14.         public function __construct() {
  15.                 if(!get_magic_quotes_gpc()) {
  16.                         $_POST = new_addslashes($_POST);
  17.                         $_GET = new_addslashes($_GET);
  18.                         $_REQUEST = new_addslashes($_REQUEST);
  19.                         $_COOKIE = new_addslashes($_COOKIE);
  20.                 }

  21.                
  22.                 $detect = pc_base::load_sys_class('mobiledetect');
  23.                 if($detect->isMobile() || $detect->isTablet()){
  24.                         $this->route_type = "mobile";
  25.                 }
  26.                
  27.                 //$this->route_config = pc_base::load_config('route', SITE_URL) ? pc_base::load_config('route', SITE_URL) : pc_base::load_config('route', 'default');
  28.                 $this->route_config = pc_base::load_config('route', SITE_URL) ? pc_base::load_config('route', SITE_URL) : pc_base::load_config('route', $this->route_type);

  29.                 if(isset($this->route_config['data']['POST']) && is_array($this->route_config['data']['POST'])) {
  30.                         foreach($this->route_config['data']['POST'] as $_key => $_value) {
  31.                                 if(!isset($_POST[$_key])) $_POST[$_key] = $_value;
  32.                         }
  33.                 }
  34.                 if(isset($this->route_config['data']['GET']) && is_array($this->route_config['data']['GET'])) {
  35.                         foreach($this->route_config['data']['GET'] as $_key => $_value) {
  36.                                 if(!isset($_GET[$_key])) $_GET[$_key] = $_value;
  37.                         }
  38.                 }
  39.                 if(isset($_GET['page'])) {
  40.                         $_GET['page'] = max(intval($_GET['page']),1);
  41.                         $_GET['page'] = min($_GET['page'],1000000000);
  42.                 }
  43.                 return true;
  44.         }

  45.         /**
  46.          * 获取模型
  47.          */
  48.         public function route_m() {
  49.                 $m = isset($_GET['m']) && !empty($_GET['m']) ? $_GET['m'] : (isset($_POST['m']) && !empty($_POST['m']) ? $_POST['m'] : '');
  50.                 $m = $this->safe_deal($m);
  51.                 if (empty($m)) {
  52.                         return $this->route_config['m'];
  53.                 } else {
  54.                         if(is_string($m)) return $m;
  55.                 }
  56.         }

  57.         /**
  58.          * 获取控制器
  59.          */
  60.         public function route_c() {
  61.                 $c = isset($_GET['c']) && !empty($_GET['c']) ? $_GET['c'] : (isset($_POST['c']) && !empty($_POST['c']) ? $_POST['c'] : '');
  62.                 $c = $this->safe_deal($c);
  63.                 if (empty($c)) {
  64.                         return $this->route_config['c'];
  65.                 } else {
  66.                         if(is_string($c)) return $c;
  67.                 }
  68.         }

  69.         /**
  70.          * 获取事件
  71.          */
  72.         public function route_a() {
  73.                 $a = isset($_GET['a']) && !empty($_GET['a']) ? $_GET['a'] : (isset($_POST['a']) && !empty($_POST['a']) ? $_POST['a'] : '');
  74.                 $a = $this->safe_deal($a);
  75.                 if (empty($a)) {
  76.                         return $this->route_config['a'];
  77.                 } else {
  78.                         if(is_string($a)) return $a;
  79.                 }
  80.         }

  81.         /**
  82.          * 设置 cookie
  83.          * @param string $var     变量名
  84.          * @param string $value   变量值
  85.          * @param int $time    过期时间
  86.          */
  87.         public static function set_cookie($var, $value = '', $time = 0) {
  88.                 $time = $time > 0 ? $time : ($value == '' ? SYS_TIME - 3600 : 0);
  89.                 $s = $_SERVER['SERVER_PORT'] == '443' ? 1 : 0;
  90.                 $var = pc_base::load_config('system','cookie_pre').$var;
  91.                 $_COOKIE[$var] = $value;
  92.                 if (is_array($value)) {
  93.                         foreach($value as $k=>$v) {
  94.                                 setcookie($var.'['.$k.']', sys_auth($v, 'ENCODE'), $time, pc_base::load_config('system','cookie_path'), pc_base::load_config('system','cookie_domain'), $s);
  95.                         }
  96.                 } else {
  97.                         setcookie($var, sys_auth($value, 'ENCODE'), $time, pc_base::load_config('system','cookie_path'), pc_base::load_config('system','cookie_domain'), $s);
  98.                 }
  99.         }

  100.         /**
  101.          * 获取通过 set_cookie 设置的 cookie 变量
  102.          * @param string $var 变量名
  103.          * @param string $default 默认值
  104.          * @return mixed 成功则返回cookie 值,否则返回 false
  105.          */
  106.         public static function get_cookie($var, $default = '') {
  107.                 $var = pc_base::load_config('system','cookie_pre').$var;
  108.                 $value = isset($_COOKIE[$var]) ? sys_auth($_COOKIE[$var], 'DECODE') : $default;
  109.                 if(in_array($var,array('_userid','userid','siteid','_groupid','_roleid'))) {
  110.                         $value = intval($value);
  111.                 } elseif(in_array($var,array('_username','username','_nickname','admin_username','sys_lang'))) { //  site_model auth
  112.                         $value = safe_replace($value);
  113.                 }
  114.                 return $value;
  115.         }

  116.         /**
  117.          * 安全处理函数
  118.          * 处理m,a,c
  119.          */
  120.         private function safe_deal($str) {
  121.                 return str_replace(array('/', '.'), '', $str);
  122.         }

  123. }
  124. ?>
复制代码

代码说明:
13行 新增一个变量 默认值为默认路由规则

24行-27行为新增代码
此处有一个新的类添加进去
下载地址:https://github.com/serbanghita/Mobile-Detect

我使用的是 类文件名称为:mobiledetect.class.php (与上面下载的有点点差别  类名字修改了,懒人族 可以复制代码直接另存为mobiledetect.class.php就可以)
文件下载:

下载解压存放于 /phpcms/libs/classes/下

第二部:在/cache/config/route.php中 修改为如下代码
  1. <?php
  2. /**
  3. * 路由配置文件
  4. * 默认配置为default如下:
  5. * 'default'=>array(
  6. *         'm'=>'phpcms',
  7. *         'c'=>'index',
  8. *         'a'=>'init',
  9. *         'data'=>array(
  10. *                 'POST'=>array(
  11. *                         'catid'=>1
  12. *                 ),
  13. *                 'GET'=>array(
  14. *                         'contentid'=>1
  15. *                 )
  16. *         )
  17. * )
  18. * 基中“m”为模型,“c”为控制器,“a”为事件,“data”为其他附加参数。
  19. * data为一个二维数组,可设置POST和GET的默认参数。POST和GET分别对应PHP中的$_POST和$_GET两个超全局变量。在程序中您可以使用$_POST['catid']来得到data下面POST中的数组的值。
  20. * data中的所设置的参数等级比较低。如果外部程序有提交相同的名字的变量,将会覆盖配置文件中所设置的值。如:
  21. * 外部程序POST了一个变量catid=2那么你在程序中使用$_POST取到的值是2,而不是配置文件中所设置的1。
  22. */
  23. return array(
  24.         'default'=>array('m'=>'content', 'c'=>'index', 'a'=>'init'),
  25.         'mobile'=>array('m'=>'wap', 'c'=>'index', 'a'=>'init'),
  26. );
复制代码


第25行代码为新增的

此时 把修改的以及新增的文件上传 新增文件为下载包中的mobiledetect.class.php 修改文件为param.class.php 以及缓存目录的 路由配置文件/cache/config/route.php 上传此三文件既可以

测试网站:www.yuerso.cn

可以在pc状态下切换为移动浏览器 也可以移动端界面自动切回pc界面

需要的就拿去吧!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?点击这里注册

x
 楼主| 发表于 2016-5-25 23:56:41 | 显示全部楼层
自己顶一个啊  打个广告 www.yuerso.cn wwwyuerso.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-5-25 23:59:26 | 显示全部楼层
测试地址 后面需要添加index.php  

完整测试地址:http://www.yuerso.cn/index.php
回复 支持 反对

使用道具 举报

发表于 2016-5-26 13:40:24 | 显示全部楼层
几年前搞过,但是不支持生成静态,所以选择了JS适配
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-6-7 11:55:52 | 显示全部楼层
05273 发表于 2016-5-26 13:40
几年前搞过,但是不支持生成静态,所以选择了JS适配

手机型号大小太多啊 真的不适合静态文件啊!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 点击这里注册

本版积分规则

小黑屋|Archiver|phpcms网站管理系统 ( 京ICP备14011169 )

GMT+8, 2019-6-20 05:13 , Processed in 0.160172 second(s), 7 queries , Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表