Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Содержимое файла


Автор: starmaster 28.6.2004, 16:44
Есть такой код:

Код
<?
$filename = "bani.php";
$bans = file("$filename");
for ($k = 0; $k < count($bans); $k++) {
$bans[$k] = ereg_replace("\r\n","",$bans[$k]);
}
?>


То есть в файле bani.php записаны ip адреса... цикл для каждой строчки в файле убирает пробелы. И допустим надо найти слово site в содержимом этого файла, если оно найдено, то выполняется код после if , а если нет, то после else. Как это можно сделать?

Автор: Secandr 28.6.2004, 16:55
eval ($text)

Автор: Ignat 28.6.2004, 17:28
if (eregi("some",$text)){
...
}else{
...
}

Автор: starmaster 28.6.2004, 17:36
Это всё понятно, но проблема в том, что как записать из цикла получившееся в переменную?

Автор: Secandr 28.6.2004, 17:39
ничего не понял sad.gif

Автор: Ignat 28.6.2004, 17:50
В смысле строчку, содержащую "some"?
Код
<?
$filename = "bani.php";
$bans = file("$filename");
for ($k = 0; $k < count($bans); $k++) {
$bans[$k] = ereg_replace("\r\n","",$bans[$k]);
if (eregi("some",$bans[$k])) $match=$bans[$k];
}
?>

Это?

Автор: starmaster 28.6.2004, 17:50
for ($k = 0; $k < count($bans); $k++) {
$bans[$k] = ereg_replace("\r\n","",$bans[$k]);
}

Этот цикл удаляет из каждой строчки пробелы. Затем нужно записать результат работы цикла в переменную, то есть получится одна целая строка и уже затем искать слово в этой строке...

Объясню подробней: в этот файл будут вписываться ip адреса, затем если ip адрес посетителя находится в этом файле, значит он забанен

Автор: Ignat 28.6.2004, 17:54
Цитата(Secandr @ 28.6.2004, 18:39)
ничего не понял sad.gif

Аналогично omg.gif

Автор: IZ@TOP 29.6.2004, 10:17
Если тебе нужно банить юзеров по ip то это делается проще чем ты решаешь эту проблему:
Цитата
<?php
$ips = file('base/bans.ip'); // читаем файл в массив.
for($i = 0; $i < sizeof($ips); $i++) {
    if(trim($ips[$i]) == $_SERVER['REMOTE_ADDR']) { // Есть замечательная функция trim которя убирает пробельные символы в начале и конце строки. В этом выражении мы проверяем: равен ли ip пользователя ($_SERVER['REMOTE_ADDR']) строке из файла. Естественно что в файл ip адреса должны писаться построчно. 1 ip на строчку.
        die('Вы забанены ;)');
    }
}
?>

Автор: starmaster 29.6.2004, 21:31
Спасибо, можно и так, а вот как я решил эту проблему:
Код

<?
$filename = "ip.dat";
if(file_exists($filename))
{
$ip = "$REMOTE_ADDR";
$nkrk="<br>";
$f = fopen($filename,"a+");
if ($f)
{
fwrite($f,$nick);
fwrite($f,$ip);
fwrite($f,$nkrk);
fclose($f);
}
}
$filename = "bani.php";
$bans = file("$filename");
$equal="";
for ($k = 0; $k < count($bans); $k++) {
$bans[$k] = ereg_replace("\r\n","",$bans[$k]);
if (eregi($ip,$bans[$k])) {echo ("Вы забанены!"); $equal=$bans[$k];}
}
?>


Потом через админку смотришь никнейм с айпи и если нужно забанить, то добавляешь его в файл для ip забаненных...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)