2

ウェブサイト (www.website.com) とモバイル サイト (m.website.com) があり、ユーザーがモバイルから必要な場合に「サイト全体を表示」できるようにしようとしています。現在、Javascript を使用してサイト全体の画面幅を確認し、モバイルにリダイレクトしています。

if (screen.width <= 699) {
document.location = "http://m.website.com";
}

これはうまくいきます。モバイルサイトには「サイト全体を表示」ボタンがあります。これをクリックすると、私のスクリプト「force_desktop.php」にリダイレクトされ、Cookie が設定されてからメイン サイトに移動します。

<?php
setcookie("force_desktop", "1");
header("Location: http://www.mywebsite.com");
?>

Cookie を設定してメイン Web サイトにリダイレクトしたので、画面の幅を確認するだけでなく、Cookie を確認する必要があります。

論理

Cookie force_desktop が見つかった場合

その後、終了します

そうしないと

画面サイズのテストを実行する

これは私が使用しようとしたコードですが、動作しません。このコードは、すべてのページで実行される head.php ファイルに配置され、スクリプトの開始タグと終了タグの間に配置されます。

試行 1

if($_COOKIE['force_desktop'] == '1' {
exit;
} else if($_COOKIE['force_desktop'] != '1' {
if (screen.width <= 699) {
document.location = "http://m.website.com";
}
};

試行 2

if(isset ($_COOKIE["force_desktop"])){
exit;
else
if (screen.width <= 699) {
document.location = "http://m.mywebsite.com";
};

機能する可能性のある代替ロジック

IF Coo​​kie force_desktop が見つからず、かつ screen.width <= 699

次に、m.myseite.com にリダイレクトします。

そうしないと

出口

ノート

次のスクリプトを実行して、Cookie が配置されていることを確認しました。

<?php
print_r($_COOKIE);
?>

アイデアが尽きたので、特に If/Else ステートメント内の If/Else ステートメントで、自分のコーディングが正しくないことを知っています。また、Cookie が使用されているかどうかを確認するために「isset」を使用する方が良いのか、それとも ($_COOKIES['variable'] == "#") を使用する方が良いのかわかりません。これに関する良いフィードバックをいただければ幸いです。

あなたの助けと提案を前もって感謝します,

マット

4

3 に答える 3

2

JavaScript と PHP を混在させています。PHPスクリプトで使用しようとしていますscreen.widthが、意味がありません。JavaScript をページに出力するには、echo ステートメントを使用する必要があります。次に、ユーザーの画面解像度を確認し、リダイレクトを行います。

これを試して:

if(isset ($_COOKIE["force_desktop"])){
    exit;
}
else
{
    echo '<script> 
    if (screen.width <= 699) {
    document.location = "http://m.mywebsite.com";}
    </script>'; 
};
于 2013-07-24T18:01:54.387 に答える
0

このテストは、php ページの上部で行う必要があります。このように、php と Java スクリプトを混在させることはできません。

このコードを次のように変更できます

<?php
 $flag = 0;
 if(isset($_COOKIE['force_desktop']))$flag++;
?>

<head>ページの後半では、タグが始まるとすぐにコードを使用します

..
..
<head>
<?php
if(!$flag){
echo '<script> 
if (screen.width <= 699) {
document.location = "http://m.mywebsite.com";
</script>'; 
 }
?>
于 2013-07-24T18:55:18.720 に答える
-1

JavaScript と PHP を混在させることはできません。JavaScript がフロント エンドで、PHP がバック エンドです。次のようなことを試してください:

if( $something ){

   Header("Location: somewhere.php");

}
于 2013-07-24T18:05:07.117 に答える