|
|
|
| Понадобилось сделать фильтр по ip на моём компе, чтобы доступ имели только пользователи этого провайдера (чтоб мне не шёл внешний трафик).
Подскажите как это сделать в php.. и чтоб не писать каждый ip отдельно (их 6 тыщ), а просто указать диапазоны..
Заранее спасибо | |
|
|
|
|
|
|
|
для: NeO
(10.07.2006 в 15:51)
| | А чем эти IP похожи? Можно, к примеру так:
<?
$provider = "123.123.123"; //Первые три числа IP адреса. Допустим в этом схожесть.
$ip = getenv('REMOTE_ADDR'); //123.123.123.000
if(substr_count($ip, $provider) == 0)
{
die("ПАШШШОЛ отсюда.");
}
else
{
echo "Welcome!"; //В данном случае выведет это.
}
?>
|
| |
|
|
|
|
|
|
|
для: Unkind™
(10.07.2006 в 16:00)
| | ip такие -
97.146.48.0 – 97.146.55.255
тоесть этот метод не совсем подходит...
еще надо указать несколько таких диапазонов... | |
|
|
|
|
|
|
|
для: NeO
(10.07.2006 в 17:24)
| | 1) Находим ИП
2) На части делим его и сравниваем с начальным и конечным
3) Повторяем столько раз, сколько у нас таким промежутков | |
|
|
|
|
|
|
|
для: Football
(10.07.2006 в 18:28)
| | Вот, написал, вроде работает:
<?
$ip="100.100.100.350"; // IP адресс
$ip_masiv_nachalo=array("100.100.100.100","100.100.100.230"); // Диапазоны начал
$ip_masiv_conec=array("100.100.100.200","100.100.100.300"); // Диапазоны конец
$count_masiv=count($ip_masiv_nachalo); // ну кол-во собственно
$dostup=true; // в начале доступ открыт
for ($i=0;$i<$count_masiv;$i++) { // ну а далее понеслась проверка
$ip_nachalo=explode(".",$ip_masiv_nachalo[$i]);
$ip_conec=explode(".",$ip_masiv_conec[$i]);
$ip_adress=explode(".",$ip);
if ($ip_adress[0]<$ip_conec[0] and $ip_adress[0]>$ip_nachalo[0]) {
$dostup=false;
}
if ($dostup && $ip_adress[1]<$ip_conec[1] and $ip_adress[1]>$ip_nachalo[1]) {
$dostup=false;
}
if ($dostup && $ip_adress[2]<$ip_conec[2] and $ip_adress[2]>$ip_nachalo[2]) {
$dostup=false;
}
if ($dostup && $ip_adress[3]<$ip_conec[3] and $ip_adress[3]>$ip_nachalo[3]) {
$dostup=false;
}
}
if (!$dostup) {
echo "Пошёл отсюда";
}
?>
|
| |
|
|
|
|
|
|
|
для: Football
(10.07.2006 в 18:57)
| | у вы не работает :( | |
|
|
|
|
|
|
|
для: NeO
(10.07.2006 в 20:14)
| | На локалке все работало. А что именно не работает? Что пишет? | |
|
|
|
|
|
|
|
для: Football
(10.07.2006 в 20:26)
| | пускает с ip, который пускать не должно.... попробуй поставить ip не 100, а более нормальные.. если будет работать, то выложи еще раз плиз | |
|
|
|
|
|
|
|
для: NeO
(10.07.2006 в 21:44)
| | Лучше приведи пример, с ккоторым пускает, а я уж под него проверять буду | |
|
|
|
|
|
|
|
для: Football
(11.07.2006 в 10:17)
| | Вот.. Пишет что доступ запрещён...
диапазоны ip:
85.158.48.0 – 85.158.55.255
80.255.176.0 – 80.255.191.255
<?
$ip="80.255.178.***"; // IP адресс
$ip_masiv_nachalo=array("85.158.48.0","80.255.176.0"); // Диапазоны начал
$ip_masiv_conec=array("85.158.55.255","80.255.191.255"); // Диапазоны конец
$count_masiv=count($ip_masiv_nachalo); // ну кол-во собственно
$dostup=true; // в начале доступ открыт
for ($i=0;$i<$count_masiv;$i++) { // ну а далее понеслась проверка
$ip_nachalo=explode(".",$ip_masiv_nachalo[$i]);
$ip_conec=explode(".",$ip_masiv_conec[$i]);
$ip_adress=explode(".",$ip);
if ($ip_adress[0]<$ip_conec[0] and $ip_adress[0]>$ip_nachalo[0]) {
$dostup=false;
}
if ($dostup && $ip_adress[1]<$ip_conec[1] and $ip_adress[1]>$ip_nachalo[1]) {
$dostup=false;
}
if ($dostup && $ip_adress[2]<$ip_conec[2] and $ip_adress[2]>$ip_nachalo[2]) {
$dostup=false;
}
if ($dostup && $ip_adress[3]<$ip_conec[3] and $ip_adress[3]>$ip_nachalo[3]) {
$dostup=false;
}
}
if (!$dostup) {
echo "Пошёл отсюда";
}
?>
|
| |
|
|
|
|
|
|
|
для: NeO
(11.07.2006 в 16:37)
| | Понял в чем ошибка.
Вам видимо нужен был скрипт, который пускает, если IP входит в диапазон. А мой скрипт наоборот, запрещает, если IP в этот диапазон входит. В принципе, это очень похожие задачи, так что изменить скрипт надеюсь вам не соствит труда... | |
|
|
|
|
|
|
|
для: Football
(11.07.2006 в 16:57)
| | и как же его переделать? =) | |
|
|
|
|
|
|
|
|
для: Loki
(10.07.2006 в 19:38)
| | . | |
|
|
|