2016-11-17 5 views
1

質問があります。以下の2つの例を年齢に合わせて使用​​していますので、常に正しいスクリプトを指しています。例えばSabnzbdとSonarr。IPに基づくリダイレ​​クションはもはや動作しません。

しかし、私の家のISPは(ほとんど)毎日のベースで自分のIPを変更することを決めました。また、IPの最後の範囲だけでなく、前の数字も。これにより、私のスクリプトにはまったく無意味なものになってしまいました。代わりに、代わりにホスト名を使用する方法があるのだろうかと思います。

私は2つの重要な場所でこの「スクリプト」を使用します。残りは重要ではありません。ホームプロバイダはホスト名に "caiway.nl"を持ち、他の場所にはホスト名の最後に "ziggo.nl"があります。

私は適切な場所に私をリダイレクトするためにいくつかのスクリプトを使用しますが、以下は例です。たぶん、誰かがこの問題のアイデアや回避策を一度に、そしてすべてを持っているかもしれません。

<?php 
// Sabnzbd 
$visitor = $_SERVER['REMOTE_ADDR']; 
if (preg_match("/62.45.*.*/",$visitor)) { 
     header('Location: http://192.168.1.55:9900'); 
} else { 
     header('Location: http://place.dnsforwarder.eu:9900/'); 
}; 
?> 

<?php 
// Sonarr 
$visitor = $_SERVER['REMOTE_ADDR']; 
if (preg_match("/62.45.*.*/",$visitor)) { 
     header('Location: http://192.168.1.55:3300'); 
} else { 
     header('Location: http://place.dnsforwarder.eu:3300/'); 
}; 
?> 

ので、代わりの何かIPベースの、私の代わりにホスト名を利用したいので、IPは、任意の日に与えられていますかは重要ではありません。

私はすでにそれを切り替えようと考えていましたが、他の場所では私のIPも頻繁に変更されます。一口。

誰かが私が何を意味しているのかを理解して、何らかの実用的な解決策や、上記の使用例を思い付くことを願っています....ありがとう。

[編集/更新/詳細]

は、どうやらそれは非常に明確ではありません。私は上記のコードを個人的な開始(ウェブ)ページで使用します。だから私はそれらの2つのリンクをクリックすることができ、それは私のローカルIPとポート番号にリダイレクトされます。そうでなければ、動的DNSサービス(afraid.org)が正しくリダイレ​​クトされます。この場合、dns forward(したがって、明らかに名前)として "place.dnsforwarder.eu"です。

しかし、説明したように、両方のISP(異なるISP)が毎日自分のIP番号を変更しています。だから、コードは(少なくとも1つの場所で)すべきではありません。何らかのIPチェックの代わりに、(私の2つのISPのziggo.nlまたはcaiway.nlに基づいて)代わりに何かのホスト名を使うことができるかどうかを知りたいと思います。そうすれば、1分ごとに自分のIPを変更するかどうかは関係ありません。いつも正しい場所に転送されます。

サイドノート;私は、2つの異なる開始ページを作成することもできますが、それぞれの場所ごとに1つずつ作成する必要があります。ブラウザが同期しているので正しく動作しません.2つの場所のいずれかに移動するたびに、開始ページ(1または2)を変更する必要があります。

+0

私はあなたの質問を正確には理解していませんが、おそらく動的DNSが役に立ちます – nbari

+0

"place.dnsforwarder.eu"はすでにdyamic dnsサービス(afraid.org)であるため、そうはなりません。だから...解決策ではありません。上記のように、IPチェックの代わりにホスト名のチェックが必要です。それでもやってくれてありがとう。 – Joanne

+0

あなたは、現在解決されているホスト名を確認したいと思うように思えます。 – SLaks

答えて

1

線に沿って何かを探している:

// Sabnzbd 
$visitor = $_SERVER['REMOTE_ADDR']; 
$hostname = gethostbyaddr($visitor); 
if (stristr($hostname, 'caiway.nl')) { 
     header('Location: http://192.168.1.55:9900'); 
} else { 
     header('Location: http://place.dnsforwarder.eu:9900/'); 
} 

// Sonarr 
$visitor = $_SERVER['REMOTE_ADDR']; 
$hostname = gethostbyaddr($visitor); 
if (stristr($hostname, 'ziggo.nl')) { 
     header('Location: http://192.168.1.55:3300'); 
} else { 
     header('Location: http://place.dnsforwarder.eu:3300/'); 
} 

gethostbyaddrホスト名にIPアドレスを解決します。

+0

ありがとう。私はすでに "REMOTE_HOST"を使っていましたが、 "HostnameLookups On"を有効にしなければなりませんでした。 gethostbyaddrでも "HostnameLookups On"のままにする必要はありますか?私はそうだと思いますが、確かにそうです。あなたの解決策にもう一度感謝します。今私は私のIPが何であるか気にしない! :)) – Joanne

+1

@Joanne私は 'HostnameLookups On'が' gethostbyaddr'のために必要であるとは思っていません。なぜならこれはApacheの設定であり、PHPの設定ではないからです。いずれにしてもうまくいくはずですが、コースでは、テストで確実にわかります! –

+0

します。しかし、今日私はそれを1日と呼びます。修正プログラム/ソリューションをお寄せいただきありがとうございます。私はすべての私の現在の設定にそれを適用し、それは夢のように動作します。親切にありがとう! – Joanne

関連する問題