Как проверить есть ли в файле значение равное $dd, ....

Fynjy

Guest
Как проверить есть ли в файле значение равное $dd, ....

Как проверить есть ли в файле значение равное $dd, если есть то нечего не делать, если нет, то записать его в файл.
 

Fynjy

Guest
$ip = $REMOTE_ADDR;
$fileip="ip.dat";
$m= file($fileip);
foreach($m as $v)
if(preg_match("/$ip/", "$v")) {$al2 = count($m);}
else{$fp = @fopen($fileip,"a+");$al_2="$ip\n";@fputs($fp,$al_2);@fclose($fp);$al2 = count($m);}

Так или не так.
 

Фанат

oncle terrible
Команда форума
какой кошмар
какой УЖАС.

Fynjy
Скажи, где находятся такие места, где учат так писать программы?

-~{}~ 27.08.04 10:07:

Diesel а кроме регулярных выражений тебе других способы найти вхождение неизвестно?
 

Fynjy

Guest
Так вот именно что негде не учат....
а я бы с удовольствием поучился
 

Фанат

oncle terrible
Команда форума
но откуда-то ты ведь это взял?
Не сам же ты придумал?
писать код в одну строчку, так чтобы ВООБЩЕ ничего неользя было понять?
ставить собаки так, чтобы если возникла ошибка, ты бы никогда о ней не узнал?

А какова логика твоей программы - не подскажешь?
Вот у тебя цикл.
и что в этом цикле происходит.
Можешь рассказать своими словами, без кода?
 

Demiurg

Guest
Fynjy
не надо никаких preg_match.
как узнать находится ли одна строка в другой знаешь ?
 

Fynjy

Guest
Смысл такой, определяем ip, сверяем есть ли такой ip в базе, если есть то выводим кол-во строк бызы, если нет записываем этот ip в базу и снова выводим кол-во строк;
-- Нет незнаю
 

Фанат

oncle terrible
Команда форума
стоп.
у тебя там какой-то цикл.
вот внутри цикла у тебя что происходит?

А ты не пробовал этот код запускать, к примеру?

-~{}~ 27.08.04 10:21:

За что я ОЧЕНЬ не люблю этот форум?
Напишешь нормальный код - человек его слямзит, и, как был дураком - так и останется.
Не напишешь - тебе же хуже. Придет ламер вроде дизеля и, чтобы показать всем, какой он умный и крутой, напишет чудовище хуже прежнего. Но работающее. Этот код у него со слезами благодарности на глазах возьмут и забудут о форуме.
До следующей сходной проблемы.
 

alpes

Весь мир на ладони
Fynjy
логиак:
1. открыываешь файл на чтение и запись
2. блокируешь файл от записи
3. считываешь весь контент
4. задаешь поиск искомой строки
5. если результат отрицательный добавляешь строку
6. снимаешь блокировку и закрываешь файл

ф-ии:
1. fopen
2. flock
3. fread, filesize,
4. strpos
5. fwrite, fflush
6. flock, fclose

для подсчета количества строк (если так надо) модифицурушь сам
 

Fynjy

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

Фанат

oncle terrible
Команда форума
Дл начала прочитаем твою программу. То, что ты написал, читать невозможно.
В оформлении программ придумали два простых правила.
1. Каждый оператор на своей строке.
2. логические блоки отделаются отступами. Чтобы видеть - какой в какой вложен.
Код:
foreach($m as $v) {
  if(preg_match("/$ip/", "$v")) {
    $al2 = count($m);
  } else {
    $fp = @fopen($fileip,"a+");
    $al_2="$ip\n";
    @fputs($fp,$al_2);
    @fclose($fp);
    $al2 = count($m);
}
Далее?
что мы здесь видим?
а видим мы здесь ЦИКЛ
Повтор операций.
Повтор столько раз, сколько у тебя ip в файле.
и ЗАПИСЬ в файл мы видим - тоже в ЦИКЛЕ.

-~{}~ 27.08.04 10:30:

alpes-а не слушай - он бредит.
тебе нужно
file_get_contents - прочитать файл
substr_count() посчитать, сколько в файле переводов строк (\n)
strpos - найти, есть ли в файле твой ип.
если есть - вывести количество строк.
если нету - записать.
fopen "a" БЕЗО всяких плюсов!
fwrite
fclose
и вывести количество плюс 1

-~{}~ 27.08.04 10:31:

и никаких собак
 

alpes

Весь мир на ладони
Фанат
извини, но ты ламеришь
чтобы без обид:
твой алгоритм с легкостью может пропустить несколько одинаковых записей в файл (из-за паузы между чтением и записью).
Дальше..
для подсчета строк ему надо добавить только explode() по уже имеющемуся контенту и count()

-~{}~ 27.08.04 10:45:

да, substr_count будет корретней explode+count
 

_RVK_

Новичок
Придет ламер вроде дизеля и, чтобы показать всем, какой он умный и крутой, напишет чудовище хуже прежнего
Фанат, зачем так говорить? Тебе доставляет удовольствие оскарблять людей? Или ты считаешь что твой подход единственно верный. Или ты где то видел код, написанный мной криво, нечитабельно, с использованием собак и прочей бяки. Если есть что сказать, можешь сюда, можешь в приват, чтоб не засорять топик.
 

Dallas

Guest
file() тут не покатит, если в искомой строке есть переводы строки. Поправьте, пожалуйста, если ошибаюсь.
 

Фанат

oncle terrible
Команда форума
Fynjy
не слушай их.
Тебе бы хотя бы базовые операции с файлом освоить - чтение-запись.
вот когда будешь их понимать, научишься скрипты писать, начнешь понимать, что делает тобой написанное, когда посещаемость твоего сайта перевалит за 10 человек в день - вот тогда и будешь ловить случаи, когда у тебя страницу запрашивают два пользователя в одну и ту же микросеекунду.
 

Fynjy

Guest
$ip = $REMOTE_ADDR;
$fileip="data.dat";
$m=file_get_contents($fileip);
$pos = strpos($m, $ip);
if ($pos === false) {
$fp = fopen($fileip,"a");
$al_2="$ip\n";
fwrite($fp,$al_2);
fclose($fp);
$al2 = count(file($fileip));
}
else {
$al2 = count(file($fileip));
}
--Я сделал так, незнаю правельно или нет, но работает..
 

Demiurg

Guest
>$al2 = count(file($fileip));
это зачем ?
Фанат же сказал, как подсчитать количество.
 

Fynjy

Guest
это чтобы считать кол-во сторк в файле. чем она отличается от count
 
Сверху