2008-10-03 5 views
10

PHPでこれを行う簡単な方法です。私は、特定の国からのウェブリクエストだけが自分のウェブサイトにアクセスできることを確認したいと思います。私のウェブサイトを閲覧できる国を制限する方法(PHP)

アイデア?

+3

私は、技術的な観点から興味を持っていますが、ウェブサイトではそれが嫌いです。私はいつも右のプロキシ – wcm

+0

プロキシもブロックすることができ、法的理由でアクセスをブロックする必要があるかもしれないことを覚えておいてください。多くの場合、米国に拠点を置く企業は、公式ブラックリスト(イランなど)の一部の国でウェブサイトを利用できるようにすることは違法です。 – Gilles

+1

もし私がそれらの国に住んでいれば、それも嫌いです。私はちょうど検閲を強要するものは好きではない。私は実際にこれを行う正当な理由があることを理解しているので、質問(そしてあなたの回答)に投票しました。私はそれを好きになる必要はありません。 – wcm

答えて

13

訪問者のIPアドレスを取得するには、IPジオロケーションデータベース(いくつかは無料)と$ _SERVER ["REMOTE_ADDR"]を使用します。

http://www.maxmind.com/app/geolitecityは、市販されていない無料の(あまり正確でない)バージョンです。

-2

ユーザエージェントのロケールを検出できる特定のクラスがあります。そのようなものを試してみてください。 Zend FrameworkはこのZend_Localeに最適なクラスを持っています

+0

「ロケール」では、クライアントがどこに設定されていないかを設定するだけではありませんか?ロケールを "en_US"に設定しても、オーストラリアにいることはできませんでしたか? –

+0

確かに、ロケールはブラウザの言語であり、場所とは関係ありません。 – Gilles

+0

しかし、あなたが気に入らない人は除外されるかもしれません。たとえば、私はロシア語で私のウェブサイトにロシア人とインド人の訪問者をシャットダウンしています。ほとんどの場合、それは動作します。 – flaab

4

両方の回答(ジオロケーション、ユーザーエージェント)は機能しますが、敗北する可能性があります。誰かがプロキシサーバーを使用したり、ユーザーエージェントを変更することができます。 Firefoxには、その目的のためのプラグインがあります。 PEARパッケージジル同様

http://pear.php.net/package/Net_Geo

+0

プロキシを低いプロトコルレベルでブロックすることができます。 Hulu.comはそれだけです。ユーザエージェントは、ここでの問題とは何の関係もありません。 – Gilles

+0

どのようにしてすべてのプロキシを確実にブロックしますか?信頼できる唯一の解決策はブラックリスト化ですが、新しいプロキシが常にポップアップします。 – ceejayoz

+0

ブラックリストを使用していない*低プロトコルレベル*でそれらを検出します。私は詳細を覚えていません、私はちょうどhuluによって使用されているそのようなテクニックについて読むことを覚えています、それだけです。 – Gilles

1

、私は過去に、このためのMaxMindのGeoIPのものを使用しました - スピードのためのPECL拡張モジュールで構成します。それは合理的にうまくいくが、...

このようなことの要件は、このように訪問者の場所を確実に決定することは不可能であるということを理解していない人から生じる傾向がある。 がほぼであることを理解するように頼まれた人が役に立たないことは非常に重要です。この中でジオロケーションで起こる典型的なもの:

クライアント:私は、IP
のDevによってコンテンツを制限することができるようにしたい:あなたはそれを確実に行うことは不可能であることを知っていますか?
クライアント:はい、しかし、この会社は私に何かを売ってくれると言っています
Dev:はい、正確ではなく、迂回しやすく、通常はインターネットベースのコンテンツのビジネスモデルが悪いことを示します。
クライアント: それできますか?
のDev:どのような...半年後

... ...

クライアント

:私の訪問者の一部が文句を言ってきた彼らがすることはできません私のコンテンツと、それを見るべきではない悪い人々を見ることができました!
のDev:私は頭

をピタッ/ユーザーは、右彼らのブラウザでクリックしたときに少し記号は」を言ってポップアップ表示されるようにそれはそこからへの唯一の一歩は、「私はそれを持つことができますこれらの画像はIdiot Inc.の著作権です。?!あなたはベン・ダウリングの答えを使用して、コードが動作しない場合は、「

申し訳ありませんが、明らかに皮肉な気分で今日

+0

毎回情報を入手するためにウェブサイトに質問しているようですね。データは私が言及した無料のデータベースよりも正確かもしれません。 – Gilles

9

もあります

+1

彼はいくつかの国をブロックするために法的に拘束されているかもしれないことに注意してください。政府が発行した国のブラックリストからのアクセスを合法的にブロックしなければならなかった大きなアメリカ企業に勤めました。遵守しなければ、刑務所に上陸した可能性がある。私は詳細については話すことができませんが、これは非常に現実的でした。 – Gilles

+0

私は使用を依頼された場合、コンテンツプロバイダとパブリッシャの間の法的な合意の一部となっています。しかし、これは私の主張のようなものです。これは欠陥のある考え方であり、合法的に不可能なことを義務づけています。まだ実装するが、状況の現実をフィードバックする! –

+0

ああ、そのメモでは、右クリックの著作権メッセージも人々に「合法的に要求」されているのを見ました。それは信じるのだ! –

2

、これを試してみてください。

if (!in_array(substr($country, 0, 2), $allowed_countries)) { 

の代わりに:

if(!in_array($country, $allowed_countries)) { 
関連する問題