Счётчик обращений к файлам
Эта статья будет завершающей в цикле, посвящённому модулю mod_rewrite. И последнее, чтобы я хотел рассказать, это как сделать счётчик обращений к файлам. Не могу сказать, что это часто используется, однако, сам механизм очень интересный, и не многие о нём смогут догадаться.
Итак, у нас есть, допустим, файл price.xls, в котором мы содержим прайс-лист на наши услуги. Ссылка на этот файл находится на нашем сайте, и мы хотим при каждом обращении к этому файлу, вызывать скрипт, который будет вести лог обращений к файлу price.xls.
Первое, что приходит в голову - это сделать какой-нибудь файл price.php, где добавить информацию в лог, а затем отдать файл price.xls, отправив предварительно определённый заголовок. Это всё верно, но заменять ссылки не хочется, поэтому есть вариант и более интересный, а именно через mod_rewrite.
Чтобы сделать счётчик обращений к файлу, надо написать вот такой код:
RewriteEngine on
RewriteRule ^price.xls$ /log.php
Теперь привожу код log.php:
<?php
$file = "log.txt"; // Имя файла
$handler = fopen($file, "a+"); // Открываем файл для записи
$str = "IP=".$_SERVER["REMOTE_ADDR"].";date=".date("Y-m-d H:i:s")."\n"; // Строка для записи
fwrite($handler, $str); // Добавляем строку в конец файла
fclose($handler); // Закрываем дескриптор
$file = "price.xls"; // Скачиваемый файл
header("Content-Disposition: attachment; filename=your_price.xls;"); // Сообщаем браузеру, что сейчас должна начаться скачка файла (filename отвечает за имя файла, который увидит пользователь)
echo file_get_contents($file); // Отдаём файл браузеру
?>
Код тщательно прокомментирован, плюс он сам по себе очень простой. Если он у Вас вызывает затруднения, то обязательно сначала изучите вот этот курс.
Вот таким образом делается счётчик обращений к различным файлам. Фактически, мы могли бы поставить ссылку на log.php, вместо price.xls, однако, если таких ссылок было бы много на сайте, то пришлось бы повозиться. Плюс благодаря mod_rewrite мы можем обработать не только ссылку на price.xls, но и сразу огромное количество других ссылок, написав только соответствующие строчки в .htaccess.
-
- Михаил Русаков
Комментарии (1):
Михаил, напишите пожалуйста статью про функцию rand() в PHP.
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.