0

ダウンロードページをより使いやすくするために、使用されているデバイスを識別できるようにするために、php-mobiledetectと呼ばれる小さなスクリプトを使用しています。

使用しているコードに問題があります。これをコンピューターで実行すると目的の値が出力されますが、モバイルデバイス(私が自由に使えるデバイスはiPhoneです)でコードにアクセスすると、$deviceType未定義であるというPHPエラーが発生します。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を使うとき、(明らかに)設定されていません。エラーを取り除く1つの方法は$deviceType、上部で宣言することです。ただし、これで問題が完全に解決するわけではありません(iPhoneはまだ検出されていません)。

Mobile-Detectのドキュメントを見ると、isPhone()どこにも表示されません。これは本当の関数ですか?

-

(おそらく)あなたの問題とは無関係ですが、if / elsesの各グループの後に一般的なステートメントを追加して、何らかの理由でまたはelseを満たさないケースをキャッチすることもできます。実際、私はそれらを取り除き、ただ使用します。isGenericPhone()isGenericTablet()else

ちなみに、代替のif / else構文は煩わしく、コードを読みにくくします。

于 2012-11-14T18:49:44.997 に答える