Здравствуйте. Иногда в 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 параметра:
- дескриптор на файл, то есть в какой файл записывать
- сама строка, которую записываем, с помощью конкатенации соединяем строку и 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
, после чего построчно пройти файл и проверить, есть ли там совпадение. Если есть, то не пускаем человека на сайт, ну типо бан
Да, это реклама, но надеюсь, она будет полезна вам. GetUniq это сервис для вебмастеров и всех работающих с трафиком людей, с помощью которого можно выгоднее пополнять счета в кабинетах рекламных сетей, таких как Яндекс.Директ, MyTarget, ВК Таргет и другие. Без использования сервиса вам придется заплатить 1180 рублей за пополнение счета в Директе на 1000, а используя возможности Getuniq за эти же 1180 на ваш счет поступит 1100-1200 рублей! То же самое для всех других сетей. Я сам уже начал использовать и порекомендовал всем знакомым вебмастерам, рекомендую и вам. При желании, по этой ссылке вы можете почитать мой обзор сервиса.
В следующий раз я расскажу вам, как же все-таки построчно пройти файл на PHP.