Ho fatto uno script per contare le visualizzazioni di una pagina;
lo script scarica l'array delle visualizzazioni in un file .txt oppure in un file .php e lo ricarica con le variazioni;
fin qui tutto bene:
codice con il file .txt
codice:
<?php
$file = 'visti.txt';
$json = file_get_contents($file);
$nu = json_decode($json, true);
$vid = $_GET['id'];
echo $nu[$vid];
$ti1='<div><img style="visibility:hidden; width:1px" src="Immagini/';
$ti2='.webp"></div><div style="padding-bottom:10px">';
$te1 = '<video class=video src="Video/';
$te2 = '.mp4" controls autoplay poster="Immagini/';
$te3 = '.webp">Il tuo browser non può riprodurre questo video! Aggiornalo o installane uno nuovo.</video></div>';
echo $ti1,$vid,$ti2,$te1,$vid,$te2,$vid,$te3;
$re = array($vid => $nu[$vid]+1);
$be = array_replace($nu, $re);
$data = json_encode($be);
file_put_contents('visti.txt', $data);
?>
Oppure questo con il file .php:
codice:
<?php
include 'visti.php';
$vid = $_GET['id'];
echo $nu[$vid];
$ti1='<div><img style="visibility:hidden; width:1px" src="Immagini/';
$ti2='.webp"></div><div style="padding-bottom:10px">';
$te1 = '<video class=video src="Video/';
$te2 = '.mp4" controls autoplay poster="Immagini/';
$te3 = '.webp">Il tuo browser non può riprodurre questo video! Aggiornalo o installane uno nuovo.</video></div>';
echo $ti1,$vid,$ti2,$te1,$vid,$te2,$vid,$te3;
$re = array($vid => $nu[$vid]+1);
$be = array_replace($nu, $re);
$file = 'visti.php';
$v1= "<?php \$nu = ";
$v2 = ";?>";
file_put_contents($file, $v1.var_export($be, true).$v2);
?>
Il problema consiste nel fatto che non esegue la parte incrementale dello script tutte le volte, ma solo se cancello la cache o effettuo il refresh della pagina; se chiamo direttamente la pagina esegue tutto lo script .php ma non la parte che incrementa le visualizzazioni.
Perchè mai?