PHP


Javascriptが有効でないブラウザがアクセスしてきた再、YahooMailのようにエラーが表示さてた別ページへ移す方法を教えてください。

プログラミング言語はPHPで。

回答の条件
  • 1人3回まで
  • 登録:2007/03/02 11:26:28
  • 終了:2007/03/08 15:52:02

回答(6件)

id:llusall No.1

llusall回答回数505ベストアンサー獲得回数612007/03/02 11:45:05

ポイント30pt

発想を変えて、有効なブラウザがアクセスしてきた場合に、

正常なページに飛ばすというのはどうでしょうか?

<html>

<body onload="window.location.href='有効なページ.php'">

JavaScriptが無効です。

</body>

</html>

サーバサイドで、ターゲットブラウザのJavaScriptの有効無効を

判断して振分(リダイレクト)できるかもしれませんが、

セキュリティ設定などで、実際のScript動作はわかりませんので、

「Scriptが機能すれば、正常なページへ」というふうに

持っていったらどうかと思います。

id:esecua

bodyは触りたくないですね。ほかの方法でお願いします。

できればサーバサイドで判断して、有効でなければ別ページにしたいのです。有効であればそのまま表示させたいのです。

提示していただいた方法だとJavaScriptを必要とするページに付いたときに無効にしてしまえば意味がないでしょ?そうではないんでよね。

2007/03/02 14:07:52
id:kouuok No.2

kouuok回答回数25ベストアンサー獲得回数02007/03/02 12:04:01

(Javascriptで。)

(PHPで。)

//Javascriptが無効なら行くページへジャンプ

?>

と、並べて書くのはどうでしょうか。

id:esecua

えぇ?いやいや、その方法を聞いているのですよ。別に Locationの方法は聞いていませんけど。

2007/03/02 14:05:34
id:technolize No.3

technolize回答回数21ベストアンサー獲得回数32007/03/02 19:04:50

ポイント9pt

この場合は header() で Location か Refresh を吐いてやればいいと思うんですけど、どうでしょうか。


そのまま飛す

<?php header("Location: {$target_url}"); ?>


なんか表示してから飛す

<?php
// 判定...
// 飛すまでの時間
$wait = 10;
// 飛すURL
$target = "http://example.com/hoge";
header("Refresh: {$wai};URL={$target}");
?>

id:esecua

おねがいです。質問をみてください。

PHPのlocationの方法は聞いていません。Javascriptが無効をPHPで判断できるのか聞いているのです。

2007/03/03 04:44:17
id:ymty No.4

ymty回答回数32ベストアンサー獲得回数12007/03/02 20:27:50

ポイント30pt

PHPではなくjavascriptで実現できると思います。

Yahooでは

<script type="text/javascript"></p> <p><!-- </p> <p> if(typeof top.frames["wmailmain"] != "undefined") window.open("<a href="http://mail.yahoo.co.jp" target="_blank">http://mail.yahoo.co.jp</a>", "_top");</p> <p>// --></p> <p></script>

<noscript>

<META HTTP-EQUIV=Refresh CONTENT="0; URL=/ym/login?nojs=1">

</noscript>

で、実現させています。

typeofは

http://www.res-system.com/item/505

によると

あるJavaScipt関数が有効か否かを判断するのに使用され

typeof(aaaaa)に対してundefinedを返します。

上のYahooのコードは

typeofで文字列を返すことが出来れば、メールへ

返すことが出来なければ、ヘッダーでリフレッシュをかけ別ページに飛ばしています。

もし、PHPにこだわらないのであれば、上述のコードを一部変更することで、すぐに実装できるかと思います。

id:esecua

なるほど。参考になります。

ところで Gmail http://mail.google.com/mail/ はどのようにして判断していると思いますか?

2007/03/03 04:52:59
id:ymty No.5

ymty回答回数32ベストアンサー獲得回数12007/03/03 07:39:57

ポイント31pt

連続ですみません。

Gmailでどう判定しているかなのですが、予想で申し訳ないのだが

function wfs()でcookieのチャックとブラウザのチェックは

間違いなく行っているのですがJavascriptがいまいち見当たらないのです。

Javascriptが動かないとif (wfs())が反応しないてので判定しているか、<noscript>だけで判定しているのか。。

これはちょっと、把握し切れなかったので想像の内容なので

誤っていたらすみません。。

id:esecua

さすがGoogleって感じですね。技術的にも世界TOPだけはあります。

2007/03/03 13:02:19
id:ymty No.6

ymty回答回数32ベストアンサー獲得回数12007/03/03 07:33:18

ポイント10pt

Gmailでもソースを見ると

<noscript></noscript>

でスクリプトが動かない場合の文章を表示しています。

http://www.htmq.com/html/noscript.shtml

function wfs()以下に

ブラウザーのチェック+読み込むページのURLを生成しています。

それを元に

if (wfs()) {

document.write('<frameset onload=lj() rows="100%,*" border=0><frame name=main src="ここにURL" frameborder=0 noresize scrolling=no><frame name=js src="ここにURL" frameborder=0 noresize></frameset>');

}

実際のGmailを表示しています。

Yahooと考え方は基本的には同じようです。

スクリプトが動く時にどうメール昨日のページを表示するかで

若干の差異があるようです。

  • id:llusall
    YahooMailは、サーバーサイドで振り分けをしていません。
    [noscript]タグと[meta]タグです。


    <noscript>
    <META HTTP-EQUIV=Refresh CONTENT="0; URL=/ym/login?nojs=1">
    </noscript>
  • id:esecua
    なるほど。ポイント差し上げます。ありがとうございました。

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません