Hi, Firstly this is a fantastic browser redirect .php code. Secondly, I'm quite curious as to how I might go about making it IE6, 7, and (8/9) specific on the redirect. Rather than just MSIE redirect. Which will re-direct 5, 6, 7, 8 and 9 to my desired page. etc. Thank you for your time and help.
Seriously - you have a different version of your page based on that level of detail? Are you sure it wouldn't be better handled by just changing a part of the page depending on the browser? And use browser hacks to make the page look right? BTW use IETester to view your site in the different versions.
Thank you Sarahk for your reply. I know it sounds excessive. Basically the website uses HTML5 on the home page, I've got the site setup so it redirects to Safari with a .mp4 video instead of the .ogv which plays in Chrome, Opera and Firefox. But my problem is, I would like it really so I could have it re-direct to IE 9 and then a specific page for IE 8 & 7, then another with anything from IE 6.0 and below to direct to a specific page that fits that browsers capabilities. My client is really rather picky, and dosen't seem to understand the complications with IE6 these day. Though I am currently re-editing part of the css for the website to suit IE 6, which should be done by tomorrow, and therefore shall only work when IE6 is detected. This only relates to the .png images in terms of the transparency issues, which can be found with IE6. etc. The website is http://ArcticRabbit.com At the moment: Chrome, Firefox and Opera: /HOME/ Safari shall go to: /HOME-Safari/ MSIE: /HOME-IE6and7/ As the MSIE version is a static picture with a link rather than video on IE7 + my client isn't happy. And thus wants it to have the video working on IE7 and above. Though obviously IE7 & 8 work differently with video, and I have been testing out this with it, though as you would expect it isn't as user friendly, though what would you expect I guess. <object> <embed type="application/x-mplayer2" pluginspage="http://www.microsoft.com/windows/windowsmedia/default.aspx" width="898" height="430" src="http://arcticrabbit.com/MEDIA/ARP-Ident.mp4" showcontrols="True" showstatusbar="False" showdisplay="False" autorewind="True" wmode="transparent" AutoStart="True"> </embed> </object> and IE 9 is a lot easier and less tedious with HTML5 support, when implementing it into the site I find. Though obviously the other option for the above is to of course use flash. Though, anyone whom has IE7 and below is very unlikely to be one to update their software and applications often. Thus that could a snag, in compatibility. And most IE6 user are used to not having all content working, which is why that must be static. So to create the best and most professional image/experience possible. Also another issue, I actually just noticed is Chrome on Windows. Thus I need a re-direct for that also I think, within the same php. I've been using Adobe Browser Labs mainly, and BrowserShots. 'Mac' user. lol As well as a not so new Windows Samsung Laptop. Thanks for you help.
That's fair enough but have you looked at the traffic stats to see if IE6 is actually being used? I just looked at my busiest site and IE is used on 56% of visits but when I drill down and look at IE6 its only 3% of the IE visits. The "return on investment" will be minimal if I spent my client's money focusing on those laggards. In the meantime I'd boot up IETester with a test page that just echo's out $_SERVER ['HTTP_USER_AGENT']) and see what the differences are and build that into your switch statement
Thanks for this code snippet, just had a similar need where the differences between Chrome, FF and IE do't stack up, and a simple ccs coding doesn't do the job anymore, so a dedicated HTML page has had to be created for not only Browser, but display sizes so as to cover 4:3 16:9 ratio screens... Anyway, using your example, I have developed the php to provide feedback for browser type, build and screen resolution. Hope you find this adaptation of use, if anyone improves on it, welcome the improvements as only spent 1hr on this so haven't had the opportunity to specify all the options for the many browser types - so currently is only developed fully for Chrome, IE and FF enjoy:: // Start of code snippet ///////////////////////////////////////////////////////////////////////////// // Code SNIPPET :: Source :: http://stackoverflow.com/questions/6660649/mobile-or-desktop-browser-detection-and-redirect-to-respective-web-page // Added 14 0220 // need to identifly different browsers so as to display correct Window/Div sizing! $USER_AGENT = explode('/', $_SERVER ['HTTP_USER_AGENT']); print_r ($USER_AGENT); echo "\n\n"; /* Eliminate IE */ if (strpos($USER_AGENT[1], 'MSIE') !== false ){ // echo "Browser => TEST"; } $browserDetect = explode (" ",$USER_AGENT[2]); //print_r ($browserDetect); // Need to swop around the Keys so that the Browser is the first key in the array - makes things easier with detecting $browserDetect = array_reverse ($browserDetect); //print_r ($browserDetect); /* Redirection */ switch ($browserDetect[0]) { case 'Mozilla' : echo "Browser => Mozilla"; break; case 'Chrome' : echo "\nBrowser => Chrome"; // build = $browserBuild = explode (" ",$USER_AGENT[3]); echo "\nBuild => ".$browserBuild[0]; break; case 'Firefox' : echo "Browser => Firefox"; // build = echo "\nBuild => ".$USER_AGENT[3]; break; case 'Gecko' : echo "Browser => IE"; // build = $browserBuild = explode (" ",$USER_AGENT[2]); echo "\nBuild => ".$browserBuild[2]; break; case 'Opera' : echo "Browser => Opera"; break; case 'Googlebot' : echo "Browser => Googlebot"; break; case 'msnbot' : echo "Browser => msnbot"; break; case 'Safari' : echo "Browser => Safari"; break; default : echo "Browser => Unsure what browser your using?"; break; }; // Added 14 0220 /// Source:: http://en.kioskea.net/faq/1251-php-detect-the-display-resolution // Needed to set the Viewer Screen for FF and IE if(!isset($_GET['r'])) { echo "<script language=\"JavaScript\"> <!-- document.location=\"$PHP_SELF?r=1&width=\"+screen.width+\"&Height=\"+screen.height; //--> </script>"; } else { // Code to be displayed if resolutoin is detected if(isset($_GET['width']) && isset($_GET['Height'])) { echo "screen size: ".$_GET['width']."x".$_GET['Height']; } else { // Resolution not detected } } // End of code snippet ///////////////////////////////////////////////////////////////////////////// PHP:
Different screen ratios? Really? Even so, that can be solved with @media-queries directly in CSS - no need to sniff browsers for that. And for the IE6-client. Inform your client that IE6 is no longer even supported from MS, and should NOT BE CATERED FOR. Or, better yet, tell the client he's wrong, and refuse to spend time creating bloated code-solution for something that shouldn't be an issue. People still using IE6 gets told they need to f*cking upgrade, and that's it. Simple. I'm no longer really in the game of developing public websites, but it's quite simple: just tell the client that you will implement support for FF, Chrome, Safari, Opera and IE, but only IE 11,10, 9 and maybe 8 - anything older than that will have to deal with whatever issues shows up, if the client wants "fancy stuff". Of course, fix what can be fixed, but don't spend hours fixing broken software of which you have no control.
I was just about to suggest the switch for performance and tidiness. I personally would use preg_match() and avoid UNDEFINED VARIABLE issues though.... if (!empty($_SERVER['HTTP_USER_AGENT'])) { $USER_AGENT = explode('/', $_SERVER['HTTP_USER_AGENT']); } else { $USER_AGENT = 'MSIE'; // default to show if no agent sent. } PHP: also instead of using isset() you should be using !empty() if(!empty($_GET['width']) && !empty($_GET['Height'])) { PHP:
Point understood, but have been developing css sites since 1997, so know all the limitations. But many "manufacturing" company's may use new technology in the works process, but when it comes to office/ admin software - many still rely on what we would consider obsolete s/w, using WORD/ OFFICE 2003, NT XP and IE 6 and 7 etc, Why - Because it works, Works well and does its Job! Furthermore the fact that it is outdated, doesn't mean it cannot still do its job. In many cases the reverse is so true. I myself, code using NotePad, that dates from 1992, it works, does the job, rarely crashes etc etc. Above all it applies to the KISS mode of working. So different screen sizes - Yes, in this case we need to have the ability to READ the different screen sizes, due to the BUGS in Chrome FF and IE all to do with the different interpretations of the BOX model (still) and 100% scaling of divs within divs, and the use of a sticky footer. Chrome is the most accurate rastering of CSS5 WC3 code, whereas IE & FF still do their own and very weird things. In this case the screen sizes are taken using JS, then set as a php variable, all to set the size of a div within a fluid layout, that works GREAT in Chrome, but FF & IE, does not know what a 100% of a display area is still?? So I haven't been trying to fix OLD s/w that I have no control over, its the latests Browser versions that still do their own things, regardless of WC3 so called conventions. Thought quirky mode was dead and buried, but still keep on finding its ghosts.
Thanks for this UPDATE Will implement, was as said put this together in an hour or so, so used code snippets, which worked. But, as you have pointed out there are always alternative ways of doing things, each with its own merits. thank you
Nothing like a bump of a four year old topic filled with idiotic nonsense that has NO business being done on a website in the first place! Anyone DUMB ENOUGH to pull stupid stunts like browser sniffing (and that's the proper term for this) needs to do the world a favor, back the **** away from the keyboard, and not come back until they know how to do it without such idiocy and ineptitude. If you need to sniff out what browser is running -- client side or server-side -- as opposed to capabilities detection -- you don't know enough about HTML, CSS or server-side languages like PHP to be doing anything relating to web development!
deathshadow, you really need to get laid... take anger management classes in the least. You haven't stopped to think that there MIGHT have been a good reason for someone to want to do this and really if this bothers you... the bump or the post content... you really need help.
What? You're still supporting IE5?!? There are no "different interpretations of the box model" worth mention -- if you're having problems you likely either don't have a doctype, or just don't know what you are doing. (probably still sleazing out 1997 style HTML 3.2 and slapping 4 tranny of 5 lip-service around it too!) Not sure what that even means, though I would suspect things like equal-width equal-height boxes, which have no business on a website in the first place. If you mean always on screen, see "shit that doesn't belong on a website", if you mean a 100% min-height layout, it's not rocket science if you can fix the footer height. If you can't fix the footer height, these days I say use flex-box and then "who gives a ****" if it's not flush at the bottom on IE9/earlier. It's too easy to get obsessed on being "perfect" on older browsers. Someone can't join us in THIS century give them a degraded but fully functional page. They ask "why" you tell them "because you still have your head wedged up the previous decade's backside!" I hope that's dyslexia, since there is no such thing as CSS5 and I'm not sure what Commander Blair, Angel and Paladin have to do with anything. Though I will concede you that point -- but browser sniffing is NOT the answer. admittedly, I don't think IE conditional comments are the answer either.
Sorry, but seeing the same mistakes made year after year, and now decade after decade wears really thin -- especially when it's about promoting ineptitude and outright broken methodology. History bears this out -- from "bork bork bork" to "BoA + Opera 10 = Opera 1.0" to Compass vs. FF, vs every other time browser sniffing has resulted in a website ending up being the equivalent of CENTER + FONT... "two tags, one cup". Though I have zero tolerance for the whole namby pamby limp wristed "if you can't say anything nice" asshattery. Status quo FTMFW is no way to have actual progress or make anything better; that trash can go right back where it belongs around the drum circle with everyone singing kumbaya. Slapping the rose coloured glasses on everyone's heads to lead them down the garden path is NOT the path to doing things properly, efficiently, or having anything remotely resembling improvement! No, I don't want to buy a pencil! ... and if I did I'd sharpen it in your... If anyone is butthurt over anything I say, they probably needed to be butthurt and take a good long look in the mirror... and MAYBE call the orthodontist to help extract their head from 1997's backside... since to be frank, if you don't grasp what I've said you're most likely tonguing the 1990's tonsils the same long route Lemmiwinks had to take. That's because there isn't one if you care about accessibility, and use good programming practices like semantic markup, separation of presentation from content, and progressive enhancement -- giving you device neutrality, accessibility and graceful degradation. I call halfwit BS halfwit BS when I see it. I'm sick to death of all these inaccessible slow loading broken script-tard websites that are less useful than the web was 20 years ago, taking longer to load on 45mbps fiber than the same content would have taken at 56K back then... and it's buggy broken non-future-proof nonsense like this entire topic that causes them. Or as George Bernard Shaw put it: "The reasonable man adapts himself to the world: the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man." Beware of the man who does not return your blow: he neither forgives you nor allows you to forgive yourself.