Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Реализация счётчика (https://javascript.ru/forum/misc/86453-realizaciya-schjotchika.html)

cupoma58 13.05.2025 20:34

Реализация счётчика
 
Нашёл счётчик на PHP+mySQL+JS. На страничку вставляется кодом:
cookie_detect=' ';
document.cookie = 'kamsoft=1; path=/'; 
cookie_detect += 'c=' + (document.cookie?'Да':'Нет'); 
document.write ('<img src="counter/counter.php"' + cookie_detect + '&p=' + window.location.pathname + '&rand=' + Math.random() + 'alt="счётчик" border="0" width="88" height="57" />');

Он, по идее, реализует изображение счётчика (file.png), с наносимыми на него, через PHP, цифрами. Поскольку счётчик - не появился, хотелось-бы быть уверенным в работоспособности этого кода.
Буду признателен за помощь.

Aetae 13.05.2025 22:17

Наверное так:
cookie_detect='';
document.cookie = 'kamsoft=1; path=/'; 
cookie_detect += 'c=' + (document.cookie?'Да':'Нет'); 
document.write ('<img src="counter/counter.php?' + cookie_detect + '&p=' + window.location.pathname + '&rand=' + Math.random() + '" alt="счётчик" border="0" width="88" height="57" />');

Иначе у тебя параметры в php не передаются, а пишутся как атрибут img.

cupoma58 14.05.2025 10:42

Это - трёх-уровневый счётчик. Общее количество просмотров, просмотры за сегодня и количество посетителей. Насколько я понимаю - за создание текста на счётчике (file.png) - отвечает php-файл. А скрипт - срисовывает это изображение. Я не до конца понимаю содержимое скобочек (кроме - рандома), не нашёл материала.
Предложенный вариант - не сработал, к сожалению.

cupoma58 14.05.2025 13:33

Цитата:

Сообщение от Rise (Сообщение 557405)
Из-за кириллицы может не работать.
Покажи.

Здесь, добавления файла, нет. Это - код:
<?php
// запрещаем вывод предупреждений
error_reporting(-1);

include("connect_db.php");

if (!extension_loaded("gd")) {
    echo"<font color='#ff0000'>Не загружен модуль GD</font>";
    exit;
} 

// определяем ip-адрес и дату
$ip = (isset($_SERVER["REMOTE_ADDR"])) ? $_SERVER["REMOTE_ADDR"] : false;
$date = date("Y-m-d");

// перед добавлением информации в БД нужно применить addslashes(), для JS
$cookie = addslashes($today_hosts);
$referer = addslashes($r);                                          // &r 
$java = addslashes($je);                                            // &je
$browser = addslashes($na);                                         // &na
$page = addslashes($p);                                             // &p

$result = mysql_query("INSERT INTO kscount VALUES ('".$ip."','".$cookie."','".$java."','".$browser."','".$page."','".$date."')");

// хиты (просмотры страниц) за все время
$result3 = mysql_query("UPDATE countall SET countall = countall + 1");

$result2 = mysql_query("SELECT countall FROM countall");
$num_results2 = mysql_num_rows($result2);
for ($i = 0; $i < $num_results2; $i++) {
    $row = mysql_fetch_array($result2);
    $all_hits = htmlspecialchars(stripslashes($row["countall"]));
}

// хиты за сегодня
$result4 = mysql_query("SELECT * FROM kscount WHERE date='$date'");
$today_hits = mysql_num_rows($result4);

// хосты (посетители) за сегодня
$result5 = mysql_query("SELECT DISTINCT usip FROM kscount WHERE date='$date'");
$today_hosts = mysql_num_rows($result5);

// если число будет длиннее 15 цифр или неизвестно, то выведем знак ?
if (strlen($all_hits) > 15 || !isset($all_hits)) {$all_hits = "?";}             
if (strlen($today_hits) > 15 || !isset($today_hits)) {$today_hits = "?";}       
if (strlen($today_hosts) > 15 || !isset($today_hosts)) {$today_hosts = "?";}  
  
// создаем картинку 
// запрещаем кэширование, чтобы картинка не сохранялась в кэше браузера, а обновлялась при каждой загрузке
header("Expires: Mon, 25 Jul 2005 10: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");
$image = ImageCreateFromPng("counter/counter.png");

// выбираем цвет для текста счетчика                  
$color = ImageColorAllocate($image, 255,255,0);        
$color2 = ImageColorAllocate($image, 0,0,255);         
$color3 = ImageColorAllocate($image, 0,0,0);           

// рисуем, например, строку $all_hits, цветом $color, шрифтом 14, лву: х=2 у=2
ImageString($image,5,2,2,"$all_hits",$color);                                                        
ImageString($image,5,2,21,"$today_hits",$color2);
ImageString($image,5,2,40,"$today_hosts",$color3);

// создаём картинку
ImageGIF($image);

// очищаем
imagedestroy($image);
?>

с.26 - как показывает база/таблица, срабатывает, однозначно.
Это - новый, установочный, код:
cookie_detect=' ';
document.cookie='kamsoft=1;path=/'; 
cookie_detect+='c='+(document.cookie?'Да':'Нет'); 
document.write(
    '<img src="counter/counter.php"'
    +cookie_detect+
    '&r=' +escape(top.document.referrer)+ 
    '&je='+navigator.javaEnabled()+
    '&na='+navigator.appName+navigator.appVersion+
    '&p='+window.location.pathname+
    '&rand='+Math.random()+
    'alt="счётчик" border="0" width="88" height="57" />'
);

voraa 15.05.2025 12:31

cupoma58, Во втором посте писали уже, что параметры запроса неверно передаются. Нужен "?".

'<img src="counter/counter.php?"'

cupoma58 16.05.2025 11:55

Благодарю за советы. С JS - всё, было, в порядке. В PHP, несколько ляпов, было. Всё заработало.


Часовой пояс GMT +3, время: 17:30.