Я хочу интегрировать счетчик на свою веб-страницу, поскольку я это сделал, чтобы счетчик работал. Но что мне действительно нужно, так это чтобы этот счетчик был конкретным для каждой страницы, создаваемой за id

<?php

session_start();

$counter_name = 'counter'.$id.'.txt';
// Check if a text file exists. If not create one and initialize it to zero.
if (!file_exists($counter_name)) {
  $f = fopen($counter_name, "w");
  fwrite($f,"0");
  fclose($f);
}
// Read the current value of our counter file
$f = fopen($counter_name,"r");
$counterVal = fread($f, filesize($counter_name));
fclose($f);
// Has visitor been counted in this session?
// If not, increase counter value by one
if(!isset($_SESSION['hasVisited'])){
  $_SESSION['hasVisited']="no";
  $counterVal++;
  $f = fopen($counter_name, "w");
  fwrite($f, $counterVal);
  fclose($f); 
}
else {
    $counterVal++;
    $f = fopen($counter_name, "w");
    fwrite($f, $counterVal);
    fclose($f);
}
$counterVal = str_pad($counterVal, 5, "0", STR_PAD_LEFT);
$chars = preg_split('//', $counterVal);
$im = imagecreatefrompng("canvas.png");
$src1 = imagecreatefrompng("$chars[1].png");
$src2 = imagecreatefrompng("$chars[2].png");
$src3 = imagecreatefrompng("$chars[3].png");
$src4 = imagecreatefrompng("$chars[4].png");
$src5 = imagecreatefrompng("$chars[5].png");
imagecopymerge($im, $src1, 0, 0, 0, 0, 15, 15, 100);
imagecopymerge($im, $src2, 15, 0, 0, 0, 15, 15, 100);
imagecopymerge($im, $src3, 30, 0, 0, 0, 15, 15, 100);
imagecopymerge($im, $src4, 45, 0, 0, 0, 15, 15, 100);
imagecopymerge($im, $src5, 60, 0, 0, 0, 15, 15, 100);
// Output and free from memory
header('Content-Type: image/png');
echo imagepng($im);
imagedestroy($im);
?>

С помощью этого кода я могу видеть только обращения на главной странице. Он отображается на каждой странице с одним и тем же номером, например.

page 1 count: 100 
page 2 count: 100

После того, как я обновлю 50x страницу 1

page 1 count: 150
page 2 count: 150

Имя файла counter.php реализовано в файле шаблона с помощью следующего кода

 <img style="padding-left: 2px;" alt="Hit counter" src="http://www.example.com/counter/counter.php" />

Я искал решение, но до сих пор не нашел.
Заранее спасибо.

С уважением,
BujarA.

0
BujarA 30 Июн 2017 в 13:08
Откуда взялся $id? Вы используете его во второй строке кода, но, похоже, он не определен.
 – 
jeroen
30 Июн 2017 в 13:10
$template_content->set('id',$listing['id']); это все, но забыл написать
 – 
BujarA
30 Июн 2017 в 13:15

1 ответ

Лучший ответ

Для неопределенной переменной $id, которую вы используете, вы можете использовать, например, информацию о пути с сервера:

<?php

session_start();

$id = preg_replace('[^\w-]', '', $_SERVER['PATH_INFO']);

$counter_name = 'counter' . $id . '.txt';

// etc.

Обратите внимание, что я удалил все специальные символы, чтобы избежать проблем.

0
jeroen 30 Июн 2017 в 13:15