'spetta... ma la pagina è uno Script PHP o una pagina HTML statica?
'spetta... ma la pagina è uno Script PHP o una pagina HTML statica?
I DON'T Double Click!
Dunque, la situazione e' questa:
ho un sito fatto perlopiu' di pagine html (estensione: .htm).
Voglio fare in modo che l'apertura di una delle pagine html del sito
abbia come effetto collaterale di aggiungere un record in un db.
Il record dovrebbe contenere l'ip del visitatore, la pagina visitata e un timestamp.
Questo lo ottengo tramite il semplice script visits.php.
Ho visto che se cambio l'estensione delle mie pagine html in php, e includo il seguente
codice
La cosa funziona. In questo caso la pagina visitata la deduco da $_SERVER['PHP_SELF'].Codice PHP:<?php include 'visits.php'; ?>
Fin qui tutto bene, se non che devo cambiare tutte le estensioni e i link del sito.
Allora mi sono chiesto se fosse possibile ottenere lo stesso effetto senza stravolgere troppo
il sito. Come dicevo nel primo post, la cosa sembra fattibile inserendo uno
semplice elemento <script type="javascript" src="visits.php"></script> nelle pagine html,
il che mi pare una soluzione abbastanza minimale.
Il problema e' che questa soluzione e' un po' troppo minimale: per come funziona js, $_SERVER['PHP_SELF'] restituisce "visits.php" indipendentemente dalla pagina html "chiamante".
Allora ho pensato che potevo includere il nome della pagina chiamante nell'argomento di src,
per poi recuperarlo con un GET in php: src="visits.php?url=PAGE".
Il problema era generare dinamicamente PAGE invece di scriverlo "a mano" in ogni pagina.
Questo e' sostanzialmente quello che cercavo di capire in questo thread.
Come dicevo l'ultimo script che ho inserito (quello con scr+ipt) sembra funzionare. Mi e'
stato ispirato da questa vecchia discussione in un altro forum.
Da quel che capisco potrebbero esserci dei problemi con certi browser, che si possono
risolvere con una sintassi piu' canonica. D'altra parte la discussione e' vecchiotta,
quindi forse ora non ci sono piu' i problemi di una volta, come pare suggerire l'ultimo
intervento.
nono la questione è che era HTML e non PHP, allora devi fare:
<iframe width="0" height="0" frameborder="0" src="visits.php?url=nomePagina.htm"></frame>
Ed, ovviamente, cambiare il nome della pagina con quella dove sei al momento.
Per questo puoi usare JS:
facendo:
document.write('<iframe width="0" height="0" frameborder="0" src="visits.php?url='+window.location.pathname+'"> </frame>');
I DON'T Double Click!
ok, ho capito. E' tipo la "mia" soluzione ma usi document.write
per inserire un iframe invece che uno script js.
Ho provato ma, come prevedevi, come pagina chiamante
viene sempre dato lo script visits.php, e non, come vorrei,
l'html che contiene lo script js che scrive l'iframe.
Nel caso del mio sporchissimo script invece la pagina chiamante
e' quella giusta, cioe' l'html.
Almeno, questa e' la situazione con i browser che ho provato
(mozilla e i.e. 6 su windows, iceweasel su linux).
mmm allora non ho capito come lo metti sto script... non hai la pagina pubblicata da qualche parte?
I DON'T Double Click!
mi correggo. Quello che ho scritto sopra non e' vero.Originariamente inviato da franz_2A
Ho provato ma, come prevedevi, come pagina chiamante
viene sempre dato lo script visits.php, e non, come vorrei,
l'html che contiene lo script js che scrive l'iframe.
Il tuo metodo funziona!!
Mi sono accorto ora che ho fatto un po' di casino: il fatto e' che ho due
versioni dello script visits.php, che si differenziano per il modo in cui determinano
la pagina chiamante. Una usa $_SERVER['PHP_SELF'] e una usa il metodo GET.
Ovviamente devo chiamare la seconda (visits2.php) ma stupidamente ho copiato
il tuo codice senza mettere il 2 nel nome. d'oh!
A questo punto il tuo codice e' nettamente migliore, perche' e' decisamente piu' semplice
e leggibile del mio.
Grazie mille!