-1

メインバージョンとモバイルバージョンを備えたウェブサイトを持っています。クリックすると2つのことを行う「サイト全体を表示」ボタンを作成しようとしています。

  • ボタンがクリックされたことをサイトが記憶できるように Cookie を設定します。
  • サイトのメイン (モバイルではない) バージョンに移動します。

これが私がそれをやろうとした方法です:

  • ボタンを作成します。
  • クリックすると、Cookie を設定する PHP を含むプロセッサ ページに移動し、サイトのメイン バージョンにリダイレクトします。
  • 「サイト全体を表示」ボタンがクリックされたかどうかをチェックする PHP をサイトのメイン バージョンに追加します。

これが私のサイトが構築されているものです:

しかし、それは機能していません。

サイトのメイン バージョンのインデックス、開始 HTML タグの上のヘッダーには、次のようなものがあります。

if(!isset($_COOKIE['dontDoMob'])){
    
    //its not set so check for device type.
    include("Mobile_Detect.php");
    $detect = new Mobile_Detect();

    if ($detect->isMobile() ) {
        //"its some kind of mobile device so redirect to mobile";
        header("Location:http://myforecyte.com/m/");
        exit();
    }
}

モバイル サイトのインデックスにボタンを追加し、クリックして jQuery 経由で Cookie を設定し、Cookie のおかげでサイトのメイン バージョンをロードし続けるホームページにリダイレクトします。

しかし、それはうまくいきませんでした: リダイレクトさえしませんでした。jQuery Mobile のせいかどうかわからなかったので、すべて分離しました。私がしたことは、jQuery モバイル内の「サイト全体を表示」リンクを設定し<a href="processorpage.php" rel="external">て、次のコードを含む別のプロセッサ ページ (のような) に移動することでした。

setcookie('dontDoMob', 'yes');
header("Location:http://www.myforecyte.com");

しかし、それは常にモバイル版に戻ります。メイン サイトの URL が一瞬表示された後、再びモバイルにリダイレクトされます。あたかもクッキーが設定されていないかのように。

クッキーを世界規模で設定することなどと関係があると思います。


注: 次のコードを使用して、Cookie を設定するプロセスが正常に機能することを確認しました。

if(isset($_COOKIE['dontDoMob'])){
    echo "its set yo";
} else {
    echo "its not set";
}

それは機能し、「そのセットよ」と教えてくれます。すべての Cookie を削除して Firebug で再テストすると、常にそれに応じて動作します。

4

2 に答える 2

0

Cookie には「ドメイン」制限があります。

たとえば、デフォルトでは、 の Cookiehttp://mobile.example.comはでは利用できませhttp://www.example.com

ただし、Cookie を作成したドメインのすべてのサブドメインで利用できますhttp://a.mobile.example.comhttp://b.mobile.example.com.

Cookie を設定するときに、Cookie を作成するドメインを指定できます。ここでPHPマニュアルを読んでください:

http://php.net/manual/en/function.setcookie.php

これが問題の完全な答えかどうかはわかりませんが、複数のドメイン名について言及しているため、これが問題の一部である可能性があります.

お役に立てれば

于 2013-03-24T18:47:52.507 に答える