1

このページの手法を使用して、単純なモバイル/デスクトップリダイレクトを設定しています。また、モバイルサイトにCookieを設定して、ユーザーがデスクトップサイトにリンクし直したい場合に、そのCookieが読み取られ、リダイレクトが行われないようにします。私はWordpressサイトを扱っていますが、リダイレクト機能しますが、Cookieは正しく機能していません。これが起こっていることです:

  • モバイルリダイレクト機能します
  • Cookieが正常に設定されました(WP外のテストページで確認済み)
  • ユーザーがクリックしてデスクトップサイトに戻ると、Cookieは表示され、ユーザーは再びモバイルサイトにダンプされます。

2つの外部静的ページを使用してコードをテストしましたが、すべてが100%機能します。Wordpressでまったく同じコードを使用する場合は違います。各サイトのheader.phpファイルからの私のコードは次のとおりです。

デスクトップサイト

<?php
    include('Mobile_Detect.php');
    $detect = new Mobile_Detect();
    if ( $detect->isMobile() && isset($_COOKIE["mobile"]) ) {
         $detect = "false";
    }
    else if ( $detect->isMobile() ) {
         header("Location:http://m.example.com");
    }
?>

モバイルサイト

<?php setcookie('mobile','m', time()+3600, '/','.example.com'); ?>

PHPコードは、ファイル内の最初のものであり、HTMLの前にあり、その前後に誤った空白はありません。私はいくつかのテキストをエコーすることによってこのコードをテストしました、そしてスクリプトそこにありそしてそれがすべきことをします。Cookieが表示されず、モバイルサイトへのリダイレクトが正常に停止するという問題が1つだけあります。

何時間も経ったら、助けが必要です!

4

3 に答える 3

1

同じページでCookieを設定する場合は、Cookieの値を変数に割り当てます。すなわち:

$cookievalue = "m";
setcookie("mobile",$cookievalue);

次に、ページの後半で、次のことができます。

if ( $detect->isMobile() && $cookievalue == "m" ) {
      $detect = "false";
}
else if ( $detect->isMobile() ) {
     header("Location:http://m.example.com");
}
于 2012-06-25T22:06:28.757 に答える
1

あなたのコードは問題ないように見えます-Mobile_Detectに問題がない限り、あなたが言ったように、設定されているCookieがどのように考慮されているかはわかりません。

私はあなたがモバイルブラウザ、あるいはおそらくプライバシー設定の問題を見ているかもしれないという推測を危険にさらすでしょう。標準のCookieを設定するだけでなく、Sessionを使用してみてください。これにより、とにかくすべてのCookieが機能します。

使用するだけです(標準のCookieの場合のように、コードの最初でhtmlなどは使用しないでください)。

Session_start();
if ( isset($_SESSION["mobile"]) ) {

コードのそのビットに対して実際に検出を実行する必要はありません。Cookie/セッション配列は、まだ取得されていない場合、「モバイル」インデックスを保持していません。

代わりに;

<?php setcookie('mobile','m', time()+3600, '/','.example.com'); ?>

使用する;

<?php
Session_start();
$_SESSION['mobile'] = (bool) true;
$_SESSION['m'] = (bool) true;
$_SESSION['time'] = (int) time()+3600;

などなど。(Session_start();は、このCookieを使用するすべてのページの先頭にある必要があることに注意してください!)

ブラウザセッションを介してCookieを結び付けることは一般的に良い習慣であり、これはポップアップする可能性のあるブラウザのセキュリティ問題に役立つと思います。

これを試してみて、うまくいくかどうか教えてください。

幸運を祈ります、

  • エオガン
于 2012-06-25T22:06:38.127 に答える
0

問題が解決しました!

Drupalを実行しているデスクトップサイトが問題でした。cronを実行すると、検出スキーム全体が完全に機能するため、これはキャッシュの問題か何かです。2回目は、そうではありません。cronを実行した直後に1回だけ機能します。常駐のDrupalプロにそれを理解してもらう必要があります。

しかし、すべての助けに感謝します!

于 2012-06-26T14:12:26.830 に答える