0

我正在使用一个名为php-mobile detect的小脚本来识别正在使用的设备,从而使下载页面更加友好。

我正在使用的代码有一些问题。在计算机上运行此程序时,会输出所需的值,但是,当访问移动设备上的代码时(我可以使用的设备是 iPhone),我收到一个 PHP 错误,指出$deviceType未定义。我有一种强烈的感觉,我在声明中做错了什么if

<?php
require_once 'Mobile_Detect.php';
$detect = new Mobile_Detect;
//Detect Platform
if($detect->isMobile()):

    if($detect->isPhone()):
        if($detect->isiPhone()):
            $deviceType = 'iPhone';
        elseif($detect->isAndroid()):
            $deviceType = 'Android Phone';
        elseif($detect->isWindowsPhoneOS()):
            $deviceType = 'Windows Phone';
        elseif($detect->isGenericPhone()):
            $deviceType = 'Phone';

    endif;//End if Phone

    elseif($detect->isTablet()):
        if($detect->isiPad()):
            $deviceType = 'iPad';
        elseif($detect->isAndroid()):
            $deviceType = 'Android Tablet';
        elseif($detect->isKindle()):
            $deviceType = 'Kindle';
        elseif($detect->isGenericTablet()):
            $deviceType = 'Tablet';
    endif;//End ifTablet

endif;//End ifMobile

//If not mobile it must be a computer
else:
    $deviceType = 'computer';
endif;// End Detect Platform

?>

<p>This is a <b><?php echo $deviceType; ?>

任何帮助将不胜感激。

问候,

伊恩

4

1 回答 1

0

$deviceType(显然)在您使用 iPhone 时没有设置。消除错误的一种方法是$deviceType在顶部声明。不过,这并不能完全解决您的问题(您的 iPhone 仍未被检测到)。

查看 Mobile-Detect 的文档,我看不到isPhone()任何地方。这是一个真正的功能吗?

--

(可能)与您的问题无关,但您可能还想else在每组 if/else 之后添加一个通用语句,以捕获任何情况,无论出于何种原因,不满足isGenericPhone()or isGenericTablet()。事实上,我会摆脱那些并只使用else.

顺便说一句,替代 if/else 语法很烦人,并且使代码难以阅读。

于 2012-11-14T18:49:44.997 回答