[PHP] Как сделать проверку на присутствие строки в файле?

12
Mad_Man
На сайте с 10.11.2008
Offline
162
#11
spiderbuber:
Помнится раньше на этом форуме неплохо помогали.
Походу прошли эти времена.. Жаль..

Вы в ветке веб-строительства, добро пожаловать. Если хотите помощи - читаем матчасть и спрашиваем что непонятно. Если хотим солюшен чужими руками - идём в соседнюю ветку, выбираем исполнителя и оплачиваем работу.

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

S
На сайте с 06.08.2008
Offline
130
#12

Я же Вам предлагал оплату в ЛС, но ответа так и не получил!

Mad_Man
На сайте с 10.11.2008
Offline
162
#13
spiderbuber:
Я же Вам предлагал оплату в ЛС, но ответа так и не получил!

И не получите. Я отвечаю бесплатно. Но только в рамках форума. В личку писать бессмысленно.

VulkanPartner
На сайте с 27.03.2014
Offline
91
#14
spiderbuber:
Пробую так:

<?php 

$log = $_GET['data'];
$data = file('log.txt');
$res = array_unique($data);
$fp = fopen("log.txt","a+");
fwrite($fp,"$res\n");
fclose($fp);
?>


Пишет пустой массив. Что не так?

Откуда берется log.txt тут непонятно... может, сначала вам надо данные из $log туда записать? Потому что во второй строке в $data вы считываете построчно файл log.txt, а он видимо пуст.

Попробуйте так:

1. Считываем файл в массив1 (для сравнения).

2. Делаем безопасными (экранируем хотя бы) данные, полученные из GET параметра!!!

3. Эти данные сверяем, есть ли такое значение в массиве из п.1 (функция in_array вроде).

4.1. Если есть - идем дальше

4.2. Если нет - дописываем строку в конце файла и идем дальше.

https://perestroika.team/ru/ (https://perestroika.team/ru/) Perestroika Affiliates- ведущая гемблинг-партнерка. RevShare - до 60%. CPA - до 150$.
bartik
На сайте с 03.04.2006
Offline
114
#15

VulkanPartner функция file читает сразу весь файл в массив, а не построчно.

По поводу экрана верно замечено.

spiderbuber

$log = mysql_real_escape_string(urldecode($_GET['data']));

#наш флаг
$copy =0;

#открываем файл для чтения и записи
$handle = fopen("log.txt", "a+");

#построчно проверяем файл
while (!feof($handle)) {
$buffer = fgets($handle, 4096);
if(trim($buffer) == $log){
$copy = "1";
break;
}
}

#если копий нету, то записываем
if($copy == "0"){
fwrite($handle,$log."\n");
}
#закрываем файл ;)
fclose($handle);

P.S не тестировал, писалось "на коленке" :)

Продвижение сайтов, Хостинг, Написание скриптов - ICQ 696-376
VulkanPartner
На сайте с 27.03.2014
Offline
91
#16
bartik:
VulkanPartner функция file читает сразу весь файл в массив, а не построчно.

Да, я там забыл уточнить, что в массив читает, согласен! Но все-таки построчно! Точнее фактически читает весь файл и затем построчно "запихивает" в массив. Ведь одна строка - один элемент массива.

Ваш пример с виду должен сработать, можно проверять ) Единственное, что задача поставлена не совсем четко... могут ли быть варианты с вхождением данных как части строки, нужно ли обрабатывать эти варианты и т.д. Тогда кода будет больше )

LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#17

file_get_contents и preg_match спасёт ситуацию :)

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
siv1987
На сайте с 02.04.2009
Offline
427
#18


$log = $_GET['data'];
$lfile = 'log.txt';
$logs = file($lfile, FILE_IGNORE_NEW_LINES);

if(! in_array($log, $logs)){
file_put_contents($lfile, $log."\n", FILE_APPEND);
}
S
На сайте с 06.08.2008
Offline
130
#19

И у siv1987 и bartik (с некоторыми правками) варианты рабочие.

Всем спасибо!

bartik
На сайте с 03.04.2006
Offline
114
#20

spiderbuber какие были правки? мой код грузит построчно, что важно при больших объёмах файла. ))

Если нужна помощь, обращайтесь.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий