当移动网站版本使用PHP工作时,如何检测桌面网站?

时间:2014-03-11 00:44:08

标签: php .htaccess mobile responsive-design browser-detection

我下载了一个网站模板,其中包含适用于移动设备和桌面的单独布局。我将文件上传到服务器,我的移动网站工作正常,但我的桌面网站不起作用。桌面网站给我一个“内部服务器错误”。我的错误日志指出:“标题之前的脚本输出结束:index.php”。我试过搞乱.htaccess文件,但我不认为这是问题所在。

我的index.php文件包含两个PHP文件,可帮助检测要使用的布局。这两个文件是config.php和detect.php,它们位于名为“app”的文件夹中。

的index.php

<?php
include "app/config.php";
include "app/detect.php";

if ($page_name=='') {
include $browser_t.'/index.html';
}
elseif ($page_name=='index.html') {
include $browser_t.'/index.html';
}
elseif ($page_name=='home.html') {
include $browser_t.'/home.html';
}
elseif ($page_name=='features.html') {
include $browser_t.'/features.html';
}
elseif ($page_name=='about.html') {
include $browser_t.'/about.html';
}
elseif ($page_name=='demo.html') {
include $browser_t.'/demo.html';
}
elseif ($page_name=='contact.html') {
include $browser_t.'/contact.html';
}
elseif ($page_name=='contact-post.html') {
include $browser_t.'/contact.html';
include 'app/contact.php';
}
else
{
    include $browser_t.'/404.html';
}

?>

应用程序/ config.php中

<?php
$current_page_uri = $_SERVER['REQUEST_URI'];
$part_url = explode("/", $current_page_uri);
$page_name = end($part_url);
$email_id = "w3layouts@gmail.com";
?>

app / detect.php

<?php
$userBrowser = $_SERVER['HTTP_ACCEPT']; 
if(stristr($userBrowser, 'application/vnd.wap.xhtml+xml')) 
{
$_REQUEST['wap2'] = 1;
}

elseif(stripos($_SERVER['HTTP_USER_AGENT'],"iPod"))
{
$_REQUEST['iphone'] = 1;

}
elseif(stripos($_SERVER['HTTP_USER_AGENT'],"iPhone"))
{
$_REQUEST['iphone'] = 1;

}
elseif(stripos($_SERVER['HTTP_USER_AGENT'],"Android"))
{
$_REQUEST['Android'] = 1;

}
elseif(stripos($_SERVER['HTTP_USER_AGENT'],"IEMobile"))
{
$_REQUEST['IEMobile'] = 1;

}
elseif(stristr($userBrowser, 'DoCoMo/' || 'portalmmm/'))
{
$_REQUEST['imode'] = 1;
}

elseif(stristr($userBrowser, 'text/vnd.wap.wml')) 
{
$_REQUEST['wap'] = 1;
}
elseif(stristr($userBrowser, 'text/html')) 
{
$_REQUEST['html'] = 1;
}


 if(!defined('WAP'))
         define('WAP', isset($_REQUEST['wap']) || isset($_REQUEST['wap2']) ||   isset($_REQUEST['imode'])|| isset($_REQUEST['html'])|| isset($_REQUEST['Android'])|| isset($_REQUEST['iphone'])|| isset($_REQUEST['IEMobile']));

if (WAP)
{
define('WIRELESS_PROTOCOL', isset($_REQUEST['wap']) ? 'wap' : (isset($_REQUEST['wap2']) ? 'wap2' : (isset($_REQUEST['iphone']) ? 'iphone' : (isset($_REQUEST['imode']) ? 'imode' : (isset($_REQUEST['IEMobile']) ? 'IEMobile' :(isset($_REQUEST['html']) ? 'html' : (isset($_REQUEST['Android']) ? 'Android' : '')))))));  

if (WIRELESS_PROTOCOL == 'wap')
  {
$browser_t = "mobile";
  }
elseif (WIRELESS_PROTOCOL == 'wap2')
  {


$browser_t = "mobile";


  }
elseif (WIRELESS_PROTOCOL == 'imode')
  {

$browser_t = "mobile";

  }
  elseif (WIRELESS_PROTOCOL == 'iphone')
  {


$browser_t = "smartphone";

  }
  elseif (WIRELESS_PROTOCOL == 'Android')
  {


$browser_t = "smartphone";

  }
   elseif (WIRELESS_PROTOCOL == 'IEMobile')
  {

$browser_t = "smartphone";

  }
  elseif (WIRELESS_PROTOCOL == 'html')
  {

 $mobile_browser = '0';

if(preg_match('/(up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone)/i',
strtolower($_SERVER['HTTP_USER_AGENT']))){
$mobile_browser++;
}

if((strpos(strtolower($_SERVER['HTTP_ACCEPT']),'application/vnd.wap.xhtml+xml')>0) or 
((isset($_SERVER['HTTP_X_WAP_PROFILE']) or isset($_SERVER['HTTP_PROFILE'])))){
$mobile_browser++;
}

$mobile_ua = strtolower(substr($_SERVER['HTTP_USER_AGENT'],0,4));
$mobile_agents = array(
'w3c ','acs-','alav','alca','amoi','audi','avan','benq','bird','blac',
'blaz','brew','cell','cldc','cmd-','dang','doco','eric','hipt','inno',
'ipaq','java','jigs','kddi','keji','leno','lg-c','lg-d','lg-g','lge-',
'maui','maxo','midp','mits','mmef','mobi','mot-','moto','mwbp','nec-',
'newt','noki','oper','palm','pana','pant','phil','play','port','prox',
'qwap','sage','sams','sany','sch-','sec-','send','seri','sgh-','shar',
'sie-','siem','smal','smar','sony','sph-','symb','t-mo','teli','tim-',
'tosh','tsm-','upg1','upsi','vk-v','voda','wap-','wapa','wapi','wapp',
'wapr','webc','winw','winw','xda','xda-');

if(in_array($mobile_ua,$mobile_agents)){
$mobile_browser++;
}
if (strpos(strtolower($_SERVER['ALL_HTTP']),'OperaMini')>0) {
$mobile_browser++;
}
    if (strpos(strtolower($_SERVER['HTTP_USER_AGENT']),'iemobile')>0) {
$mobile_browser++;
}
if (strpos(strtolower($_SERVER['HTTP_USER_AGENT']),'windows')>0) {
$mobile_browser=0;
}


if($mobile_browser>0){

// do something wap

$browser_t = "mobile";

}
// non-mobile
else
{

$_SESSION['Browser_d'] = "web";
$browser_t = "web";

}
   } else {

     // do something else html

$_SESSION['Browser_d'] = "web";
$browser_t = "web";
    }

  }


else
{
$mobile_browser = '0';

 if(preg_match('/(up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone)/i',
strtolower($_SERVER['HTTP_USER_AGENT']))){
$mobile_browser++;
}

if((strpos(strtolower($_SERVER['HTTP_ACCEPT']),'application/vnd.wap.xhtml+xml')>0) or 
((isset($_SERVER['HTTP_X_WAP_PROFILE']) or isset($_SERVER['HTTP_PROFILE'])))){
$mobile_browser++;
}

$mobile_ua = strtolower(substr($_SERVER['HTTP_USER_AGENT'],0,4));
$mobile_agents = array(
'w3c ','acs-','alav','alca','amoi','audi','avan','benq','bird','blac',
'blaz','brew','cell','cldc','cmd-','dang','doco','eric','hipt','inno',
'ipaq','java','jigs','kddi','keji','leno','lg-c','lg-d','lg-g','lge-',
'maui','maxo','midp','mits','mmef','mobi','mot-','moto','mwbp','nec-',
'newt','noki','oper','palm','pana','pant','phil','play','port','prox',
'qwap','sage','sams','sany','sch-','sec-','send','seri','sgh-','shar',
'sie-','siem','smal','smar','sony','sph-','symb','t-mo','teli','tim-',
'tosh','tsm-','upg1','upsi','vk-v','voda','wap-','wapa','wapi','wapp',
'wapr','webc','winw','winw','xda','xda-');

if(in_array($mobile_ua,$mobile_agents)){
$mobile_browser++;
}
if (strpos(strtolower($_SERVER['HTTP_USER_AGENT']),'iemobile')>0) {
$mobile_browser++;
}
if (strpos(strtolower($_SERVER['ALL_HTTP']),'OperaMini')>0) {
$mobile_browser++;
}
if (strpos(strtolower($_SERVER['HTTP_USER_AGENT']),'windows')>0) {
$mobile_browser=0;
}


    if($mobile_browser>0){
       // do something wap

$browser_t = "mobile";

}
// non-mobile
else
{
$_SESSION['Browser_d'] = "web";
$browser_t = "web";
}

}
 ?>

我认为错误发生在detect.php文件中,但我不确定如何修复它。再次,移动网站工作,桌面网站不起作用。在进行故障排除时,我能够让桌面工作,但只有当我删除了detect.php文件中的所有内容并离开时:

<?php $_SESSION['Browser_d'] = "web";
$browser_t = "web";?>

非常感谢你的帮助。

谢谢,

乔恩

0 个答案:

没有答案