За последние 24 часа нас посетили 20644 программиста и 1331 робот. Сейчас ищут 667 программистов ...

Как добавить ряд проверок, прежде чем сделать запись в файл?

Тема в разделе "PHP для новичков", создана пользователем Kuzma92, 28 мар 2024.

  1. Kuzma92

    Kuzma92 Новичок

    С нами с:
    6 мар 2024
    Сообщения:
    13
    Симпатии:
    0
    У меня есть такой код, который из формы записывает введенные в поле input данные каждый раз с новой строки:

    PHP:
    1.     if(isset($_POST['fav']))
    2.     {
    3.         $uniqueid = $_POST['uniqueid'];
    4.         file_put_contents('us/db/fav/'.$us_id.'', $uniqueid."\r\n", FILE_APPEND | LOCK_EX);
    5.         echo "<meta http-equiv=refresh content='0; url=page.php'>";
    6.         exit();
    7.     }
    HTML:
    1. <form action='' name='' method='post'>
    2. <input name='uniqueid' type='text' value=''>
    3. <button name='fav' type='submit' value='Search'>Search</button>
    4. </form>
    Этот код у меня работает прекрасно. Уважаемые специалисты, подскажите, пожалуйста, но как добавить ряд следующих проверок с условиями, прежде чем сделать запись в файл? Когда пользователь вводит данные в поле input, то первая проверка:

    1. совпадают ли введенные в поле input данные с Названием какого-либо файла в папке 'admin/db/rec/'
    - Если нет полного совпадения, то никаких действий;
    - Если есть полное совпадение, то перейти к следующей проверке:

    2. Совпадают ли введенные в поле input данные с какой-либо строкой, записанной в файле 'us/db/fav/$us_id'
    - Если нет, то записать введенные в поле input данные в файл 'us/db/fav/$us_id';
    - Если да, то никаких действий.
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.827
    Симпатии:
    738
    Адрес:
    Татарстан
    Уважаемый .... ну освойте наконец БД. Ну никто давно в файлах ничего не хранит
     
    JohnWarner нравится это.
  3. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    866
    Симпатии:
    134
    Человеку реально нужна либо годная книга, либо учитель, через форум он будет базовые знания получать годами (
     
  4. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    260
    Симпатии:
    51
    Адрес:
    Бавария, Германия
    Добрый день!
    В начале хотел бы Вас посоветовать не создавать новые ветки по одной и той же задаче.
    Не все помнят о чём Вы писали и какие вопросы задали. Вот, что мы узнали ранее.
    Если я ошибаюсь, поправьте меня.
    Вы решили организовать регистрацию клиентов с сохранением данных в файлах.
    Ваша концепция – после регистрации пользователю присваивается уникальный числовой десятизначный id,
    Данные пользователя сохраняются в файле файла в папке 'admin/db/rec/' под именем совпадающем с id.
    Все id пользователей сохраняются в файле 'us/db/fav/$us_id';
    Теперь по сути Ваше вопроса.
    1. Вы вводите uniqueid в input и очевидноб что его значение может совпасть с ранее записанным в файлах id
    другого пользователя. Поэтом у Вам необходимо сделать проверку, с которой и возникло затруднение.
    Видимо Вы не понимаете, что это у Вас получилась игра отгадай число.
    Так uniqueid никто не присваивает. Я советовал Вам оказать от файлов и СУБД. Тогда было бы всё просто.
    В таблице описывается структура поля userid как unique и AI.
    Если по каким-то соображениям Вы хотите сами создавать uniqueid, то известно несколько способов, например:
    - использовать функцию time;
    - сохранять в файле счётчик и его читать и наращивать при регистрации нового пользователя.

    2. Допустим, что не здесь, но в некоторых случая потребуется сделать несколько описанных Вами проверок.

    совпадают ли значение заданное переменной $fileName с названием какого-либо файла в папке 'admin/db/rec/'
    PHP:
    1. if (file_exists("admin/db/rec/$fileName")) {
    2.   echo "The file $filename exists";
    3. } else {
    4.   echo "The file $filename does not exist";
    5. }
    Совпадает ли значение заданное переменной $findLine с какой-либо строкой, записанной в файле 'us/db/fav/$us_id'
    PHP:
    1. <?
    2. function searchInFile($fileName, $findLine, $length = 4096){
    3.     /*
    4.     input:
    5.     $fileName - имя файла
    6.     $findLine - искомая строка
    7.     $length - мак.кол. байтов в строке файла или null
    8.  
    9.     output:
    10.     true - искомая строка найдена в файле
    11.     false - строка в файле не найдена или файл не существует
    12.     */
    13.  
    14.     $f = fopen($fileName, "r");
    15.     if($f)
    16.     {
    17.         while (($line = fgets($f, $length)) !== false)        {
    18.  
    19.             if (preg_match("~^$findLine$~", trim($line)))
    20.             {
    21.                 return true;
    22.                 break;
    23.             }
    24.         }
    25.         fclose($f);
    26.     }
    27.     return false;
    28. }
    29.  
    30. $res=searchInFile($fileName, $findLine);
    31. //OR
    32. $res=searchInFile($fileName, $findLine, 100);
    Удачи!
     
    Kuzma92 нравится это.