|
Perl для веб-мастераНебольшие усовершенствования нашего счетчика Итак, мы научились считать заходы на нашу страницу. Допустим, мы не хотим, чтобы файл count.txt со значениями счетчика лежал в директории cgi-bin. Давайте создадим на сайте отдельную директорию, назовем ее, например, mystat, куда и скопируем файл count.txt. Не забудьте назначить файлу права доступа 666. Теперь надо в нашем скрипте указать новый путь к файлу count.txt. Помните строку: $namefile="count.txt"; казалось бы, ненужную? Ведь в принципе имя файла можно было бы указать и непосредственно при его открытии. Зато теперь, когда нам понадобилось изменить путь к файлу, достаточно изменить только эту строку. Добавим к названию файла полный путь к директории с файлами сервера и название директории, в которой этот файл у нас лежит. Например, если полный путь выглядит так: /home2/your_domen/public_html/ добавим имя созданной нами директории и получим следующее: $namefile="/home2/your_domen/public_html/mystat/count.txt"; Модернизируем. Что будет, если в браузере зайти на страницу со счетчиком и нажать "обновить"? Правильно - значение счетчика увеличится на единицу. Причем каждая новая загрузка страницы в браузер будет вызывать увеличение значения счетчика. Давайте научим наш счетчик отслеживать заходы подряд с одного IP-адреса и не засчитывать такие заходы. Для этого создадим файл с названием, например, ip.txt и положим его в ту же директорию mystat на сервере. Назначим ему права доступа 666. В этом файле мы будем хранить IP-адрес последнего посетителя, засчитанного счетчиком. Теперь осталось добавить соответствующую проверку в скрипт. Прежде всего добавим переменную, содержащую путь к файлу: $nameipfile="/home2/your_domen/public_html/mystat/ip.txt"; Теперь нам надо получить собственно IP-адрес посетителя. Содержится он в переменной $ENV{"REMOTE_ADDR"}, значение которой передается скрипту браузером посетителя вместе с запросом. Присвоим это значение переменной $ip: $ip=$ENV{"REMOTE_ADDR"}; Теперь считаем из файла ip.txt значение последнего IP-адреса, сравним его с полученным. Если они совпадают, тогда не засчитаем заход (завершив работу скрипта), если же не совпадают - увеличим значение счетчика и запишем новое значение IP-адреса в файл ip.txt: open (IPFILE, "$nameipfile"); $ipold = close(IPFILE); chomp ($ipold); if ($ipold eq $ip) { exit; } open (IPFILE, "$nameipfile"); print IPFILE "$ip"; close(IPFILE); Продолжение статьи: ч.1 Продолжение статьи: ч.2 Продолжение статьи: ч.3 Продолжение статьи: ч.4 Продолжение статьи: ч.5 Другие статьи по теме: - введение в perl- Perl для чайников от ns - почему я выбрал perl? - использование библиотеки mime-base64 - Perl для веб-мастера |
|
2006-2024 © SMTI.RU Главная страница | Связаться с нами |