“查看完整网站”移动网站选项

时间:2011-04-30 22:14:14

标签: php javascript mobile

所以我正在研究我正在做的网站的移动版本 到目前为止,我正在从其主要网站主要网站上提取移动网站内容。

当我在那里学习一些移动网站时,我注意到很多人都有“查看完整网站”的链接。

现在我打算通过检查屏幕宽度等方式,通过主网站标题标签中的.js重定向移动访问者...(不确定它是否是最好的方式,但到目前为止我的大脑最容易)()但建议也欢迎) 但是这样的事情

if (screen.width<=XyZ||screen.height<=XyZ) //example iphone size lets say 320x480
window.location.replace("mobile site link here.")

我再也不知道这是否是最好的方法,但在虚拟测试中,它适用于iPhone,一些朋友Droids和一个Blackberry。但它确实有效。

无论如何,所以我的问题是,如果我这样检查每一页......我怎么可能有一个“查看完整网站”选项?

5 个答案:

答案 0 :(得分:8)

使用PHP通过$_SERVER['HTTP_USER_AGENT']检测移动用户。 JavaScript检测可能不可靠,因为许多移动浏览器不支持JS。 “查看完整站点”将设置cookie以拒绝可检测的移动站点。 使用Cookie来跟踪用户的偏好。

在骨架中

<?php

if (isset($_COOKIE['nomobile'])) {
  $style = "normal";
} else {

if (preg_match('/iPhone|(...etc...)/', $_SERVER['HTTP_USER_AGENT'])) {
   $style = "mobile";
} else {
   $style = "normal";
}

}

对于“查看完整网站”页面:

<a href="fullsite.php">Full Site</a>

fullsite.php

<?php
   setcookie('nomobile', 'true');
   header('Location: index.php');
?>

答案 1 :(得分:2)

首先,转到以下URL并下载mobile_detect.php文件:

http://code.google.com/p/php-mobile-detect/

接下来,按照页面上的说明操作,将mobile_detect.php上传到根目录, 在索引或主页上插入以下代码:

    <?php
    @include("Mobile_Detect.php");
    $detect = new Mobile_Detect();
    if ($detect->isMobile() && isset($_COOKIE['mobile']))
    {
    $detect = "false";
    }
    elseif ($detect->isMobile())
    {
    header("Location:http://www.yourmobiledirectory.com");
    }
    ?>

您会注意到上面的代码正在检查名为“mobile”的Cookie,当移动设备重定向到移动页面时会设置此Cookie。要设置Cookie,请在移动登录页面上插入以下代码:

    <?php
    setcookie("mobile","m", time()+3600, "/");
    ?>

查看完整文章:http://www.squidoo.com/php-mobile-redirect

答案 2 :(得分:0)

这不是最好的方式,因为移动浏览器通常不支持JS。

您可以使用此功能:

function its_mobile_browser($user_agent = '')
{
    if (empty($user_agent))
    {
        $user_agent = $_SERVER['HTTP_USER_AGENT'];
        if (empty($user_agent)) return false;
    }

    if (stripos($user_agent, 'Explorer')!==false ||
        stripos($user_agent, 'Windows')!==false ||
        stripos($user_agent, 'Win NT')!==false ||
        stripos($user_agent, 'FireFox')!==false ||
        stripos($user_agent, 'linux')!==false ||
        stripos($user_agent, 'unix')!==false ||
        stripos($user_agent, 'Macintosh')!==false
    )
    {
        if (!(stripos($user_agent, 'Opera Mini')!==false
              || stripos($user_agent, 'WAP')!==false
              || stripos($user_agent, 'Mobile')!==false
              || stripos($user_agent, 'Symbian')!==false
              || stripos($user_agent, 'NetFront')!==false
              || stripos($user_agent, ' PPC')!==false
              || stripos($user_agent, 'iPhone')!==false
              || stripos($user_agent, 'Android')!==false
              || stripos($user_agent, 'Nokia')!==false
              || stripos($user_agent, 'Samsung')!==false
              || stripos($user_agent, 'SonyEricsson')!==false
              || stripos($user_agent, 'LG')!==false
              || stripos($user_agent, 'Obigo')!==false
              || stripos($user_agent, 'SEC-SGHX')!==false
              || stripos($user_agent, 'Fly')!==false
              || stripos($user_agent, 'MOT-')!==false
              || stripos($user_agent, 'Motorola')!==false
        )
        ) return false;
    }

    return true;
}

或者更好的东西,哈哈:)

答案 3 :(得分:0)

您可以在网站地址中添加查询字符串参数,例如?fullsite=true,并在if条件&gt;中包含以下内容

var fullsite = getQueryString()["fullsite"];
if (fullsite != "true" && (screen.height <= xyz || screen.width <= abc)) //now redirect

您需要以下函数访问查询字符串。我从这里拿走了它&gt; JavaScript query string

function getQueryString() {
  var result = {}, queryString = location.search.substring(1),
      re = /([^&=]+)=([^&]*)/g, m;

  while (m = re.exec(queryString)) {
    result[decodeURIComponent(m[1])] = decodeURIComponent(m[2]);
  }

  return result;
}

在链接中,您可以拥有&gt;

<a href="mysite.com?fullsite=true"> Show me Full Site </a>

===========

请说一下CSS Media Queries。它可能需要改变你的设计架构,但它非常有用。

答案 4 :(得分:0)

服务器端检测绝对是这样做的方法,因为您无法保证JS可用甚至打开。这里有一个很棒的用于移动检测的PHP脚本http://detectmobilebrowsers.mobi/,它可以在网络上得到很多使用。