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

geekbrains.ru/

Друзья, поскольку сейчас Черная Пятница, вы можете получить скидку 20% на любую перспективную IT-специальность в лучшем онлайн университете для гиков - Geekbrains!

В GeekBrains вы сможете отучиться на кого угодно, и сможете создавать что угодно: сайты, игры, мобильные приложения, используя самые современные технологии и обучаясь у мастеров своего дела. Средний срок обучения - 6-11 месяцев, после чего вы становитесь настоящим профи.

Здравствуйте. Иногда в 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

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

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

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: