PHP Mobile Detect/Redirect and View Full Site

by 14 comments
Anyone got a working solution for this?

I've tried several different mobile detect sripts and redirects and have gotten them all to work. What I need is if I put a link to View Full Site on the mobile page for the user to be able to click that link and go to the full site not once again be redirected back to the mobile version.

The closest solution I have been able to find is: PHP Mobile Redirect and View Full Site

But even that one doesn't work atleast not for me.

I know there's someone out there that knows of a working solution.

Thanks,
Erick
#mobile marketing #detect or redirect #full #mobile #php #site #view
  • Profile picture of the author Cram
    I use HandHeld from elegantthemes.

    Once i click on full site, you scroll to the bottom and its shows up a blue line to click back to mobile view.
  • Profile picture of the author nesterdwarf
    You would just include a variable check before the redirection code and then include it in the link from the mobile site ( eg. http://www.yoursite.com?fs=true ).

    ND
    • Profile picture of the author EZE522
      Originally Posted by nesterdwarf View Post

      You would just include a variable check before the redirection code and then include it in the link from the mobile site ( eg. http://www.yoursite.com?fs=true ).

      ND
      Ok, I'm a bit of a novice when it comes to code. I kind of understand what you are saying but how to code it I wouldn't have a clue. I can copy and paste with the best of them tho...lol
  • Profile picture of the author Nail Yener
    Originally Posted by EZE522 View Post

    Anyone got a working solution for this?

    I've tried several different mobile detect sripts and redirects and have gotten them all to work. What I need is if I put a link to View Full Site on the mobile page for the user to be able to click that link and go to the full site not once again be redirected back to the mobile version.

    The closest solution I have been able to find is: PHP Mobile Redirect and View Full Site

    But even that one doesn't work atleast not for me.

    I know there's someone out there that knows of a working solution.

    Thanks,
    Erick
    I use the cookie concept explained in the link that you gave in my designs and templates. If you do it right, it should work. Setting a cookie is the only PHP solution I could came up with after a considerable amount of research.

    If you want a "copy+paste" code, you should try asking in coding forums but even in such forums I don't think you will get an answer.
    • Profile picture of the author EZE522
      I've currently got this code in my header.php at the very top:

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

      I've got the following code in my mobile sites index at the very top:

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

      I've got the Mobile_Detect.php in my main sites root folder.

      This is the code I have at the bottom of my mobile pages:
      <a id="footer-fullsite" href="http://fullsite.com/">Desktop</a>/<a id="footer-fullsite" href="">Mobile</a>


      Maybe I'm doing something wrong? Another set of eyes never hurts.
    • Profile picture of the author Brandon Tanner
      Originally Posted by Nail Yener View Post

      Setting a cookie is the only PHP solution I could came up with after a considerable amount of research.
      In my opinion the best way to do this is to use a combination of cookies AND sessions, because some mobile visitors will clean their cookies between subsequent visits to your site, and some will have cookies blocked altogether.

      So for your mobile visitors who choose to view your full site (and not get stuck in an endless redirect loop)... you first check to see if your cookie has been saved on their device. If so, you use that to set the redirect "flag". If not, then you can set the flag via sessions or via the query string (which of course will only work for as long as they stay on your site, but it's better than nothing).
  • Profile picture of the author Michael71
    I would go with cookies and PHP sessions, too.

    All those scripts just check the UA, route to the websites and saving preferences can only be done via cookies. If no cookie is saved...
  • Profile picture of the author dougbrysun
    If you follow these instructions you will have a functioning mobile redirect on your site:

    First, go to the following URL and download the mobile_detect.php file:

    php-mobile-detect - The lightweight PHP class for detecting mobile devices. - Google Project Hosting

    Next, follow the instructions on the page, and upload the mobile_detect.php to your root directory.
    Dougbrysun..
    • Profile picture of the author MagicAce
      This is what I use and it works very well:


      On the dekstop website:


      <?php
      function is_mobile(){
      $regex_match="/(nokia|iphone|android|motorola|^mot\-|softbank|foma|docomo|kddi|up\.browser|up\.link|";
      $regex_match.="htc|dopod|blazer|netfront|helio|hos in|huawei|novarra|CoolPad|webos|techfaith|palmsour ce|";
      $regex_match.="blackberry|alcatel|amoi|ktouch|nexi an|samsung|^sam\-|s[cg]h|^lge|ericsson|philips|sagem|wellcom|bunjalloo|ma ui|";
      $regex_match.="symbian|smartphone|midp|wap|phone|w indows ce|iemobile|^spice|^bird|^zte\-|longcos|pantech|gionee|^sie\-|portalmmm|";
      $regex_match.="jig\s browser|hiptop|^ucweb|^benq|haier|^lct|opera\s*mob i|opera\*mini|320x320|240x320|176x220";
      $regex_match.=")/i";
      return isset($_SERVER['HTTP_X_WAP_PROFILE']) or isset($_SERVER['HTTP_PROFILE']) or preg_match($regex_match, strtolower($_SERVER['HTTP_USER_AGENT']));
      }

      switch($_GET['mode'])
      {
      case 'mobile':
      $mode = "mobile";
      break;
      case 'desktop':
      $mode = "desktop";
      break;
      default:
      $mode = is_mobile() ? "mobile" : "desktop";
      break;
      }

      if ($mode == "mobile")
      {
      header ("Location: http://www.m.mainsite.com");
      return;
      }
      ?>

      On the mobile website:

      <a href="http://www.mainsite.com/?mode=desktop">Full Site</a>
  • Profile picture of the author noxid101
    I found the redirect script from Mobile Web Pro works well for this. But I have it set so only the home page is redirected so if you click "see full site" from your mobile device you can still visit the other pages without being redirected.

    I created a duplicate home template called "homeR" and this makes it so only the home page redirects. The mobile site has a link that forces the home page to load.

    PM me and I'll show you the details of how I do it.
    • Profile picture of the author ASUService
      Originally Posted by noxid101 View Post

      I found the redirect script from Mobile Web Pro works well for this. But I have it set so only the home page is redirected so if you click "see full site" from your mobile device you can still visit the other pages without being redirected.

      I created a duplicate home template called "homeR" and this makes it so only the home page redirects. The mobile site has a link that forces the home page to load.

      PM me and I'll show you the details of how I do it.
      I have to give a thumbs up for this method. This is what I've recommended to my clients for quite a while.
  • Profile picture of the author EZE522
    .htaccess code I added

    RewriteEngine on
    RewriteBase /

    # Check if this is the noredirect query string
    RewriteCond %{QUERY_STRING} (^|&)m=0(&|$)
    # Set a cookie, and skip the next rule
    RewriteRule ^ - [CO=mredir:0:www.fullsite.com]

    RewriteCond %{HTTP:x-wap-profile} !^$ [OR]
    RewriteCond %{HTTProfile} !^$ [OR]
    RewriteCond %{HTTP_USER_AGENT} android.+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iem obile|ip(hone|od)|iris|kindle|lge\ |maemo|midp|mmp|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 [NC,OR]
    RewriteCond %{HTTP_USER_AGENT} ^(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|b umb|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|e\-|e\/|\-[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|d o|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(4 0|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|xda(\-|2|g)|yas\-|your|zeto|zte\-) [NC]

    # Check if we're not already on the mobile site
    RewriteCond %{HTTP_HOST} !^m\.
    # Can not read and write cookie in same request, must duplicate condition
    RewriteCond %{QUERY_STRING} !(^|&)m=0(&|$)

    # Check to make sure we haven't set the cookie before
    RewriteCond %{HTTP_COOKIE} !^.*mredir=0.*$ [NC]

    # Now redirect to the mobile site
    RewriteRule ^ http://m.mobilewebsite.com [R,L]

Next Topics on Trending Feed