Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите пожалуйста!! Чтение из txt файла  
:(
    Опции темы
chori
Дата 1.6.2007, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 1.6.2007

Репутация: нет
Всего: нет



Здрасте!!!
Прошу помощи. Есть файл banlist.txt
Сделал форму для записи в него: каждая новая запись на новой строке.
Это вобщем то баня по айпи с админкой.
Но мне нужно сделать еще и скрипт который будет читать этот файл и брать записи в массив.
Тоже сделал, но не работает. Видимо не правильно составляет массив, т.к. когда в файле одна запсь, то все работает.
Помогите плиз. Вот собственно сам код этого скрипта:

Код

<html>
<body>
<?php 
$filename='banlist.txt';
$bp=fopen($filename,'r');
$bannedips=fread($bp,filesize($filename)); 
$banip = $_SERVER['REMOTE_ADDR'];
$bann=array($bannedips);
$countban = count($bann);
for ($i=0; $i<=$countban; $i++) {
if($banip == $bann[$i]) { die("Вы забанены администратором. $banip"); }
}
      
   fclose($bp);

?>

</body>
</html>




В чем ошибка не знаю, но думаю что скрипт не правильно читает массив. Подскажите плиз.
Заранее благодарен.


 ! 
PARROT
Пользуемся кнопкой КОД!


Это сообщение отредактировал(а) PARROT - 3.6.2007, 16:29
PM MAIL   Вверх
Golda
Дата 1.6.2007, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

Репутация: 20
Всего: 42



Не работает потому, что у Вас нет кода, разделяющего зачитанную единую строку в массив из множества записей. Строка

Код

$bann=array($bannedips);


создает массив из одного элемента - строки, записанной в $bannedips. Сделайте

Код

$bann=explode("\n", $bannedips);


А еще проще, используйте file(), а не fread(). Тогда сразу получите массив

;



--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
SelenIT
Дата 1.6.2007, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 32
Всего: 401



Вдогонку: проверять вхождение элемента в массив лучше не циклом, а специальной ф-цией in_array. Тогда скрипт можно сократить до
Код

<?php
$filename='banlist.txt';
$bann=array_map('rtrim', file($filename));
if (in_array($_SERVER['REMOTE_ADDR'], $bann)) { die("Вы забанены администратором. ".$_SERVER['REMOTE_ADDR']); }
?>



--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
Another
Дата 1.6.2007, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 232
Регистрация: 17.6.2006

Репутация: нет
Всего: -2



Ты эт случайно не для setCMS делаешь?
PM MAIL   Вверх
BuShaRt
Дата 2.6.2007, 08:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



SelenIT, 
array_map вы для чего в данном случае использовали? smile
PM MAIL   Вверх
Golda
Дата 2.6.2007, 08:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

Репутация: 20
Всего: 42



file() оставляет в элементах массива символ перевода строки. Чтобы избавиться от него, результат file() с помощью array_map() пропустили через фильтр rtrim() 


--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
BuShaRt
Дата 2.6.2007, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



Golda, 
Спасибо, я видно изначально значение функции в целом неверно понял smile
PM MAIL   Вверх
chori
Дата 4.6.2007, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 1.6.2007

Репутация: нет
Всего: нет



Цитата(Another @ 1.6.2007,  22:03)
Ты эт случайно не для setCMS делаешь?

Нет, для другого.

Golda и др.,
Спасибо большое, обьяснили новечку. Все работает.
Вот бы еще научится потом редактировать написанные айпи, тоже через админку.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0486 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.