0

私はデータベースと同じようにモバイルのものにすることを選択したので、それは私のページ/コードを取得することができません.それが良いアイデアなのか、それとも何かアイデアがありますか? ..

私がやりたいのは、それがモバイルかどうか、またはログオンしているブラウザだけかどうかを調べることです。

function db_c()
     {
         $link = @mysqli_connect('localhost', '..', '..', '..');
         if(!$link)
         {
             die('Connect Error: ' . mysqli_connect_errno());
         }
         mysqli_set_charset($link, "utf8");
         $this->mysqli = $link;


         function detect_mobile($ua=null) {
             $ua = ($ua) ? $ua : $_SERVER['HTTP_USER_AGENT'];    
             return (preg_match('/(alcatel|amoi|android|avantgo|blackberry|benq|cell|cricket|docomo|elaine|htc|iemobile|iphone|ipad|ipaq|ipod|j2me|java|midp|mini|mmp|mobi|motorola|nec-|nokia|palm|panasonic|philips|phone|playbook|sagem|sharp|sie-|silk|smartphone|sony|symbian|t-mobile|telus|up\.browser|up\.link|vodafone|wap|webos|wireless|xda|xoom|zte)/i', $ua));    
         }


         if(detect_mobile($ua) ) {
            header('Location: http://mobil.blabla.dk/');
         }
         else{
             header('Location: http://www.blabla.dk/');
         }
 }

エラー彼女:

Notice: 未定義の変数: 39 行目の /home/jesperbo/public_html/blabla.dk/inc/function_php/function.php の ua 警告: ヘッダー情報を変更できません - ヘッダーは既に送信されています (出力は /home/jesperbo/public_html/ で開始されます) blabla.dk/inc/function_php/function.php:39) /home/jesperbo/public_html/blabla.dk/inc/function_php/function.php の 43 行目

39行目は次のとおりです。

 if(detect_mobile($ua) ) {

43行目は次のとおりです。

header('Location: http://www.blabla.dk/');

私はこれを手に取ろうとしますが、次に進み、ページに何も表示されませんhttp://dk1.php.net/manual/en/function.ob-start.php

私がこのようにした場合:

function detect_mobile($ua=null) {
             $ua = ($ua) ? $ua : $_SERVER['HTTP_USER_AGENT'];    
             return (preg_match('/(alcatel|amoi|android|avantgo|blackberry|benq|cell|cricket|docomo|elaine|htc|iemobile|iphone|ipad|ipaq|ipod|j2me|java|midp|mini|mmp|mobi|motorola|nec-|nokia|palm|panasonic|philips|phone|playbook|sagem|sharp|sie-|silk|smartphone|sony|symbian|t-mobile|telus|up\.browser|up\.link|vodafone|wap|webos|wireless|xda|xoom|zte)/i', $ua));    
         }


         if(detect_mobile() ) {
            header('Location: http://mobil.blabla.dk/');
         }
         else{
             header('Location: http://www.blabla.dk/');
         }

次のように表示されます。

Denne webside har et loop ved omdirigering Websiden på blabla.dk/ har forårsaget for mange omdirigeringer. デッテ・カン・マリグビスは、ティラーデ・トレジェパートクッキーでデッテ・ウェブサイト・エラー・ヴェーディングのリディ・ダイン・クッキーでヴェドを失います. この問題を解決するには、サーバーの構成とコンピューターの問題を解決する必要があります。Her er nogle forslag: Genindlæs denne webside senere. Få flere oplysninger om dette problem. Fejl 310 (net::ERR_TOO_MANY_REDIRECTS): mange omdirigeringer の Der var。

http://billedeupload.dk/images/fOUIQ.png

したがって、$ua をさらによく使うと、最後にここに表示されます。

あなたが私を助けてくれることを願っています:)

4

3 に答える 3

1

モバイルか通常かを検出するには、http://detectmobilebrowsers.com/をチェックする必要があります。ほとんどのコーディングで検出器をダウンロードできます。

これは決して100%確実ではないことに注意してください。モバイル コンピューターのユーザーは、通常のブラウザーと同じように閲覧できます。また、モバイル ブラウジングがモバイルであっても、ユーザーは通常のサイトを見たいと思うかもしれません。

検出は良いことですが、ユーザーに選択肢を与えるようにしてください。

Header already send は、ブラウザへの出力があったことを意味します。ob_start();この問題が発生しないように、すべての出力をキャッチするように出力バッファリングを使用できます。ただし、出力がないことを確認することをお勧めします。<?php ?>これは、インクルードされたファイルのタグの外側にスペースや改行がないことも意味します。

于 2012-12-27T12:46:20.503 に答える
0

まず、実際の出力の前にリダイレクトを行う必要があります。

あなたの場合、すでにクライアントに送信されたコンテンツがいくつかあるため、ユーザーをリダイレクトできません。

したがって、次のようにする代わりに:

<? 
db_c();
detect_mobile();
// other stuff
?>

そのようにしてください:

<?
    detect_mobile();
    db_c();
    //other stuff
?>

また、ユーザーがデスクトップ ブラウザを使用しているか、携帯電話/タブレットなどを使用しているかを確認するには、次のクラスを使用します: php-mobile-detection

そして、次のように使用できます。

include 'Mobile_Detect.php';
$detect = new Mobile_Detect();
if ($detect->isMobile()) {
    // redirect here
}
于 2012-12-27T12:49:24.367 に答える
0

行を変更します。

if(detect_mobile($ua) ) {

に:

if(detect_mobile() ) {

detect_mobileユーザー エージェントを自分で指定しない場合は、このメソッドがユーザー エージェントを指定します。

于 2012-12-27T12:47:05.330 に答える