conta pagine lato server

santonio

Nuovo Utente
17 Gen 2023
5
0
1
Buongiorno ,
una cosa che assolutamente non capisco o non conosco : ho inserito un contatore di pagine lato server il cui codice era a disposizione su questo sito. Per altri motivi ho inserito una seconda volta il medesimo codice , gli script scrivono tabelle diverse le quali , giorno per giorno , incrementano un contatore di una riga di tabella. Il problema é che danno risultati , come pagine prodotte dal sito , assolutamente diversi , uno il doppio dell'altro. Entrambi gli script sono in un file di inclusione che e' presente in tutte le pagine.
Il sito e' in classic asp.

CODICE PRIMO SCRIPT CONTA PAGINE :
----------------------------------
<%
ggd = Day(Date())
mmd = Month(Date())
aad = Year(Date())
Set cn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("mdb-database/contapdiretto.mdb")
rs.Open "SELECT * FROM contatore WHERE gg = '" & ggd & "' AND mm = '" & mmd & "' AND aa = '" & aad & "'", cn, 1
if rs.EOF Then
cn.Execute("INSERT INTO contatore (gg, mm, aa, au, pv) VALUES ('" & ggd & "', '" & mmd & "', '" & aad & "', 1, 1)")
Session("contatorediretto") = "OK"
Else
cn.Execute("UPDATE contatore SET pv = pv + 1 WHERE gg = '" & ggd & "' AND mm = '" & mmd & "' AND aa = '" & aad & "'")
If Session("contatorediretto") = "" Then
cn.Execute("UPDATE contatore SET au = au + 1 WHERE gg = '" & ggd & "' AND mm = '" & mmd & "' AND aa = '" & aad & "'")
Session("contatorediretto") = "OK"
End If
End If
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
%>

CODICE DI RICHIAMO DEL SECONDO SCRIPT :
-------------------------------------------

<script type="text/javascript" src="/contap-w.asp"></script>





Come detto prima entrambi gli scritp sono presenti nello stesso file di inclusione uno di seguito all'altro e trovano collocazione all'interno dei tag <HEAD> </HEAD>. Il codice del secondo scritp quello richiamato nel source "contap-w.asp" é identico al primo script. A scanso di equivoci copio e incollo anche il codice di "contap-w.asp" :


CONTAP-W.ASP :
----------------------

<%@Language = VBScript%>
<!--#include file="contap-0.asp"-->
<%

Call CnOpen()
rs.Open "SELECT * FROM contatore WHERE gg = '" & gg & "' AND mm = '" & mm & "' AND aa = '" & aa & "'", cn, 1
If rs.EOF Then
cn.Execute("INSERT INTO contatore (gg, mm, aa, au, pv) VALUES ('" & gg & "', '" & mm & "', '" & aa & "', 1, 1)")
Session("contatore") = "OK"
Else
cn.Execute("UPDATE contatore SET pv = pv + 1 WHERE gg = '" & gg & "' AND mm = '" & mm & "' AND aa = '" & aa & "'")
If Session("contatore") = "" Then
cn.Execute("UPDATE contatore SET au = au + 1 WHERE gg = '" & gg & "' AND mm = '" & mm & "' AND aa = '" & aa & "'")
Session("contatore") = "OK"
End If
End If
rs.Close
Call CnClose()
%>

CONTAP-0.ASP :

-------------------

<%

Const partenza = 2010
Dim cn, rs
Function CnOpen()
Set cn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("mdb-database/contap.mdb")
End Function
Function CnClose()
Set rs = Nothing
cn.Close
Set cn = Nothing
End Function
Dim gg, mm, aa, mese, anno, arr_mese, conta, colore, tot_au, tot_pv
gg = Day(Date())
mm = Month(Date())
aa = Year(Date())
arr_mese = Array("gen", "feb", "mar", "apr", "mag", "giu", "lug", "ago", "set", "ott", "nov", "dic")
%>


Il primo script scrive o incrementa il contatore di una tabella del data base "A" ; il secondo script scrive o incrementa il contatore di un'altra tabella del data base "B" I contatori delle 2 tabelle sono assolutamente diversi , nell'ambito della stessa giornata.

Perche' ?

Grazie , saluti
 

Paolo69

Moderatore
Membro dello Staff
MOD
18 Feb 2010
555
13
18
Italy
www.caprioli.info
...ho ricontrollato più volte il codice, sicuro che non dimentichi qualche porzione di codice che inserisce nuovamente i dati nel DB?
 

santonio

Nuovo Utente
17 Gen 2023
5
0
1
Ciao Paolo e grazie per la risposta
il problema molto probabilmente è dovuto al fatto che il primo script viene sempre eseguito al richiamo della pagina (lato server) , mentre il secondo script , quello richiamato da "<script type="text/javascript" src="/contap-w.asp"></script>" è eseguito sul client con codice "lanciato" sul server ma solo al termine del caricamento della pagina. Ora se l'utente per qualche motivo chiude il browser prima che la pagina sia "disponibile" , lo script lato client non è eseguito e questo giustifica la differenza. Io credo che il motivo sia questo
 

Paolo69

Moderatore
Membro dello Staff
MOD
18 Feb 2010
555
13
18
Italy
www.caprioli.info
prova rimuovendo
Codice:
<script type="text/javascript" src="/contap-w.asp"></script>

e sostituendo quello di testa con questo, in pratica il codice è duplicato ovviamente connettendosi ai due DB diversi e rinominata la sessione:


Codice:
<%

    ggd = Day(Date())
    mmd = Month(Date())
    aad = Year(Date())

' DB CONTAPDIRETTO.MDB    
    Set cn = Server.CreateObject("ADODB.Connection")
    Set rs = Server.CreateObject("ADODB.Recordset")
        cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("mdb-database/contapdiretto.mdb")
        rs.Open "SELECT * FROM contatore WHERE gg = '" & ggd & "' AND mm = '" & mmd & "' AND aa = '" & aad & "'", cn, 1

    ' se non esiste inserisco un record nuovo 
    ' pv 1 (pagine visitate)
    ' au 1 (accessi unici)
    if rs.EOF Then
        cn.Execute("INSERT INTO contatore (gg, mm, aa, au, pv) VALUES ('" & ggd & "', '" & mmd & "', '" & aad & "', 1, 1)")
        Session("sessione1") = "OK"
    Else
    ' aggiungo +1 pv > pagine visitate
        cn.Execute("UPDATE contatore SET pv = pv + 1 WHERE gg = '" & ggd & "' AND mm = '" & mmd & "' AND aa = '" & aad & "'")
    
    ' aggiungo +1 au > accesso unico
        If Session("sessione1") = "" Then
            cn.Execute("UPDATE contatore SET au = au + 1 WHERE gg = '" & ggd & "' AND mm = '" & mmd & "' AND aa = '" & aad & "'")
            Session("sessione1") = "OK"
        End If

    End If
    
        rs.Close
    Set rs = Nothing
        cn.Close
    Set cn = Nothing


' DB CONTAP.MDB


    Set cn = Server.CreateObject("ADODB.Connection")
    Set rs = Server.CreateObject("ADODB.Recordset")
        cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("mdb-database/contap.mdb")
        rs.Open "SELECT * FROM contatore WHERE gg = '" & ggd & "' AND mm = '" & mmd & "' AND aa = '" & aad & "'", cn, 1

    ' se non esiste inserisco un record nuovo 
    ' pv 1 (pagine visitate)
    ' au 1 (accessi unici)
    if rs.EOF Then
        cn.Execute("INSERT INTO contatore (gg, mm, aa, au, pv) VALUES ('" & ggd & "', '" & mmd & "', '" & aad & "', 1, 1)")
        Session("sessione2") = "OK"
    Else
    ' aggiungo +1 pv > pagine visitate
        cn.Execute("UPDATE contatore SET pv = pv + 1 WHERE gg = '" & ggd & "' AND mm = '" & mmd & "' AND aa = '" & aad & "'")
    
    ' aggiungo +1 au > accesso unico
        If Session("sessione2") = "" Then
            cn.Execute("UPDATE contatore SET au = au + 1 WHERE gg = '" & ggd & "' AND mm = '" & mmd & "' AND aa = '" & aad & "'")
            Session("sessione2") = "OK"
        End If

    End If
    
        rs.Close
    Set rs = Nothing
        cn.Close
    Set cn = Nothing
    
%>
 

santonio

Nuovo Utente
17 Gen 2023
5
0
1
se sostituisco "<script type="text/javascript" src="/contap-w.asp"></script>" con quello che hai indicato tu i contatori risulteranno perfettamente allineati perché il codice verrà eseguito , in entrambi i casi , lato server.
grazie per la consulenza
 
Discussioni simili
Autore Titolo Forum Risposte Data
I Conta pagine document dinamico Javascript 3
Shyson Wordpress conta più messaggi di quelli che ci sono WordPress 1
F [PHP] Pagina conta verghe per carpenteria PHP 15
L Script conta colori PHP 0
P conta click in javascipt Javascript 11
pup3770 Conta occorrenze ripetute PHP 8
F conta membri come prestashop Javascript 2
asevenx conta numero di click riconoscendo indirizzo ip PHP 1
M conta valori uguali in una stringa PHP 1
S Conta click banner PHP 2
borgo italia conta caratteri da blog.mrwebmaster.it Javascript 0
I come si fa a fare un pulsante con conta click HTML e CSS 1
S Redirect e conta click con PHP e MySql scritto da Max Bossi PHP 5
W conta click Supporto Mr.Webmaster 0
A Script conta numero di file in una directory PHP 3
G Conta l’età per diventare un webmaster ???? Discussioni Varie 39
V Conta click Classic ASP 3
Silen escludersi da un conta clicks PHP 8
S Conta click PHP 0
figo1592 Creare conta click [Era:Problema con video,immagini ed mp3] Webdesign e Grafica 1
S adsense non conta le visite della notte Google AdSense 4
Z conta click e pazzia PHP 0
G Script conta download Classic ASP 1
V conta record Database 23
B conta click Classic ASP 1
M conta click per download PHP 2
giamma aiuto ho il contatore che non conta PHP 2
A Conta visite HTML e CSS 2
S Conta Click in ASP: Problemi Classic ASP 4
peppoweb Script Conta Download PHP 5
A Conta Cllick Classic ASP 17
B COMPRO PAGINE FACEBOOK 30k+ Annunci servizi di Social Media Marketing 0
D [COMPRO] Spam e pagine (o gruppi) su Facebook settore SEXY Annunci servizi di Social Media Marketing 0
M Memorizzazione temi per le diverse pagine del sito Javascript 1
G Consigli SEO per scrittura e struttura pagine SEO e Posizionamento 7
L Mysql: Nascondere le pagine dopo una ricerca PHP 1
G cerco: traffico sito, pubblicità condividente post su pagine gruppi Vendere e Acquistare pubblicita' online 0
A Mostrare dati database per pagine PHP 2
N Problema passaggio variabili tra pagine PHP 4
W Cerco Pagine Facebook Annunci servizi di Social Media Marketing 0
I Pagine instagram Annunci servizi di Social Media Marketing 0
F Creo pagine instagam con logo e 1k follower Offerte e Richieste di Lavoro e/o Collaborazione 0
R Convertire slides Powerpoint in Pagine Web HTML e CSS 7
S Trasferire dati sulle pagine del sito PHP 7
G COMPRO PAGINE INSTAGRAM 5/10/15k Annunci servizi di Social Media Marketing 1
elpirata Gestire permessi accesso alle pagine PHP 3
C COMPRO PAGINE INSTAGRAM MINIMO 100K Annunci servizi di Social Media Marketing 1
F [PHP] Aggiungere ruolo per accedere alle pagine PHP 2
A vendo 11 pagine facebook a 5 euro Annunci servizi di Social Media Marketing 1
G [PHP] chiamate di pagine condizionali PHP 2

Discussioni simili