Ссылка на статью, которую я выше приводил, почему-то нерабочая, так что выкладываю код полностью. Есть вопрос по коду счетчика.
| Код | <?php error_reporting(0);
$mysqlhost = "localhost"; $mysqluser = "root"; $mysqlpass = ""; $mysqldb = "counter";
/***** Функции ********************************** Начало */ function addSpace($num) { $strlen=17-strlen($num); $space=null; while($strlen) { $space.=" "; $strlen--; } return $space.$num; }
function normal_numeric($number) {if(!isset($number))return false; else{$strlen=strlen($number); $new=null; for ($i=$strlen-1;$i>-1;$i--) {$n = $i;$n++;if(strstr($n/3,"."))$new.=$number[$strlen-1-$i]; else if($n!=$strlen)$new.= " ".$number[$strlen-1-$i]; else$new.=$number[$strlen-1-$i];} return $new;}} /***** Функции ********************************** Конец */
$time = time(); $ip = $_SERVER['REMOTE_ADDR']; $dns = gethostbyaddr($ip); $page = $_SERVER['REQUEST_URI']; $useragent = $_SERVER['HTTP_USER_AGENT'];
$browser = 'none'; if(strpos($useragent, "MSIE") !== false) if(strpos($useragent, "Opera") == null){ $browser = 'msie'; } if(strpos($useragent, "Opera") !== false){ $browser = 'opera'; } if(strpos($useragent, "Netscape") !== false){ $browser = 'netscape'; }
$os = 'none'; if(strpos($useragent, "Win") !== false){ $os = 'windows'; } if(strpos($useragent, "Linux") !== false || strpos($useragent, "Lynx") !== false || strpos($useragent, "Unix") !== false){ $os = 'unix'; } if(strpos($useragent, "Macintosh")!== false || strpos($useragent, "PowerPC")){ $os = 'macintosh'; }
$screen = "{$_GET[w]}x{$_GET[h]}";
mysql_connect($mysqlhost, $mysqluser, $mysqlpass); mysql_select_db($mysqldb);
// Хосты и хиты $query = mysql_query("SELECT * FROM counter_hits ORDER BY id DESC LIMIT 1"); $row = mysql_fetch_row($query); if(date("Ymd",$row[7]) < date("Ymd",time())) { mysql_query("TRUNCATE counter_hits"); mysql_query("INSERT INTO counter_hits VALUES('', '$ip', '$dns', '2', '$browser', '$os', '$screen', '$time')"); mysql_query("INSERT INTO counter_hitsbydate VALUES('', '".date("d.m.Y",time())."', '1', '1')"); } else { $query2 = mysql_query("SELECT * FROM counter_hitsbydate ORDER BY id DESC LIMIT 1"); $row2 = mysql_fetch_row($query2); $hits = $row2[2]+1; $query3 = mysql_query("SELECT * FROM counter_hits WHERE ip='$ip' LIMIT 1"); $num = mysql_num_rows($query3); if($num == '0') { $host = $row2[3]+1; mysql_query("INSERT INTO counter_hits VALUES('', '$ip', '$dns', '1', '$browser', '$os', '$screen', '$time')"); } else { $row3 = mysql_fetch_row($query3); $hits2 = $row3[3]+1; $host = $row2[3]; mysql_query("UPDATE counter_hits SET hits='$hits2', time='$time' WHERE ip='$ip' LIMIT 1"); } mysql_query("UPDATE counter_hitsbydate SET hits='$hits', host='$host' WHERE date='".date("d.m.Y",time())."' LIMIT 1"); }
$query = mysql_query("SELECT * FROM counter_hitsbydate"); $hits_all = 0; while($row = mysql_fetch_row($query)){ $hits_all = $hits_all+$row[2]; }
mysql_close();
/****************************** * * Вывод всего на картинку * ******************************/
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); header("Content-type: image/png".chr(10).chr(10));
$image = ImageCreateFromPNG("counter.png");
$color1 = imagecolorallocate($image, 192, 192, 192); $color2 = imagecolorallocate($image, 255, 255, 255); $color3 = imagecolorallocate($image, 0, 0, 0);
ImageString($image,1,0,2, addSpace(normal_numeric("$hits_all")),$color1); ImageString($image,1,0,12, addSpace(normal_numeric("$hits")),$color2); ImageString($image,1,0,21, addSpace(normal_numeric("$host")),$color2); ImagePNG($image); ?>
|
для запуска счетчика нужна картинка .png и код
| Код | <script> document.write("<img src='http://www.opred.ru/counter.php?w="+ screen.width + "&h=" + screen.height + "' border='0' width='88' height='31'>"); </script>
|
Вопрос1: совсем непонятны строки - в мануале их нашел, но ничего не дало мне это... Простыми словами можно объяснить?
| Код | header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); header("Content-type: image/png".chr(10).chr(10));
|
что такое header я прочитал и пользовался им, примерно знаю его назначение, но что за параметры в скобках? Я убирал этот код и тестировал на локальном сервере - вроде все работает и без него...
Вопрос 2: Не могу понять - что именно передает переменная:
| Код | $screen = "{$_GET[w]}x{$_GET[h]}"; высоту и ширину чего? Экрана что ли?
|
|