Просмотр полной версии : Проверка файла (php)
Есть сайт, есть файл с IP посетителей, которым "разрешен" просмотр. Вот скрипт,блокирующий или пропускающий юзера:
<?php
$ip = $_SERVER['REMOTE_ADDR'];
$fp = fopen(ipsbase.txt', 'r');
$buffer = fgets($fp);
if (strpos($buffer,$ip) !== true) echo $buffer; //просто проверка. потом сотру
if(strpos($ip, "ipsbase.txt") === false) echo "НЕТ ТВОЕГО IP";
?>
Что-то он у меня либо всегда пропускает, либо всегда блокирует.
Как исправить?
Содержание ipbase.txt
127.0.0.1 localhost
214.73.57.1 First
FIND_ERROR
17.07.2008, 12:31
хм... а может лучше зделать с помошью .htaccess ?
Можно проще:
<?php
$ip = $_SERVER["REMOTE_ADDR"];
$ips = file_get_contents("ips.txt");
if(strpos($ips,$ip)) echo "Доступ разрешен";
else die("Acces denied");
?>
________________________________
ПРЕВЕД ВЕБКИЛЛУ! :rolleyes: :rolleyes: :rolleyes:
спс. ща попробую
Что-то не работает, опять все время блокирует, независимо есть там IP или нет
попробуй посмотри, что выводит:
echo $_SERVER["REMOTE_ADDR"];
Была у меня такая проблема на аёле, когда она все Ip считала за 127.0.0.1
Ip выводит 127.0.0.1
Все по идее должно работать, но уже вторую ночь с этим тра*аюсь и все никак=)
йа щас хостер =) я на localhost-е балуюсь...
мне надо, чтоб если в файле был 127.0.0.1, то скрипт мну пропускал, если б не был, то слал нафиг)
Neo.aka.Darkman
17.07.2008, 13:37
P3L3NG проверь правильность имен файлов!
А то не пойму то ли ipbase.txt, то ли ipsbase.txt.
сча. может йа и прадо коряффко=)
зы нет, все верно... :(
system_32
17.07.2008, 13:39
создаем фаил .htaccess
# -FrontPage-
Options None
<Limit GET POST PUT DELETE>
deny from all
allow from ИП кого нада пускать
</Limit>
рабтает) спс. жаль конечно что не скриптом...
И еще вопрос:
# -FrontPage-
Options None
<Limit GET POST PUT DELETE>
deny from all
allow from <много ip>
</Limit>
как их писать? черз запятую, ; или еще как?
может и на PHP поможете дореализовать?
Через строчки
# -FrontPage-
Options None
<Limit GET POST PUT DELETE>
deny from all
allow from 127.0.0.1
111.111.111.111
333.33.3.333
</Limit>
так?
system_32
17.07.2008, 13:59
# -FrontPage-
Options None
<Limit GET POST PUT DELETE>
deny from all
allow from 127.0.0.1
111.111.111.111
333.33.3.333
</Limit>
так?
Options None
<Limit GET POST PUT DELETE>
deny from all
allow from 127.0.0.1
allow from 111.111.111.111
allow from 333.33.3.333
</Limit>[/CODE]
так
все.всем спасибо, особенно System_32 & ChaaK.
Developer
17.07.2008, 14:38
ChaaK, ну ты простой парень :DDD
if(strpos($ips,$ip)) - нельзя так писать... Нужно if(strpos($ips,$ip) === true), ибо strpos возращает позицию первого вхождения, влючая 0. Тобишь первый IP в списке будет слаться нах, если написать как ты, хотя он и разрешен :)
if(strpos($ips,$ip) === true)
оно никогда не вернет true
-=Static=-
17.07.2008, 15:59
ChaaK, ну ты простой парень :DDD
if(strpos($ips,$ip)) - нельзя так писать... Нужно if(strpos($ips,$ip) === true), ибо strpos возращает позицию первого вхождения, влючая 0. Тобишь первый IP в списке будет слаться нах, если написать как ты, хотя он и разрешен :)
Вообще пишут обычно:
if(strpos($ips,$ip) !== FALSE)
{
// code
}
Buffalon
17.07.2008, 17:05
В твоём коде помойму считывается одна строка/
<?php
$ip = $_SERVER['REMOTE_ADDR'];
$ips = file_get_contents("ips.txt");
if(strpos($ips,$ip) !== FALSE) echo "";
else die("<html><head><title>IP Filter</title><br><br><br><center><b>Твоего ip
нет в списке
пользователей</b>");
?>
реализовал все таки на пхп...
А теперь еще вопросик =)
Вот получили мы ip из перменной
$ip = $_SERVER['REMOTE_ADDR'];
допустим 127.0.0.1
а как получить из него в новую переменную первые три группы? то есть, чтоб стало 127.0.0
зы нужно т.к ип щас у большинства динамический и указывать в базу 255-510 адресов это ужоснах
preg_replace('~(\d+\.\d+\.\d+)\.\d+~', '$1', $ip)
или
substr($ip, 0, strrpos($ip, '.'))
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot