Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Поиск в файле

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
lamborg3
Отправлено: 05 Февраля, 2017 - 19:23:24
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Февр. 2017  


Помог: 0 раз(а)




Всем привет.
Есть задача: ввести некие данные и найти их на соответствие в файлике. Если данные совпадают с данными в файлике - вывести что такое есть. Если данные не совпадают - вывести что такого нет.
У меня всё работает кроме последнего: Если данные не совпадают - вывести что такого нет.

Банальное добавить else не срабатывает. Выводятся полностью все данные из файлика и проверяются.

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $word = $_POST['word'];
  3. $FL = fopen("kody1.txt", "r");
  4. if (!is_resource($FL))    {
  5.     die("Ошибка открытия файла");
  6. }  
  7. while (!feof($FL))    {
  8.     $line = fgets($FL);    
  9.    if (trim($line, "\r\n")==$word){
  10. echo 'Продукт оригинальный '.$line;
  11.    }
  12. }
  13. fclose($FL);
  14.  
 
 Top
teleoperator27
Отправлено: 05 Февраля, 2017 - 19:32:16
Post Id



Посетитель


Покинул форум
Сообщений всего: 265
Дата рег-ции: Янв. 2017  


Помог: 21 раз(а)




пример файла txt покажите. Как там данные выглядят?
 
My status
 Top
Строитель Модератор
Отправлено: 05 Февраля, 2017 - 19:47:13
Post Id



Участник


Покинул форум
Сообщений всего: 1581
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 74 раз(а)




lamborg3, добавьте условие с проверкой на пустоту.
Спойлер (Отобразить)
 
 Top
teleoperator27
Отправлено: 05 Февраля, 2017 - 19:59:13
Post Id



Посетитель


Покинул форум
Сообщений всего: 265
Дата рег-ции: Янв. 2017  


Помог: 21 раз(а)




PHP:
скопировать код в буфер обмена
  1. $file= file_get_contents('kody1.txt');
  2. $pos = strpos($file, trim($wor));
  3. if ($pos === false) {
  4.     echo "Строка не найдена, вхождения нет";
  5. } else {
  6.     echo "Строка найдена, есть вхождение";
  7. }
 
My status
 Top
lamborg3
Отправлено: 05 Февраля, 2017 - 20:23:10
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Февр. 2017  


Помог: 0 раз(а)




В файле примерно такие данные
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. wveyu
  3. g4r28
  4. pp1rp
  5. 784q8
  6.  


Если прописать else echo то код проверяет каждое слово из файла и печатает его. Мне это не нужно. А просто должно вывести что таких данных нет.

Если использовать strpos, то выводятся все близкие по значению данные: Например 111 вводим в поиск то выводятся все значения с единицами вначале, 1112, 1113 и т.д.
 
 Top
Строитель Модератор
Отправлено: 05 Февраля, 2017 - 20:42:39
Post Id



Участник


Покинул форум
Сообщений всего: 1581
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 74 раз(а)




lamborg3
PHP:
скопировать код в буфер обмена
  1. $word = $_POST['word'] = 'wveyu';
  2.  
  3. $FL = file('kody1.txt', FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES );
  4.  
  5. if (in_array($word, $FL)) {
  6.     echo 'Продукт оригинальный "'. $word .'"';
  7. } else {
  8.     echo 'Продукта "'. $word .'" нет в файле';
  9. }

(Добавление)
lamborg3, в первой строке моего примера уберёте присваивание методу POST (это было нужно для демонстрации)
 
 Top
lamborg3
Отправлено: 05 Февраля, 2017 - 20:59:43
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Февр. 2017  


Помог: 0 раз(а)




Строитель пишет:
lamborg3
PHP:
скопировать код в буфер обмена
  1. $word = $_POST['word'] = 'wveyu';
  2.  
  3. $FL = file('kody1.txt', FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES );
  4.  
  5. if (in_array($word, $FL)) {
  6.     echo 'Продукт оригинальный "'. $word .'"';
  7. } else {
  8.     echo 'Продукта "'. $word .'" нет в файле';
  9. }

(Добавление)
lamborg3, в первой строке моего примера уберёте присваивание методу POST (это было нужно для демонстрации)


Идеально, спасибо! Проблема решена.
 
 Top
Строитель Модератор
Отправлено: 05 Февраля, 2017 - 21:04:38
Post Id



Участник


Покинул форум
Сообщений всего: 1581
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 74 раз(а)




lamborg3, идеально будет, если вы закроете уязвимость, отфильтровав входящие от пользователей данные Закатив глазки
PHP:
скопировать код в буфер обмена
  1. // хотя бы так
  2. $word = htmlspecialchars($_POST['word']);

(Добавление)
Ну и проверку на существование текст. файла тоже не мешало бы добавить в скрипт.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB