Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Проверка файла (php) (https://forum.antichat.xyz/showthread.php?t=77442)

P3L3NG 17.07.2008 12:26

Проверка файла (php)
 
Есть сайт, есть файл с IP посетителей, которым "разрешен" просмотр. Вот скрипт,блокирующий или пропускающий юзера:

PHP код:

<?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 ?

Chaak 17.07.2008 12:34

Можно проще:

PHP код:

<?php
$ip 
$_SERVER["REMOTE_ADDR"];
$ips file_get_contents("ips.txt");
if(
strpos($ips,$ip)) echo "Доступ разрешен";
else die(
"Acces denied");
?>

________________________________
ПРЕВЕД ВЕБКИЛЛУ! :rolleyes: :rolleyes: :rolleyes:

P3L3NG 17.07.2008 12:34

спс. ща попробую

Что-то не работает, опять все время блокирует, независимо есть там IP или нет

P3L3NG 17.07.2008 12:48

Цитата:

Сообщение от ChaaK
попробуй посмотри, что выводит:
PHP код:

echo $_SERVER["REMOTE_ADDR"]; 

Была у меня такая проблема на аёле, когда она все Ip считала за 127.0.0.1

Ip выводит 127.0.0.1
Все по идее должно работать, но уже вторую ночь с этим тра*аюсь и все никак=)

P3L3NG 17.07.2008 13:04

йа щас хостер =) я на localhost-е балуюсь...
мне надо, чтоб если в файле был 127.0.0.1, то скрипт мну пропускал, если б не был, то слал нафиг)

Neo.aka.Darkman 17.07.2008 13:37

P3L3NG проверь правильность имен файлов!
А то не пойму то ли ipbase.txt, то ли ipsbase.txt.

P3L3NG 17.07.2008 13:38

сча. может йа и прадо коряффко=)

зы нет, все верно... :(

system_32 17.07.2008 13:39

создаем фаил .htaccess

# -FrontPage-

Options None

<Limit GET POST PUT DELETE>
deny from all
allow from ИП кого нада пускать
</Limit>

P3L3NG 17.07.2008 13:46

рабтает) спс. жаль конечно что не скриптом...
И еще вопрос:

# -FrontPage-

Options None

<Limit GET POST PUT DELETE>
deny from all
allow from <много ip>
</Limit>

как их писать? черз запятую, ; или еще как?

может и на PHP поможете дореализовать?

P3L3NG 17.07.2008 13:56

Цитата:

Сообщение от ChaaK
Через строчки

Код:

# -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

Цитата:

Сообщение от P3L3NG
Код:

# -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]

так

P3L3NG 17.07.2008 14:01

все.всем спасибо, особенно System_32 & ChaaK.

Developer 17.07.2008 14:38

ChaaK, ну ты простой парень :DDD

if(strpos($ips,$ip)) - нельзя так писать... Нужно if(strpos($ips,$ip) === true), ибо strpos возращает позицию первого вхождения, влючая 0. Тобишь первый IP в списке будет слаться нах, если написать как ты, хотя он и разрешен :)

k1b0rg 17.07.2008 15:27

Цитата:

if(strpos($ips,$ip) === true)
оно никогда не вернет true

-=Static=- 17.07.2008 15:59

Цитата:

Сообщение от Developer
ChaaK, ну ты простой парень :DDD

if(strpos($ips,$ip)) - нельзя так писать... Нужно if(strpos($ips,$ip) === true), ибо strpos возращает позицию первого вхождения, влючая 0. Тобишь первый IP в списке будет слаться нах, если написать как ты, хотя он и разрешен :)


Вообще пишут обычно:

PHP код:

if(strpos($ips,$ip) !== FALSE)
{
    
// code



Buffalon 17.07.2008 17:05

В твоём коде помойму считывается одна строка/

P3L3NG 21.07.2008 15:00

PHP код:

<?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>"
); 
?>

реализовал все таки на пхп...

P3L3NG 26.07.2008 17:58

А теперь еще вопросик =)
Вот получили мы ip из перменной
PHP код:

$ip $_SERVER['REMOTE_ADDR']; 

допустим 127.0.0.1

а как получить из него в новую переменную первые три группы? то есть, чтоб стало 127.0.0

зы нужно т.к ип щас у большинства динамический и указывать в базу 255-510 адресов это ужоснах

NOmeR1 26.07.2008 18:22

Код:

preg_replace('~(\d+\.\d+\.\d+)\.\d+~', '$1', $ip)
или
Код:

substr($ip, 0, strrpos($ip, '.'))


Время: 04:49