134 messaggi dal 06 marzo 2009
Salve, ho questo codice:
<%@ Control Language="C#" ClassName="counter" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.Odbc" %>
<script runat="server">
    String connectionString = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;
    protected void Page_Load(object sender, EventArgs e)
    {
        using (OdbcConnection conn = new OdbcConnection(connectionString))
        {
            string SQL = "";
            SQL = SQL + "SELECT * FROM tbl_accessi";
            conn.Open();
            OdbcCommand cmd = new OdbcCommand(SQL, conn);
            OdbcDataReader rdr = cmd.ExecuteReader();
            if (rdr.Read())
            {
                if (Session["nocontatore"] == null)
                {
                    if (Request.ServerVariables["REMOTE_ADDR"] != Request.ServerVariables["REMOTE_ADDR"])
                    {

                        string SQL_ = "";
                        SQL_ = SQL_ + "UPDATE tbl_accessi SET tbl_accessi.counter = counter+1;";
                        OdbcCommand cmd2 = new OdbcCommand(SQL_, conn);
                        cmd2.ExecuteNonQuery();
                    }
                    else { }


                }
                
                    Contatore.Text = "" + rdr["counter"].ToString() + "";
                
            }
            else
            {
                Contatore.Text = "Errore";
            }
        }
        
    }
</script>
totale visiste sito:<asp:Label id="Contatore" runat="server"></asp:Label>

Mi dite come fare ad bloccare l'ip, per non fare altri update e fare gli update giusti senza che i contatore cambia ogni volta che si naviga il sito?.

Non mi dite perchè uso odbc, lo uso solo per un sito che ha solo quello.

Grazie.
luy wrote:
Mi dite come fare ad bloccare l'ip, per non fare altri update e fare gli update giusti senza che i contatore cambia ogni volta che si naviga il sito?.

aggiungi una tabella dove logghi l'IP e poi quando fai la query di select ed inserimento, verifichi che quel record non ci sia più. devi sicuramente cambiare approccio, perchè ora tu logghi un numero, mentre dovresti passare a loggare una data ed un IP, perchè mi immagino che tu voglia loggare l'IP quanto meno una volta al giorno.
.

Daniele Bochicchio (ASPItalia.com)
I libri su HTML5, WP7, ASP.NET 4.0, VB 2010, C# 4, Entity Framework
Senior Software Architect @ 5DLabs.it
134 messaggi dal 06 marzo 2009
Salve, ho provato , ma non so come mai non aggirona e non inserisice nulla nel db,
mi protesti dare un'occhiata ad questo codice che sto provando ad fare.
Non mi inserisce i dati nella tabella ... solo che faccio ancora casini con i if.
ecco il codice:
<%@ Control Language="C#" ClassName="counter" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.Odbc" %>
<script runat="server">
    String connectionString = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;
    protected void Page_Load(object sender, EventArgs e)
    {
        using (OdbcConnection conn = new OdbcConnection(connectionString))
        {
            string SQL = "";
            SQL = SQL + "SELECT * FROM tbl_accessi";
            conn.Open();
            OdbcCommand cmd = new OdbcCommand(SQL, conn);
            OdbcDataReader rdr = cmd.ExecuteReader();
            if (rdr.Read())
            {   
                if (rdr["ip"] != Request.ServerVariables["REMOTE_ADDR"])
                    {
                       
                        string SQL_ = "";
                        SQL_ = SQL_ + "UPDATE tbl_accessi SET tbl_accessi.counter = counter+1;";
                        conn.Open();
                        OdbcCommand cmd2 = new OdbcCommand(SQL_, conn);

                            cmd2.ExecuteNonQuery();
                         }
                    else {

                        string SQL_ = "";
                        SQL_ = SQL_ + "INSERT  tbl_accessi(ip)VALUES('" + Request.ServerVariables["REMOTE_ADDR"] + "')";
                        conn.Open();
                        OdbcCommand cmd2_ = new OdbcCommand(SQL_, conn);

                        cmd2_.ExecuteNonQuery();
               
                    }
                        Contatore.Text = "" + rdr["counter"].ToString() + "";

                }
                
                   
                
           
        }
        
    }
</script>
totale visiste sito:<asp:Label id="Contatore" runat="server"></asp:Label>


Grazie mille
luy wrote:
Salve, ho provato , ma non so come mai non aggirona e non inserisice nulla nel db,

scusami, ma questo codice non è corretto nelle intenzioni. dovresti prima di tutto verificare che l'IP non abbia già fatto una richiesta nell'intervallo che ti sei prefissato e se non c'è aggiungere un record. invece tu estrai tutti gli accessi, non si capisce bene perchè, poi fai un'update ed infine salvi l'IP. inoltre, occhio che questo script ti conterà l'accesso solo la prima volta, poi niente. dovresti metterci un filtro per data o qualcosa di simile.
.

Daniele Bochicchio (ASPItalia.com)
I libri su HTML5, WP7, ASP.NET 4.0, VB 2010, C# 4, Entity Framework
Senior Software Architect @ 5DLabs.it

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
In primo piano

I più letti di oggi

Media
In evidenza
MISC