Non riesco a cambiare l'immagine di sfondo

Stato
Chiusa ad ulteriori risposte.

Roberto_V

Nuovo Utente
29 Giu 2020
7
0
1
Buona sera a tutti
Mi chiamo Roberto_V, Sono un pensionato con la passione dell'informatica e, spesso, mi diletto a creare piccoli programmai più che altro per solo divertimento personale che, però metto a disposizione di chi li vuole usare.
In questi giorni sto completando un piccolo programma di archivio dei dati personale e documenti che tutti i giorni ci troviamo per casa (bollette, e quant'altro)
Mi sono incartato inun problema che non riesco a risolvere.
Voglio dare ad ogni utente la possibilità di gestirsi in proprio le immagini di sfondo e i colori di sfondo delle videate. Il problema arriva quando decido di cambiare l'immagine di sfondo.
In questo caso la nuova immagine arriva regolarmente in un'apposita directory del sito ma il programma, benchè la individui, non la carica in quanto si chiama come la precedente e per questo il sistema preferisce l'immagine registrata nella cache del browser e non carica la nuova.
Come posso fare per far si che se l'utente cambia lo sfondo questo venga subito utilizzato?
Grazie per l'aiuito.lo script della testa della pagine, comune a tutte le pagine del programma è il seguente:

$testa = "
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
<HTML>
<HEAD>
<TITLE>$vr_vengo personale</TITLE>
$scritti
<link rel=\"icon\" href=\"$vr_ico\" type=\"image/gif\" />
</HEAD>
<body bgcolor = \"#00ffff\" background = \"img/$vr_sfondo\">
La variabile "$vr_sfondo" richiama l'immagine di sfondo che si trova nella directory img/
Col comando apposito l'immagine cambia continuando a chiamarsi nello stesso modo (es: "VR_1.JPG " ma quando lo script la va a leggere mi presente l'immagine precedente.
Grazie per quello che potrete fare


";
 

Max 1

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
29 Feb 2012
4.449
338
83
Da regolamento del forum, come tutti noi sei tenuto ad usare il tag
PHP (2).png
quando posti del codice php, oppure la funzione codice dalla barra degli strument
box inserisci.png

Inoltre IMPORTANTE: Prima di creare una nuova discussione o di rispondere alle discussioni esistenti ricordati di leggere attentamente il Regolamento del Forum e l'eventuale regolamento specifico della sezione!

Grazie

Usa i tag per il futuro
mi raccomando altrimenti sarò costretto a cancellare le discussioni
 

MarcoGrazia

Utente Attivo
15 Dic 2009
852
20
28
62
Udine
www.stilisticamente.com
Immagine di sfondo
Caro Roberto, intanto auguri per la tua pensione, ad arrivarci per noi del '61 che ancora siamo al lavoro... detto ciò veniamo al dunque.
Come hai detto tu stessoil problema è la cache e si risolve banalmente come ho già suggerito ad altri qui dentro.
Vedo che passi il "listato" dopo averlo processato col PHP e quindi può diventare ancora più semplice.
Non so com'è il resto del tuo script ma posso ipotizzare che $testa vada a formare un insieme di variabili che unite formino la pagina, ad un certo punto questa viene unita ad altri pezzi ( vado di immaginazione dato che non fornisci altri dati ) tipo $corpo e $piede a fornire l'intera pagina.
Quindi intanto ti consiglio in questi casi di non usare le visrgolette per un costrutto così complesso ma l'heredoc che lascia più discrezionalità e semplicità costruttive, quindi il tuo frammento di codice diventa:
PHP:
$random = mt_rand();
$testa =<<<TESTA
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
<HTML lang="it">
<HEAD>
<TITLE>$vr_vengo personale</TITLE>
$scritti
<link rel="icon" href="$vr_ico"  type="image/gif">
</HEAD>
<body bgcolor = "#00ffff"  background = "img/VR_1.JPG?v=$random">
TESTA;
i marcatori <<< e il nome mnemonico in apertura e chiusura portano lo spezzone di codice formattato così come lo scriveresti in un qualsiasi editor di testo.
Quindi via i backslash di escape e tutto diventa più bello :D
Ora viene il bello, intanto se l'immagine si chiama sempre allo stesso modo, potresti tranquillamente metterla scritta col suo nome, invece di utilizzare una variabile, questa diventa inutile, poi il tutto ti permette di realizzare un "giochino" che ingannerà la cache del browser.
Cioè mettere un query string sull'immagine con un numero che cambierà ogni volta che aggiorni la pagina, facendo credere al browser, e quindi al meccanismo di caching, che lì qualcosa è cambiato, e quindi va nuovamente scaricato dal server.

Un'altra strada è quella di generare l'header per il protoccolo, solitamente ci pensa il PHP ma gli header si possono modificare a piacimento, quindi prima di inviare l'intera pagina, immagino con echo $testa . $corpo . $piede; mandi un header con un data di Exipired nel passato, ad esempio:
PHP:
header( 'Expires: Thu, 01-Jan-70 00:00:01 GMT' ); // data nel passato
echo $testa . $corpo . $piede;
A questo punto non hai più bisogno del query string sull'immagine e nemmeno di generare un codice random.
 
  • Like
Reactions: Roberto_V

Roberto_V

Nuovo Utente
29 Giu 2020
7
0
1
Caro Roberto, intanto auguri per la tua pensione, ad arrivarci per noi del '61 che ancora siamo al lavoro... detto ciò veniamo al dunque.
Come hai detto tu stessoil problema è la cache e si risolve banalmente come ho già suggerito ad altri qui dentro.
Vedo che passi il "listato" dopo averlo processato col PHP e quindi può diventare ancora più semplice.
Non so com'è il resto del tuo script ma posso ipotizzare che $testa vada a formare un insieme di variabili che unite formino la pagina, ad un certo punto questa viene unita ad altri pezzi ( vado di immaginazione dato che non fornisci altri dati ) tipo $corpo e $piede a fornire l'intera pagina.
Quindi intanto ti consiglio in questi casi di non usare le visrgolette per un costrutto così complesso ma l'heredoc che lascia più discrezionalità e semplicità costruttive, quindi il tuo frammento di codice diventa:
PHP:
$random = mt_rand();
$testa =<<<TESTA
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
<HTML lang="it">
<HEAD>
<TITLE>$vr_vengo personale</TITLE>
$scritti
<link rel="icon" href="$vr_ico"  type="image/gif">
</HEAD>
<body bgcolor = "#00ffff"  background = "img/VR_1.JPG?v=$random">
TESTA;
i marcatori <<< e il nome mnemonico in apertura e chiusura portano lo spezzone di codice formattato così come lo scriveresti in un qualsiasi editor di testo.
Quindi via i backslash di escape e tutto diventa più bello :D
Ora viene il bello, intanto se l'immagine si chiama sempre allo stesso modo, potresti tranquillamente metterla scritta col suo nome, invece di utilizzare una variabile, questa diventa inutile, poi il tutto ti permette di realizzare un "giochino" che ingannerà la cache del browser.
Cioè mettere un query string sull'immagine con un numero che cambierà ogni volta che aggiorni la pagina, facendo credere al browser, e quindi al meccanismo di caching, che lì qualcosa è cambiato, e quindi va nuovamente scaricato dal server.

Un'altra strada è quella di generare l'header per il protoccolo, solitamente ci pensa il PHP ma gli header si possono modificare a piacimento, quindi prima di inviare l'intera pagina, immagino con echo $testa . $corpo . $piede; mandi un header con un data di Exipired nel passato, ad esempio:
PHP:
header( 'Expires: Thu, 01-Jan-70 00:00:01 GMT' ); // data nel passato
echo $testa . $corpo . $piede;
A questo punto non hai più bisogno del query string sull'immagine e nemmeno di generare un codice random.


Intanto grazie per l'augurio della pensione poi veniamo al dunque:
Il effetti la variabile che indica il nome dell'immagine di sfondo è comporta da una parola (VR) e da un numero che altri non è che numero id della tabella che contiene gli utenti i quali, in teoria,, possono essere una quantità e ognuno scegliersi un'immagine di sfondo diversa.
Avevo pensato anch'io a quall'header ma non riuscivo a capire bene dove piazzarlo.
Se ho capito bene lo devo piazzare prima della stampa vera e propria della pagine html formata dalla combinazioni delle variabili $tresta.$corpo e $coda.
Sbaglio?

Grazie infinite per la dritta
 

Roberto_V

Nuovo Utente
29 Giu 2020
7
0
1
Intanto grazie per l'augurio della pensione poi veniamo al dunque:
Il effetti la variabile che indica il nome dell'immagine di sfondo è comporta da una parola (VR) e da un numero che altri non è che numero id della tabella che contiene gli utenti i quali, in teoria,, possono essere una quantità e ognuno scegliersi un'immagine di sfondo diversa.
Avevo pensato anch'io a quall'header ma non riuscivo a capire bene dove piazzarlo.
Se ho capito bene lo devo piazzare prima della stampa vera e propria della pagine html formata dalla combinazioni delle variabili $tresta.$corpo e $coda.
Sbaglio?

Grazie infinite per la dritta
Colevo dire $testa.$corpo.coda!
 
Stato
Chiusa ad ulteriori risposte.
Discussioni simili
Autore Titolo Forum Risposte Data
napuleone XP non riesco a cambiare le impostazioni delle cartelle Windows e Software 2
Pagliarulo Problema: non riesco a cambiare le pwd!!! PHP 1
B Non riesco a trovare i cognomi con i caratteri speciali in Access (Microsoft 365) MS Access 0
L Non riesco a riprodurre uno sfondo Photoshop 0
R Non riesco a rinnovare l'immagine di sfondo PHP 1
G non riesco a capire quale sia l'errore [SQL] MySQL 2
I Non riesco ad accedere ftp tramite IP in LAN Reti LAN e Wireless 6
Leshabituelles Non riesco ad aggiornare PHP PHP 0
D [HTML] Non riesco aprire foto singole in un album creato con "iWebAlbum" HTML e CSS 1
D [MS Access] aiuto non riesco a capire MS Access 6
T [PHP] aiuto....Fatal error: Uncaught Error:non riesco a capire PHP 1
O PHP 5.6 non riesco ad abilitare TSL 1.2 PHP 1
W Non riesco più a modificare i dati di una tabella da phpmyadmin MySQL 0
C non riesco a inviare la posta con account alice Posta Elettronica 1
L [Javascript] aiuto non riesco a inviare in get dal server web locale su altervista con httpRequest Javascript 0
G [Javascript] non riesco a usare ace - ReferenceError: define is not defined 1 ace.js:37:1 Javascript 0
booklisa Non riesco a connettermi: Connection timed out CMS (Content Management System) 3
A Non riesco ad inviare una mail attraverso PHP su Xampp PHP 2
otto9due Lampeggiamento solo su .hover(), inizia ma non riesco a fermarlo! jQuery 2
ANDREA20 [PHP] Non riesco ad impostare reset password invio via email PHP 6
S [PHP] Aiuto! Non riesco a richiamare una variabile PHP 2
V [PHP] Non riesco a trovare errore PHP 25
SimooRu [PHP] Non riesco a far passare i dati con i form PHP 4
elpirata [HTML] Non riesco a centrare menu orizzontale HTML e CSS 5
CristianB72 Non riesco a connettermi al DB tramite PDO Database 10
G Non riesco a spostare un cerchio fatto con tracciati in photoshop Photoshop 1
gandalf1959 IPN Listener di Paypal, non riesco a registrare utente nel mio DB PHP 14
A Non riesco più a visualizzare il codice sicurezza nel forum Supporto Mr.Webmaster 3
G Non riesco a colorare una campitura con lo strumento penna Photoshop 1
P non riesco a visualizzare i dati dopo aver inserto l'id PHP 36
P Non riesco a capire dove sta l'errore e perchè non mi memorizza il contenuto PHP 14
marino51 non riesco a caricare un allegato percgè non riesco a ridimensionare la finestra Supporto Mr.Webmaster 0
E non riesco a installare git su mac Mac e Software 0
Shyson Non riesco a modificare i commenti del visitatori Social Media Marketing 0
T Non riesco ad installare il composer su xampp Apache 0
A Non riesco a fare backup sito perchè Filezilla non scarica tutti i file! Web Server 4
P non riesco a registrarmi a MrW.Tools.it Comunicazioni dallo Staff 4
neo996sps Non riesco a fare un parse XML con PHP PHP 1
C Non riesco più ad entrare su WordPress...."È richiesto l'aggiornamento del database" WordPress 0
M non riesco a configurare Apache 0
S non riesco a capire la struttura di questo sito in PHP PHP 0
S [RISOLTO]aiuto, non riesco afar funzionare il camp odi ricerca per un DB con PHP PHP 5
Monital variabili nei link, non riesco a passarle PHP 8
L Non riesco a far funzionare un plugin (probabilmente ho sbagliato qualcosa nel richiamare lo script) jQuery 10
S non riesco ad eliminare dei caratteri in PHP - Excel PHP 10
A Html e css non riesco a capire l'errore HTML e CSS 13
C Non riesco ad attivare il sito in locale (nè in rete) - PHP / EasyPHP PHP 4
P Befana che vola non riesco a trovarla Javascript 6
A Non riesco a visualizzare il file PHP 2
neo996sps [Visual Studio] Non riesco a salvare i record Visual Basic 0

Discussioni simili