A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
javascriptをご使用されてはいかがでしょう?
自分からアクセスしたページに対して、javascriptを使用しない設定にしているブラウザはたぶんないですし、IEとて、メッセージが表示されるだけなので、、、もしくはflashプレーヤーを使用してもいいかと思います。
方法としては、javascript等で接続してきた相手側のパソコンの時間を確認、その時間と日本の現在時間の誤差で、アクセスを切り分ける。
これなら、結構な精度かつ、無駄な切り捨てが少ないように思います。
事実、僕自身、完全に英語環境のOS、ブラウザを使用していますが、
時間設定だけは、今自分のいるところで設定してますで、、、
オーストラリア等の一部の地域では難しいですけど、、、、
結局、まだどの手法でも実現していませんが、かなり勉強になりました。
公平にポイント付けしないで締め切りさせてもらいましたが、皆さん、本当にありがとうございました。
またの機会にも、どうかよろしくお願い致します。
No.5
- 回答日時:
発行されているIPアドレスをブロックすると言う手もありますが、情報が古いのと正確ではないので、最近の登録業者は見れないかもしれませんね・・・
http://www.nic.ad.jp/ja/dns/jp-addr-block.html
http://www.iana.org/assignments/ipv4-address-space
この回答への補足
結局、まだどの手法でも実現していませんが、かなり勉強になりました。
公平にポイント付けしないで締め切りさせてもらいましたが、皆さん、本当にありがとうございました。
またの機会にも、どうかよろしくお願い致します。
ブロックしたいドメインは、一部だけわかります。
(IPはわかりません。引けばわけるのかもしれませんが・・・)
できれば、ドメインで振り分ける方法も知りたいので、もしご存知でしたらご教授下さいませ。
No.4
- 回答日時:
度々どうも。
下の補足を読みました。
そういう事情ですか。とすれば、「完璧なものは必要ない」とおっしゃっているんで、それでも導入するということであればやはりHTTP_ACCEPT_LANGUAGEで判別する以上に精度の高い方法を私は思いつきません。でもご承知の通り、それでやったら、enを吐く環境の日本人には「クローズしました」というメッセージを見せてしまうことになってしまうわけで、彼らを100%きりすてることになってしまいます。少々ダサいやり方ですが、2byte文字か、jpg(またはgif)で、日本語のメッセージを載せておくとかでしょうか。
> ちなみに「一般的なブラウザ環境の中にはデフォルトでenしか吐かないものが多く存在する」
というのは、IEでもネスケでもFフォックスでもでしょうか?
すみませんが、そのご質問には正確には答えられません。というのは、私も以前同様の自動振り分けを試みたことがあり、それでいろいろと調べていてそのような事例をいくつか見、あきらめたという経緯があるんだったのでした。ずいぶん前のことなのでそのとき集めた資料等出てきませんし、記憶もあいまいです。お答えできなくてすみません。ただそういう事例が私には無視できないほどの一定確率であるのだなということは明確に記憶していますので先のように回答しました。
この回答への補足
わかりました。
どうもありがとうございます。
完璧なものが欲しいところですが、やはり完璧なものは難しいだろうなぁと想像はつきます。
「2byte文字か、jpg(またはgif)で、日本語のメッセージを載せる」
という方法は、ナイスアイデアかもしれません。
他国の人(日本語が理解できない)から見たら、単なる広告バナーのように見えるように画像張り付けて対応してみたいと思います。
結局、まだどの手法でも実現していませんが、かなり勉強になりました。
公平にポイント付けしないで締め切りさせてもらいましたが、皆さん、本当にありがとうございました。
またの機会にも、どうかよろしくお願い致します。
No.3
- 回答日時:
英語環境のチェックをする場合は
No.2で、補足がありますが、書いてしまったので(笑)
Internet Explorer
[ツール(T)]-[インターネットオプション(O)...]-[全般タブ]-[言語(L)...]
を開き、日本語[ja]を削除し、希望の言語を選択すれば
HTTP_ACCEPT_LANGUAGEの値をenに変更することができます。
動作チェックが終わったら、日本語[ja]を設定に戻してくださいね。
この方法で動作チェックを行ってみてください。
また、WindowsかMacOSかの判断ですが、
ブラウザ環境変数のHTTP_USER_AGENTを参照しますと
ブラウザのバージョンやOSなどが判別できます。
一例ですが
---------------------------------------------------
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
---------------------------------------------------
という値であれば
Microsoft InternetExplorer 6.0
WindowsXP Professionalを利用していることがわかります。
Macを持っていませんが、Macでアクセスすると
MAC OS やMac_PowerPCという文字列が含まれているようです。
No.1でご提案したスクリプトを改造していただければ
判別に利用できるかと思います。
<?php
$strUserAgent = $_ENV['HTTP_USER_AGENT'];
if( ereg(".*Windows.*",$strUserAgent) ){
echo "Windowsをご利用ですね。<BR>\n";
}elseif( ereg(".*(MAC OS|Mac_PowerPC).*",$strUserAgent) ){
echo "Macをご利用ですね。<BR>\n";
}else{
echo "私の知らないOSをご利用ですね。<BR>\n";
}
if( ereg(".*MSIE.*",$strUserAgent) ){
echo "さらに、Microsoft InternetExplorerをご利用ですね。<BR>\n";
}else{
echo "さらに、私の知らないブラウザをご利用ですね。<BR>\n";
}
?>
すみません、動作チェックを一切行ってませんのでエラーになるかもしれません。
DM9さんがおっしゃる通り、ページにアクセスした際に英語ページか日本語ページを選ばせるのが良いですね。
この回答への補足
どうもありがとうございます。
OSの判定方法はわかりました。
ただ、そのOS(Windowsにしろ、Macにしろ)が日本語OSなのか、そうでない他国語OSなのか判定させるのは無理なのでしょうかね?
結局、まだどの手法でも実現していませんが、かなり勉強になりました。
公平にポイント付けしないで締め切りさせてもらいましたが、皆さん、本当にありがとうございました。
またの機会にも、どうかよろしくお願い致します。
No.2
- 回答日時:
ドメインで判別するのはNo.1さんが述べられている通り、不完全なのでダメ。
またHTTP_ACCEPT_LANGUAGEで判断する方法も残念ながら満足する結果を得られません。詳しくは触れませんが、一般的なブラウザ環境の中にはデフォルトでenしか吐かないものが多く存在するからです。一般的な話、日本人がウェブサイトにアクセスし、英語ページが一発目で出てくるとほとんどの場合、戻るボタンで戻ってしまうのではないでしょうか。そのページのどこかに「日本語はこちら」というリンクがあったとしてもそこに目がいく確率は低いでしょう。つまり、ビジターのためによかれと思って作ったシカケが逆にアクセシビリティを悪化させてしまうのです。
要は質問者さんの考え方次第です。上記の欠点をふまえた上で、それでも導入した方がよいケースがあるかもしれません。
例えばコンピュータの技術的な事柄に特化したウェブサイト(apacheのモジュール類配布サイトとか)なら、訪問者のほとんどは英語の用語に馴れているので、いきなり英語が出てきても嫌悪を覚える人はいないでしょう。右上に「日本語はこちら」というリンクがあればそれを探してクリックしてくれるでしょう。そういうサイトなら見る人たちはブラウズの仕方をある程度知っているからです。彼らのような訪問者ばかりなら、en/ja切り替えが不完全だったとしてもさほど不便には思わないかもしれません。
また、そのページに書かれた情報がたいへん貴重で訪問者はある程度の動機によって支えられており、英語ページであったとしても熱心に読んでくれる、あるいは日本語ページへのリンクを積極的に探してくれるというのなら導入してもよいかもしれません。
しかしながら、一般的な商用サイトでこれをやるのはディレクションミスだと思います。jaを吐くブラウザ環境には便利ですが、enを吐くブラウザ環境のお客様に不便を強いることになります。
上記を踏まえた上でいちばんの方策はこれだと思います↓
最初は手動でen.php/ja.phpを選ばせる。2度目の訪問以降はcookieで自動でそれぞれのページに飛ばす。
以上私見ですが参考まで。
この回答への補足
おっしゃるとおりだと思います。
ただ、実際に必要としているページはちょっと違っていて、
日本語ページと国外向け英文ページの両方を作りたいのではなくて、
日本からのアクセス者だけに、サイトを普通に閲覧できるようにさせて、
海外からのサクセス者には、サイトはクローズしたというメッセージを書いたページを出したいのです。
(別にあやしいサイトではまったくないのですが、ちょっと海外からの訪問者を避けたいわけがありまして・・)
ですので、両方のページが存在するということを海外からの訪問者にはできれば知られたくないのです。
よって、トップで自動的に振り分けたいのです。
完璧なものは無理だとは思いますが・・・
ちなみに「一般的なブラウザ環境の中にはデフォルトでenしか吐かないものが多く存在する」
というのは、IEでもネスケでもFフォックスでもでしょうか?
それとも、ブラウザヴァージョン(古い?)によっては、enしか吐かないということでしょうか?
結局、まだどの手法でも実現していませんが、かなり勉強になりました。
公平にポイント付けしないで締め切りさせてもらいましたが、皆さん、本当にありがとうございました。
またの機会にも、どうかよろしくお願い致します。
No.1
- 回答日時:
THUBANさんがおっしゃっているように、ドメインで判別するのも一つの方法ですが
プロバイダによっては YahooBBのように.netドメインを使っていたり.comだったりします。
ブラウザ環境変数のHTTP_ACCEPT_LANGUAGEを取得してjaが入っていれば
index_j.php に。それ以外の値が入っていれば index_e.phpに飛ばす方法は
どうでしょうか。
HTTP_ACCEPT_LANGUAGEはブラウザのサポート言語を表します。
まれに、日本語環境のブラウザでも ja en と値が二つ入っている場合もあります。
参考になればいいのですが。。。
<?php
$strAcceptLanguage = $_ENV['HTTP_ACCEPT_LANGUAGE'];
$strUrlJapanese = "http://xxx.xxx.xxx/index_j.php";
$strUrlOther = "http://xxx.xxx.xxx/index_e.php";
if( ereg(".*ja.*",$strAcceptLanguage) ){
Header("Location: {$strUrlJapanese}");
}else{
Header("Location: {$strUrlOther}");
}
?>
この回答への補足
ありがとうございます。
なるほど!ブラウザで判別すればいいんですね。
ちょっとやってみたいと思います。
ただ、英語環境が手元にないので、きちんと動作しているかテストするには何かしらの方法を考えないといけないですね。
ちなみに、OS(WindowsやMac)が日本語か、そうでないかを判断することも可能なのでしょうか?
結局、まだどの手法でも実現していませんが、かなり勉強になりました。
公平にポイント付けしないで締め切りさせてもらいましたが、皆さん、本当にありがとうございました。
またの機会にも、どうかよろしくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- WordPress(ワードプレス) ワードプレスの管理画面が行方不明。 1 2022/04/27 12:09
- SSL・HTTPS httpとhttpsの安全性のちがいについておしえてください 3 2022/11/18 22:51
- その他(インターネット接続・インフラ) ブラウザにIPアドレス入力した時 1 2022/06/16 19:08
- VPN VPN接続サービス利用の匿名性ついて 2 2022/10/24 15:37
- ネットワーク 自作のサーバーPCが自宅内のネットワークに接続できない 3 2023/01/24 16:58
- HTML・CSS 全部のアクセスを指定したページに転送させたい 2 2022/06/28 16:33
- ハッキング・フィッシング詐欺 国外からのアクセスと判断されてしまっているようです。 2 2022/05/23 10:59
- ネットワーク cutestat.comというサイトでipアドレスが確認できる件 1 2022/04/10 14:19
- その他(ブラウザ) このページは動作していません HTTP ERROR 401 2 2022/11/28 12:11
- ドメイン・サーバー・クラウドサービス FileZillaを使用してwpXサーバーに接続できない 2 2022/03/29 21:02
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テキストリンクを2回クリックし...
-
リダイレクトでPOST
-
フォーム処理から戻ったページ...
-
URLでスラッシュ区切りでパラメ...
-
フォントの色を変えるには?
-
PHPのif文でその処理を途中で抜...
-
リンク先を隠す方法はないでし...
-
copy() で属性保存
-
onedrive にexcelファイルをア...
-
PHP session_destroyとsession...
-
「クラス関数」「メンバ関数」...
-
別PHPファイルに変数を渡す
-
VBSの「MsgBox」について
-
3つ以上の論理積は利用可能なの...
-
「@$変数」の「@の意味は?」
-
CFileDialogの最初のディレクト...
-
BASP21メール送信(SMTP-AUTH認...
-
htmlをphpにするにあたってデメ...
-
openCVの超解像処理
-
VB6.0とBASP21を用いてyahooメ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
リダイレクトでPOST
-
URLの変わらないページをPHPで...
-
【WordPress】メディアの一覧出力
-
テキストリンクを2回クリックし...
-
URLでスラッシュ区切りでパラメ...
-
【PHP】ブログ記事をお気に入り...
-
会員サイトに自動ログインして...
-
PHPで、データを表示させるとき...
-
php my adminより取り出したデ...
-
LARAVEL モデル
-
レンタル予約管理表を作りたい
-
WordPress 検索結果ページのペ...
-
header関数でページ移動する場...
-
phpinfoでloaded modulesが表示...
-
GETで「?」無しでパラメータの...
-
PHPで検索結果からさらに詳細な...
-
phpでの二重投稿防止について
-
phpとpostgresを利用した検索シ...
-
PHPとSmartyで、ブログサービス...
-
リンク(URL)をクリックした後、...
おすすめ情報