从移动版切换到完整网站(台式机版) [英] Switch From Mobile Version to Full Website (Desktop Version)

查看:91
本文介绍了从移动版切换到完整网站(台式机版)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用此代码将用户从台式机版本引导到我的移动网站.

I'm using this code to direct the users from desktop version to my mobile site.

 <?php
$useragent=$_SERVER['HTTP_USER_AGENT'];
if(preg_match('/android.+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|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(di|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)))
header('Location: http://mywebsite.com/mobile');
?>

我想为用户提供从移动网站切换回桌面版本的选项,但是此代码会将他们重定向回移动网站.我想知道我是否可以创建一个if语句来强制浏览器停留在该页面上.例如,如果我可以使用www.mywebsite.com?device=desktop从移动网站链接回去,并修改代码以识别网址.我对PHP的了解有限,因此不胜感激.

i would like to give the users the option to switch back to desktop version from the mobile website but this code will redirect them back to mobile site. I was wondering if i can create an if statement to force the browser to stay on that page. for example if i can link back from mobile website using www.mywebsite.com?device=desktop and modify the code to recognize the url. my knowledge of PHP is limited so any help would be greatly appreciated.

解决方案:

**我试图使用会话功能,如注释中所建议,但移动设备出现问题.似乎某些移动浏览器不能很好地处理会话.

** I tried to use session function as it was suggested in comments but i had issue with mobile devices. it seemed that some mobile browsers doesn't handle session very well.

**我改用了Cookie,并借助此帖子能够解决问题.下面是我正在使用的代码.

** I used cookie instead and with the help of this post was able to solve the issue. Below is the code i'm using.

**注意:您可以修改setcookie的检测代码和时间以适合您的需求

** NOTE: you can modify the detection code and time for setcookie to suit your needs

    <?php

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

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

if ($version == "mobile") {
header('Location: http://yourwebsite.com/mobile');
}

    ?>

您可以使用此代码创建cookie

And you can use this code to create the cookie

<?php 
setcookie('nomobile', 'true');
   header('Location: http://yourwebsite.com');
?>

推荐答案

当用户单击完整站点"链接时,可以通过将变量附加到URL来将其传递给PHP.这是HTML链接在移动网站上的外观示例:

When the user clicks the 'Full Site' link, you can pass a variable to PHP by appending it to the URL. Here's an example of what the HTML link would look like on the mobile site:

<a href="http://mywebsite.com/?v=desktop">Full Site</a>

在PHP中,您传入的变量将存储在$_GET['v']中("v"用于版本,但命名是任意的).在您的PHP代码中,您首先需要检查甚至是否完全设置了$_GET['v'].如果设置为 ,则需要检查是否将其设置为桌面".如果两者都正确,则应设置一个 session 变量,这样,如果用户刷新页面,则不会再次将其重定向到移动网站.

In PHP, the variable you passed in will be stored in $_GET['v'] ('v' is for version, but the naming is arbitrary). In your PHP code, you will first need to check whether $_GET['v'] is even set at all. If it is set, then you need to check whether or not it is set to 'desktop'. If both are true, then you should set a session variable so that if the user refreshes the page they won't be redirected to the mobile site again.

现在,您需要检查会话变量以查看是否应重定向用户.同样,您将需要首先检查是否已完全设置$_SESSION['v'].如果未设置 ,则应重定向用户.如果设置为 ,则需要检查是否将其设置为桌面".如果未将 设置为桌面",则应重定向用户.代码如下所示:

Now you need to check the session variable to see whether or not you should redirect the user. Again, you will need to first check that $_SESSION['v'] is set at all. If it is not set, then you should redirect the user. If it is set, then you need to check whether or not it is set to 'desktop'. If it is not set to 'desktop', then you should redirect the user. Here's what the code would look like:

// Set a session variable if the user prefers the desktop version
if (isset($_GET['v']) && $_GET['v'] == 'desktop') {
    $_SESSION['v'] == 'desktop';
}

// Detect browser and redirect mobile users unless they've already opted out
if (!isset($_SESSION['v']) || (isset($_SESSION['v']) && $_SESSION['v'] != 'desktop')) {
    // Place browser detection and redirection code here
}

关于PHP的一件好事是它将为您处理会话,但是您必须明确地告诉PHP这样做.您可以通过使用每个页面顶部的session_start()功能来完成此操作,该功能需要成为会话的一部分.在这种情况下,您需要在台式机网站页面和移动网站页面的顶部都添加session_start()语句.

One of the nice things about PHP is that it will handle sessions for you, but you must explicitly tell PHP to do so. You do this by using the session_start() function at the top of each page that needs to be part of the session. In this case, you would need a session_start() statement at the top of both the desktop site's page as well as the mobile site's page.

这篇关于从移动版切换到完整网站(台式机版)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆