Как на PHP сделать запись в txt-файл на новую строку?

Здравствуйте. Иногда в PHP возникает необходимость поработать с файлами. К примеру, мне захотелось для 1 сайта хранить список определенных дополнительных строк, которые нужны для проверки в скрипте. И чтобы не добавлять эти строки в базу данных и не создавать там лишнюю таблицу, можно создать txt-файл.

Другое дело, а как на PHP записать в этот txt-файл значения, 1 значение — 1 строка. К счастью, это очень просто, смотрите всего 3 строчки кода, и то последняя это просто закрытие файла, а первая — его открытие:

$f = fopen('file.txt', 'a');
fwrite($f, 'Этот текст будет записан в файл' . PHP_EOL);
fclose($f);

Итак, первой строчкой открываем файл file.txt (должен лежать в одной директории с исполняемым скриптом, иначе нужно менять путь). Ну и если у вас сам файл называется по-другому, его название меняем также, разумеется.

Второй параметр — a— это режим открытия файла. aозначает, что открываем для записи и чтения, но при этом уже имеющиеся данные не будут перезаписаны. Все режимы можно посмотреть в официальном справочнике по PHP.

Второй строка самая важная. Тут с помощью функции fwriteмы и осуществляем запись в файл. Функция принимает 2 параметра:

  1. дескриптор на файл, то есть в какой файл записывать
  2. сама строка, которую записываем, с помощью конкатенации соединяем строку и PHP_EOL — это перенос строки

Третья строка — закрываем файл.

Более практический пример

 $f = fopen('ban.txt', 'a');
    fwrite($f, ip2long($_SERVER[REMOTE_ADDR]). PHP_EOL);
    fclose($f);

Это будет примитивный пример чтобы вы понимали, как можно использовать на практике. К примеру, после определенных действий человека на вашем сайте вы хотите отправлять его ip адрес в банлист. Сам лист это, к примеру, файл ban.txt, в котором с каждой новой строки ip-адреса заблокированных пользователей. Перенос строки делается за счет константы PHP_EOL, которая, по сути, и представляет собой переход на новую строку (для txt-файлов).

IP адрес хранится в глобальном массиве$_SERVER под ключом REMOTE_ADDR. При этом в файл записывается не сам IP, а результат его преобразования в число, само преобразование выполняет функция ip2long.

Соответственно, если такое число будет записано в файл, то потом вы можете приказать скрипту получить IP человека и проработать его через ip2long, после чего построчно пройти файл и проверить, есть ли там совпадение. Если есть, то не пускаем человека на сайт, ну типо бан smile

Да, это реклама, но надеюсь, она будет полезна вам. GetUniq это сервис для вебмастеров и всех работающих с трафиком людей, с помощью которого можно выгоднее пополнять счета в кабинетах рекламных сетей, таких как Яндекс.Директ, MyTarget, ВК Таргет и другие. Без использования сервиса вам придется заплатить 1180 рублей за пополнение счета в Директе на 1000, а используя возможности Getuniq за эти же 1180 на ваш счет поступит 1100-1200 рублей! То же самое для всех других сетей. Я сам уже начал использовать и порекомендовал всем знакомым вебмастерам, рекомендую и вам. При желании, по этой ссылке вы можете почитать мой обзор сервиса.

В следующий раз я расскажу вам, как же все-таки построчно пройти файл на PHP.

Добавить комментарий