| |
|
|
| | Странное дело у меня!
index.php
<?php $ips = file("ips.txt"); if(!in_array($_SERVER['REMOTE_ADDR'], $ips)) echo "Не найден!"; else "Найден!"; echo "<br>Ваш IP: ".$_SERVER['REMOTE_ADDR'];
|
ips.txt
127.0.0.1
62.200.210.156
...
|
Скрипт у меня выводит:
Не найден!
Ваш IP: 127.0.0.1
Если пробовать любое другое число, то всё находит. | |
| |
|
|
| |
|
|
| |
для: Freddie_X
(26.05.2006 в 23:11)
| | | Учтите, что строка береться с невидимым символом перевода строки "\n". | |
| |
|
|
| |
|
|
| |
для: Artem S.
(26.05.2006 в 23:18)
| | | Надо заменить "\n" на ""?
Нет, не помогает:
$ip = $_SERVER['REMOTE_ADDR'];
$ip = str_replace("\n","",$ip);
|
| |
| |
|
|
| |
|
|
| |
для: Freddie_X
(26.05.2006 в 23:26)
| | | нет, проще будет добавить к ИП перевод строки
<?
in_array($_SERVER['REMOTE_ADDR'].'\n', $ips)
|
| |
| |
|
|
| |
|
|
| |
для: ec_stasis
(26.05.2006 в 23:32)
| | | Спасибо! | |
| |
|
|
| |
|
|
| |
для: ec_stasis
(26.05.2006 в 23:32)
| | | Если '\n' поменять на "\n" (иначе просто ничего не даст), будет хороший способ ловли глюков.
Начиная от того, что под windows вместо "\n" в хвосте строки будет "\r\n",
кончая тем, что последняя строка в файле запросто может никакого довеска не иметь.
<?php
function in_file($needle, $fname)
{
foreach(file($fname) as $ip)
if(trim($ip) == $needle) return true;
return false;
}
if(in_file($_SERVER['REMOTE_ADDR'], "ips.txt" ))
echo "Found";
else echo "Not found";
?>
|
| |
| |
|
|
| |
|
|
| |
для: Trianon
(26.05.2006 в 23:50)
| | | Да, с последним элементом может возникнуть проблема... Хотя, если данные в файл пишет скрипт, то перевод строки там или всегда будет, или всегда не будет...
А про кавычки и апострофы - это для вывода, наверное справедливо только. | |
| |
|
|
| |
|
|
| |
для: Freddie_X
(26.05.2006 в 23:26)
| | | невидимый перевод строки в эелементах массива $ips | |
| |
|
|
| |
|
|
| |
для: ec_stasis
(26.05.2006 в 23:45)
| | | ec_stasis
Твой вариант хорошо работает! ;-)
Trianon
Я не люблю цикл foreach, какой-то он непонятный =\ | |
| |
|
|
| |
|
|
| |
для: Freddie_X
(26.05.2006 в 23:58)
| | | >Я не люблю цикл foreach, какой-то он непонятный =\
Он просто предназначен для ассоциативных массивов - в большинстве языков нет встроенных ассоциативных массивов и следовательно нет цикла foreach - вообще это наследие Perl - именно там он впервые появился. | |
| |
|
|
| |
|
|
| |
для: Freddie_X
(26.05.2006 в 23:58)
| | | очень полезный и удобный цикл! Очень часто просто незаменим. Советую разобраться! | |
| |
|
|
| |
|
|
| |
для: Freddie_X
(26.05.2006 в 23:11)
| | |
<?php
function utrim(&$v, $key) { $v = trim($v); }
$ips = file("ips.txt");
array_walk($ips, "utrim");
if(!in_array($_SERVER['REMOTE_ADDR'], $ips)) echo "Не найден!"; else "Найден!";
echo "<br>Ваш IP: ".$_SERVER['REMOTE_ADDR'];
?>
|
Во всех своих скриптах пользуюсь array_walk(). | |
| |
|
|