PDA

Visualizza versione completa : Statistiche + PHP + JS


quipo.it
30-05-2001, 13.32.35
Sto cercando di fare un contatore avanzato di accessi per pagine web. Però PHP non mi consente di reperire vari parametri, tra cui "risoluz. schermo", "colori usati", "supporto java/js/cookies"... Con javascript è una cavolata, però ho un po' di casini a passare le variabili tra i due linguaggi. Non è che esiste un modo a me sconosciuto di reperire i suddetti dati anche in PHP?

EcHo2K
30-05-2001, 15.28.37
ekkome fai? php e' server side, quelli sono dati del client e non mi sembra che vengano passati come parametri al server durante una connessione...dai un'okkiata al protocollo HTTP1.1, ma non mi sembra che siano contemplati risoluzione eprofondita' di colore.

Shinystat usa un javascript, questo sta sulla pagina:

<!-- Inizio Codice Shinystat -->
<script type="text/javascript" language="JavaScript" SRC="http://codice.shinystat.it/cgi-bin/getcod.cgi?USER=user"></script>
<noscript>
<p>This site use JavaScript, it seems that your browser doesn't support it. Please upgrade to a newer version </p>
</noscript>
<!-- Fine Codice Shinystat -->

e questo e' quello che ritorna quell'url:

<!--
lun="na";ver="na";col="na";lun=screen.width;ver=navigator.appName;
ref=""+escape(document.referrer);
if ((ref == "") || (ref == "unknown origin") || (ref == "unknown") || (ref == "undefined"))
if (document["parent"] != null)
if (parent["document"] != null)
if (parent.document["referrer"] != null)
if (typeof(parent.document) == "object")
ref=parent.document.referrer;
if ((ref == "") || (ref == "unknown origin") || (ref == "unknown") || (ref == "undefined"))
if (document["referrer"] != null)
ref=document.referrer;
if(ver != "Netscape"){col=screen.colorDepth}
else{col=screen.pixelDepth}
document.write("<a href=\"http://www.shinystat.it/cgi-bin/");
document.write("shinystatv.cgi?USER=user\" Target=\"_new\">");
document.write("<img src=\"http://www.shinystat.it/cgi-bin");
document.write("/shinystat.cgi?USER=user&NC=1&REFER="+ref+"");
document.write("&COLOR="+col+"&SIZE="+lun+"\" ");
document.write("border=\"0\"></a>");
// -->

in pratica passa allo script le varibili sul client (color depth, resolution) e lo script restituisce la piccola immagine che c'e' in tutti i siti con statistiche shinystat :)

semplice ed efficace.

quipo.it
30-05-2001, 16.21.19
Beh, lo sapevo che con js era semplicissimo, e sapevo anche già come reperire tutti i parametri che mi interessavano, ma volevo in qualche modo poterli passare ad uno script PHP che elaborasse questi e altri dati... mah, prima o poi ci riuscirò.

quipo.it
30-05-2001, 22.28.44
OK: ora sono riuscito a far funzionare tutto.
Ho inserito nelle pagine da monitorare uno script js che passa ad un file.php varie info, e il file.php si occupa di aggiungere altre notizie e inserire tutto nel db.
Quello che vorrei fare io però è esportare lo script js in un file esterno, così da poterlo includere quando e dove voglio in qualunque pagina html o php, tramite una semplice inclusione (del tipo: <script language="Javascript" src="myscript.js"></script>), senza dover inserire in ogni pagina 30 righe di codice. Però così facendo il file php non viene più elaborato. C'è un modo per fare quanto segue:
- l'utente richiede la pagina;
- sul SERVER viene incluso lo script js, viene elaborato il file.php richiamato da quest'ultimo, e viene restitutita all'utente la pagina?

Si accettano proposte indecenti... :D

[Edited by quipo.it on 31-05-2001 at 09:45]

EcHo2K
31-05-2001, 17.27.53
ma scusa se nello script scrivi: una cosa tipo questa:

document.write("<a href=\"http://www.shinystat.it/cgi-bin/");
document.write("shinystatv.cgi?USER=user\" Target=\"_new\">");
document.write("<img src=\"http://www.shinystat.it/cgi-bin");
document.write("/shinystat.cgi?USER=user&NC=1&REFER="+ref+"");
document.write("&COLOR="+col+"&SIZE="+lun+"\" ");
document.write("border=\"0\"></a>");

ripresa dal codice che avevo postato prima...cosi' non funziona?

quipo.it
31-05-2001, 18.10.12
Certo che funziona, inserendo fisicamente lo script nella pagina, ma a me sarebbe piaciuto minimizzare al massimo il codice da inserire in ogni pagina, quindi ad es. tramite l'inclusione dello script tramite una chiamata... Così sarebbe molto più facile e veloce da implementare in molte pagine... ma forse non si può avere tutto dalla vita! :D :D