Вывод данных из файла txt в PHP

107
05 сентября 2019, 11:00

Есть такой код, как реализовать функцию (не сильно меняя код) которая будет сравнивать ID в списке user_id.txt и в зависимости от True или False (есть или нету этот ID в списке) будет отправлять соответствующий запрос...

Если пишет первый пользователь, он срабатывает как должен:

П -> Подписка

О -> Спасибо что подписался...

П -> Подписка

О -> Я не могу тебя подписаться...

Но когда пишет второй пользователь по данной схеме, то до момента "Я не могу..." он не доходит, хотя ID пользователя есть в списке... Я новичок в PHP, надеюсь на вашу помощь.

$file_join = fopen("user_id.txt", "r"); //Открываем файл //Поиск ранее вписанных ID
$buffer_join = fread($file_join, filesize("user_id.txt")); //Читаем файл
fclose($file);  //закрываем файл

if($user_msg == "Подписаться"){
    if($user_id == "$buffer_join"){
        $v->msgSend("Я не могу тебя подписаться, ты уже подписан на рассылку!", $user_id, $access_token);           
    } else {
        $v->msgSend("Спасибо что подписался на рассылку.
        Что бы отписаться от рассылки отправьте мне: «Отписка».", $user_id, $access_token);
        $file = fopen("user_id.txt", "r"); //Открываем файл //Поиск ранее вписанных ID
        $buffer = fread($file, filesize("user_id.txt")); //Читаем файл
        fclose($file);  //закрываем файл
    if (substr_count($buffer, "$user_id")>0){ //Ищем ID пользователя // Сходство найдено
    } else { //Сходство не найдено
        $fp = fopen("user_id.txt", "a"); // Открываем файл в режиме записи 
        $mytext = "$user_id;\n"; // Исходная строка
        $test = fwrite($fp, $mytext); // Запись в файл
        fclose($fp); //Закрытие файла
        }}}

Список ID в файле user_id.txt выглядит так.

29674938; 
14143596;
Answer 1

у тебя в buffer_join попадает строка в которой что-то типа 29674938;/n14143596; - соответственно это условие не будет отрабатывать user_id = buffer_join Попробуйте перебирать каждую строку отдельно используя конструкцию:

$file_join = fopen("user_id.txt", 'r');
while (!feof($file_join )) {
    if($user_msg == "Подписаться"){
        if($user_id == "$file_join"){
          ... ваш код ...
      }
   }
}
fclose($file_join );
READ ALSO
yii2. Проблема с доступом к action в backend

yii2. Проблема с доступом к action в backend

Всем приветКогда я создаю новый action , и перехожу на него ,то backend его не видит, хотя actionLogout, actionLogin,actionIndex - работают, но мои - нет

93
Параллельные вычисления в нейросетях

Параллельные вычисления в нейросетях

Имеется нейронная сеть со следующей структурой: Я последовательно выполняю тренировку нейронной сети, прогоняя через неё набор тренировочных...

133
Как создать массив строк?

Как создать массив строк?

Как в C++ создается массив строк? В JS это делается вот так: var arr = ['one', 'two']; В C++ нет типа данных String как я понялКак решить вопрос?

132
Обратная совместимость DirectX

Обратная совместимость DirectX

Всем добрый день! Начал учить разработку с помощью DirectX по книгеКнига довольно старая и примеры используемые в ней написаны на DirectX 7 версии...

131