Reputation: 105
I have a website that looks pretty good on mobile (iPhone devices). but the only thing that is off putting is the header when viewed on mobile!
the website is written in PHP. and the header of the site is template based. its called header.php in template folder.
i was wandering if it is possible to only change the header.php of the website if someone is viewing the site from a mobile phone instead of creating the whole site for mobile devices (mobile friendly website)?
I know I can divert the users to the mobile version of the website if i wanted to but I rather just change the header.php if someone's viewing it from a handset.
Thanks
EDIT
WOW GUYS, i'm spoilt for choices now. Thank you very much for all the answers.
can i select more than one answer here?
Upvotes: 1
Views: 1153
Reputation: 1850
Try this
<?php
if(strstr($_SERVER['HTTP_USER_AGENT'],'iPhone') || strstr($_SERVER['HTTP_USER_AGENT'],'iPad')) {
include "mobile_header.php";
} else {
include "desktop_header.php";
}
?>
EDIT thanks to @silentboy for pointing my mistake. changed.
Upvotes: 3
Reputation: 13606
$useragent=$_SERVER['HTTP_USER_AGENT'];
if(preg_match('/(android|bb\d+|meego).+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|series(4|6)0|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(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)))
{
// display mobile header
}
else{
// display standard header
}
Upvotes: 1
Reputation: 602
You can use the server-side solutions that were just proposed or you can use media-queries to change the styles of the header to fit mobile.
@media only screen and (max-device-width: 480px) {
...
}
Use this to add styles that are optimized for mobile. Either change the width, padding, sizes, etc. or you can hide certain markup that you don't want visible on mobile devices.
Just another option. :)
Upvotes: 0
Reputation: 16369
Have you heard of php-mobile-detect?
Makes it real easy to do this kind of stuff.
include 'Mobile_Detect.php';
$detect = new Mobile_Detect;
if($detect->isiPhone()){
// require different header
} else {
// require standard header
}
I would plug it into a $_SESSION
variable and check it with if(!isset($_SESSION['iPhone']))
so its only called once. I do this kind of thing for different mobile operating system versions too, its very handy and they keep it up to date.
Upvotes: 1
Reputation: 6416
You can use a device detection library for this and conditionally display the proper header file. Here is a good one: http://code.google.com/p/php-mobile-detect/.
Upvotes: 1