Все для Веб мастера и создания сайта

Портал посвященный веб мастерам и созданию сайтов. На сайте вы сможете найти статьи по оптимизации сайта, все для Adobe Photoshop, иконки, шрифты, исходники, уроки графики и веб дизайна…

ВВЕДИТЕ ВАШ ПОИСКОВЫЙ ЗАПРОС В ЭТУ ФОРМУ И НАЖМИТЕ НА КНОПКУ "ПОИСК"




Создавая текстовый счетчик, мы ограничены свойствами текста в браузере. Если же Вы хотите чегото из ряда вон выходящего, удовлетворяющего Вашему полету фантазии, то Вам подойдет как раз описываемая тема.

Данный пример демонстрирует работу простого графического счетчика. По функциональности он совершенно идентичен текстовому счетчику.

Для работы этого счетчика необходимо создать графическое изображение, которое послужит базой для счетчика.

Это изображение надо сохранить под именем counter.png

В скрипте использована библиотека GD, перед тем как пользоваться этой библиотекой, узнайте у хостера, подключена ли эта библиотека. Теперь сам скрипт:

<?php
$dat_file="counter.dat"; // Файл счетчика
$log_file="counter.log"; // Файл списка IP
// Открывем файл счетчика и считываем текущий счет
// в переменную $count
$f=fopen($dat_file,"r");
$count=fgets($f,100);
fclose($f);

$count=ereg_replace(" ","",$count); // Удаляем символ конца строки
$count++; // Увеличиваем счетчик
// Записываем данные обратно в файл
$f=fopen($dat_file,"w");
fputs($f,"$count ");
fclose($f);

// Создаем новое изображение из файла
$im = ImageCreateFromPNG('counter.png');
// Назначаем черный цвет
$black = ImagecolorAllocate($im,0,0,0);
// Выводим счет на изображение
Imagestring($im,1,5,20,$count,$black);
// Выводим изображение в стандартный поток вывода
Header("Content-type: image/png");
ImagePng($im);

// Записываем IP посетителя
$f=fopen($log_file,"a+");
$ip=getenv("REMOTE_ADDR");
fputs($f,"$ip ");
fclose($f);
?>

Для работы этого скрипта необходимо создать два файла, для ведения счета и для списка IP. В файле счета необходимо установить начальное значение счетчика, сделать это можно в любом текстовом редакторе.

Для вывода счётчика в html используйте :

<IMG src="counter.php" WIDTH="88" HEIGHT="31" BORDER=0>

Вот вам и готов счётчик

Комментарий от WebTager | Записано: Четверг, Март 20th, 2008 в 20:31

Быстро, а главное понятно!



Комментарий от Selimhanov | Записано: Суббота, Март 22nd, 2008 в 01:13

да, прикольно =)



Комментарий от bertix | Записано: Вторник, Март 25th, 2008 в 09:59

Легко и понятно. Thx



Комментарий от dead_star | Записано: Понедельник, Август 18th, 2008 в 22:42

жуть
ряд грубых ошибок
такое допускается только в HTML:

по стандартам XHTML это должно выглядит так:

в PHP нет таких функций как:
ImageCreateFromPNG
ImagecolorAllocate
Imagestring
Header
ImagePng

лучше взять такой код
function my_getenv($key){
$return = "";
if (is_array($_SERVER) && count($_SERVER)){
if(isset($_SERVER[$key])) $return = $_SERVER[$key];
}
if (!$return) $return = getenv($key);
return $return;
}
function get_ip(){
if (getenv(”HTTP_CLIENT_IP”) && strcasecmp(getenv(”HTTP_CLIENT_IP”), “unknown”)){
return getenv(”HTTP_CLIENT_IP”);
} elseif (getenv(”HTTP_X_FORWARDED_FOR”) && strcasecmp(getenv(”HTTP_X_FORWARDED_FOR”), “unknown”)){
return getenv(”HTTP_X_FORWARDED_FOR”);
} elseif (getenv(”REMOTE_ADDR”) && strcasecmp(getenv(”REMOTE_ADDR”), “unknown”)){
return getenv(”REMOTE_ADDR”);
} elseif (!empty($_SERVER["REMOTE_ADDR"]) && strcasecmp($_SERVER["REMOTE_ADDR"], “unknown”)){
return $_SERVER["REMOTE_ADDR"];
} else {
return “unknown”;
}
}
// GET HOST
$host = my_getenv(’HTTP_REFERER’);
// GET DATE
$date = date(”d/M/Y H:m:s O”);
// GET IP
$ip = get_ip();
// Creation log string
$visit = “[{$date}] USER_IP: {$ip}; HOST: {$host};\n”;
// Creation ip log string
$uvisit = “[{$date}] USER_IP: {$ip};\n”;
// Write statistics in log file
if (($fp = fopen(”visit.log”, “a”)) != FALSE){
fwrite($fp, $visit);
fclose($fp);
}
// Write statistics in log file
if (($fp = fopen(”unique.visit.log”, “a”)) != FALSE){
fwrite($fp, $uvisit);
fclose($fp);
}
// quantity visit
$qvisit = count(file(”visit.log”));
// quantity unique visit
$quvisit = 0;
$arip = array();
$pattern = “/^\[.*\] USER_IP: (\d{1,3}\.\d{1,3}.\d{1,3}.\d{1,3}).*/s”;
foreach (file(”visit.log”) as $line){
if (preg_match($pattern, $line, $matches) && !in_array($matches[1], $arip)){
$arip[] = $matches[1];
$quvisit++;
}
}
// Set headers information
@header(”Content-Type: image/jpeg”);
@header(”Expires: Mon, 26 Jul 1997 05:00:00 GMT”);
@header(”Last-Modified: ” . gmdate(”D, d M Y H:i:s O”));
@header(”Cache-Control: no-store, no-cache, must-revalidate”);
@header(”Cache-Control: post-check=0, pre-check=0″, false);
@header(”Pragma: no-cache”);
// Generate statistic image
$image = imagecreatefrompng(”bgimage.png”);
$color = imagecolorallocate($image, 255, 255, 255);
imagestring($image, 1, 2, 22, $quvisit, $color);
imagestring($image, 1, 2, 30, $qvisit, $color);
imagepng($image);



Комментарий от dead_star | Записано: Вторник, Август 19th, 2008 в 13:39

мда… сайтиг конечно отжигает
поправим то что он сел
надеюсь он хотябы ASCII нормально отобразит
такое допускается только в HTML:
<IMG src="counter.php" WIDTH="88" HEIGHT="31" BORDER=0>
по стондартам XHTML это должно выглядить так:
<img src="counter.php" width="88" height="31" border="0" alt="" />
в своем коде я тоже совершил ошибку
вместо
my_getenv(·HTTP_REFERER·);
надо
my_getenv(·HTTP_HOST·).my_getenv(·PHP_SELF·);
можно в код добавить еще одно условие
и тогда он будет выводить еще и статистику посещения за последний месяц



Оставьте комментарий