Visualizzazione dei risultati da 1 a 4 su 4

Discussione: file_put_contents

  1. #1

    file_put_contents

    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?

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    189
    https://www.domain.tld/?id=0 ergo
    Codice PHP:
    var_dump($_GET['id']); 
    stai abbinando tramite parametro url, il che potrebbe indicare che il browser abbia in cache la pagina per ottimizzare e non sprecare tempo per i futuri usi.
    Il codice piuttosto deve controllare se è già presente il file visti.txt e validare il valore di $_GET['id'] che può essere non minore del valore già presente nel file visti.txt poiché significa ultimo id e non id.

  3. #3
    Quote Originariamente inviata da darbula Visualizza il messaggio
    https://www.domain.tld/?id=0 ergo
    Codice PHP:
    var_dump($_GET['id']); 
    stai abbinando tramite parametro url, il che potrebbe indicare che il browser abbia in cache la pagina per ottimizzare e non sprecare tempo per i futuri usi.
    Il codice piuttosto deve controllare se è già presente il file visti.txt e validare il valore di $_GET['id'] che può essere non minore del valore già presente nel file visti.txt poiché significa ultimo id e non id.
    Non sono un esperto di PHP ma penso di capire il concetto; dovrei aver già disbilitato la cache del file "visti.txt" con il file htacces:
    <files visti.txt>
    Header set Cache-Control "no-cache, no-store"
    </files>
    Comunque il valore "$vid = $_GET['id'];" è fissato dalla pagina bersaglio ed è quindi fisso, dovrei allora controllare il valore di $re che è ora "$re = array($vid => $nu[$vid]+1);" ma confrontandolo con cosa?

  4. #4
    Risolto!!!!
    Era la cache che, evidentemente, il file htaccess non bastava a bloccare;
    mi è bastato aggiungere queste tre righe all'inizio dello script PHP:
    header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
    header("Cache-Control: post-check=0, pre-check=0", false);
    header("Pragma: no-cache");

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.