16 messaggi dal 29 agosto 2018
Ciao, avrei bisogno di un piccolo aiuto, sono alle prime armi. Avevo in mente di realizzare qualcosa del genere:
Un contatore che conta quante volte accede una persona al suo account, direttamente nella tabella del database dove sono scritti "nominativo, email, nome utente, ecc.".. come posso fare?
Grazie in anticipo.
11.726 messaggi dal 09 febbraio 2002
Contributi
Ciao Samuele,
in aggiunta ai campi che hai già, puoi creare un ulteriore campo chiamato "accessi" di tipo numerico intero, e assegnagli un valore di default di 0.
Poi, nella pagina di login, subito dopo aver verificato che lo username e la password dell'utente sono corretti, esegui un comando UPDATE come il seguente:
UPDATE nome_tabella_account SET accessi = accessi + 1 WHERE username = @username


Hai già dimestichezza con l'uso di ADO.NET per l'invio di query e comandi?
E' importante fornire i valori di username e password come parametri della query o del comando.
Qui trovi la spiegazione del perché è importante usare i parametri (ti evitano vulnerabilità di tipo sql injection).
https://csharp-station.com/Tutorial/AdoDotNet/Lesson06

ciao,
Moreno

Enjoy learning and just keep making
16 messaggi dal 29 agosto 2018
ciao, scusa mi sa che avevo aggiunto la domanda nella categoria sbagliata, mi servirebbe per asp classic.
Sai come posso fare?
Grazie
Modificato da samuelpa99 il 18 settembre 2018 17.35 -
11.726 messaggi dal 09 febbraio 2002
Contributi
Ok, allora per eseguire il comando UPDATE ti servono gli oggetti ADODB.Connection e ADODB.Command.
Tu ti stai già collegando a un database? Se sì, che tipo di database?

Dim username
'Lo username lo ottieni dal form. Io qui faccio un esempio, non è detto che anche nel tuo caso il campo si chiami "username"
username = Request.Form("username")

'Qui recuperi anche la password dal form
Dim password
password = Request.Form("password")

Dim conn
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "QUI_TUA_CONNECTION_STRING"

'Qui verifico se username e password sono corrette.
'Ometto il codice perché non riguarda specificatamente la tua domanda

'Se le credenziali erano valide, allora aumento il conteggio degli accessi
'Ometto la connection string, non so che tipo di database tu stia usando

Dim cmd
Set cmd = CreateObject("ADODB.Command")
'Configuro ed eseguo il comando
With cmd
    .ActiveConnection = conn
    .CommandType = adCmdText
    .Parameters.Append .CreateParameter("p1", adVarChar, adParamInput, 50, username)
    .CommandText = "UPDATE nome_tabella_account SET accessi = accessi + 1 WHERE username = p1"
    .Execute()
End With

conn.Close()



Ciao,
Moreno

Enjoy learning and just keep making
16 messaggi dal 29 agosto 2018
ADODB.Command error '800a0bb9'

Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.

/it/manual/intranet/index.asp, line 133


Mi da questo errore ^^^^^
Alla riga 133:
.CommandType = adCmdText

Modificato da samuelpa99 il 18 settembre 2018 23.30 -
16 messaggi dal 29 agosto 2018
Ti posto qui tutto il codice della pagina così ti rendi meglio conto

<%@LANGUAGE="VBSCRIPT"%>
<% response.Buffer = true
response.Expires = 0
session.Timeout = 20 %>

<html>
<head>
<title>Autenticazione</title>
<meta name="viewport" content="width=device-width" >
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="include/css/login.css" /> 
<link rel="stylesheet" type="text/css" href="include/css/main.css">
<!--#include file= "include/setting/dbdati.asp" -->
<!--#include file="include/msginfo/msgscuola.html" -->
     <script type="text/javascript" src="counter/add.asp"></script>
<script language="javascript">
function showPopup()
{document.getElementById('WaitNote').style.visibility = 'visible';
window.scrollTo(0,0);
return true;}

function validate(theForm)
{if (theForm.username.value.length <1 || theForm.username.value.charAt(0) == " ")
{$.Zebra_Dialog("Inserire il nome utente",
{'type': 'information', 'title': 'Errore!', width: 500, 'onClose':  function(caption) {
theForm.username.focus();}});
return false;}

if (theForm.password.value.length <1 || theForm.password.value.charAt(0) == " ")
{$.Zebra_Dialog("Inserire la password",
{'type': 'information', 'title': 'Errore!', width: 500, 'onClose':  function(caption) {
theForm.password.focus();}});
return false;}
else
showPopup();}

function recuperalogin() {
new $.Zebra_Dialog("Inserire l'indirizzo email per recuperare i dati di accesso.<br><br>", {
    source: {'iframe': {
        'src':  'recoverylogin.asp',
        'height': 125,
    'scrolling': 'no'}},
    width: 500,
  buttons:  false,
  type: false,
    title: 'Recupera dati autenticazione'});}
</script>
<style>
.link {text-decoration:none;color:#333;
font-family:Verdana;font-size:13px;}
.link:hover {color:red;border:0px solid;padding:0px;}
    .auto-style2 {
        text-decoration: none;
    }
    .auto-style4 {
        height: 21px;
    }
    .auto-style5 {
        text-decoration: none;
        height: 21px;
    }
    .auto-style6 {
        font-family: Verdana;
        font-size: 13px;
        color: #333333;
    }
</style>
<% 'verifica versione del browser in uso
browser=request.ServerVariables("HTTP_USER_AGENT")
if instr(browser, "IE")>0 then
strMSG = ""
strMSG = "<font color=""#003366"" size=""2"" face=""Arial, Helvetica, sans-serif"">"
strMSG = strMSG & "<br><b>DIOCESI DI PATTI</b><br>Sistema ottimizzato per Mozila Firefox e Google Chrome. Internet Explorer non è supportata.<br><br><br><a href=""https://www.mozilla.org/it"" target=""_blank"">Scarica MOZILLA FIREFOX</a><br><br><a href=""http://www.google.com/chrome"" target=""_blank"">Scarica GOOGLE CHROME</a></font>"
response.write strMSG: response.End()
end if %>
</head>

<body background="imgsito/bglogin.gif" text="#003366">
<div id="WaitNote" style="position: absolute; visibility: hidden; top:50%; left:50%; width:250px; height:56px; margin-left:-125px; margin-top:-28px">
<table width="250" border="0" align="center" cellpadding="0" cellspacing="0" style="border:solid 1px #FF9900;">
  <tr> 
    <td height="20" colspan="2" valign="center" background="imgsito/barra3d2.gif" class="bordobassogrigio"> 
      <font color="#003366" size="1" face="Verdana, Arial, Helvetica, sans-serif">&nbsp;ATTENDERE 
      PREGO...</font></td>
  </tr>
  <tr> 
    <td width="40" height="35" valign="middle" bgcolor="#FFFFFF"> <div align="center"><img src="imgsito/timerattesa.png" width="24" height="24" align="absmiddle"></div></td>
    <td width="210" valign="middle" bgcolor="#FFFFFF">
<div align="center"><font color="#0066CC" size="2" face="Verdana, Arial, Helvetica, sans-serif">Avvio del sistema in corso</font></div></td>
  </tr>
</table>
   </div>
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" style="height:100% !important;">
  <tr>
    <td><img src="imgsito/Logo-Completo_admin_reduced.png" style="width:60%; height:auto;padding-left:20%;"></td>
  </tr>
  <tr> 
    <td height="66"><table width="90%" border="0" align="center" cellpadding="0" cellspacing="0">
        <tr> 
          <td height="20">
<% 'tipoacc=0 Sac.; tipoacc=1 admin; tipoacc=2 utente; tipoacc=3 NULL ; tipoacc=4 Vescovo; tipoacc=8 Editore; tipoacc=10 Coro; tipoacc=11 Catechista;
session("itcadmin") = null
session("itcscuola") = null
session("annosco") = null
session("itcata") = null
session("catec") = null
username=request("username")
password=request("password")


Set conn = Server.CreateObject("ADODB.Connection")
conn.open DATABASE
SQL = "SELECT newaccount,scadaccount,offline FROM impostazioni"
Set rsSet = conn.execute(SQL): SQL=""
attAccount=rsSet("newaccount")
scadAccount=rsSet("scadaccount")
sitoOffline=rsSet("offline")
rsSet.close: conn.close

if username<>"" and password<>"" then
Set conn = Server.CreateObject("ADODB.Connection")
conn.open DATABASE
SQL = "SELECT * FROM account WHERE userlog='" & replace(username,"'","''") & "' And pwslog='" & replace(password,"'","''") & "'"
Set rs = conn.execute(SQL): SQL=""

'----------nuovo per accessi -----------

Dim cmd
Set cmd = CreateObject("ADODB.Command")
'Configuro ed eseguo il comando
With cmd
    .ActiveConnection = conn
    .CommandType = adCmdText
    .Parameters.Append .CreateParameter("p1", adVarChar, adParamInput, 50, username)
    .CommandText = "account SET accessi = accessi + 1 WHERE userlog = p1"
    .Execute()
End With
'----------end per accessi -----------

if rs.eof=true then
response.write "<div align=""center""><strong><font color=""#990000"" size=""2"" face=""Arial, Helvetica, sans-serif"">AUTENTICAZIONE UTENTE ERRATA</font></strong></div>"

elseif rs.eof=false and rs("attivo")=0 then
response.write "<div align=""center""><strong><font color=""#990000"" size=""2"" face=""Arial, Helvetica, sans-serif"">IL TUO ACCOUNT RISULTA DISATTIVATO DALL'AMMINISTRATORE</font></strong></div>"
else

'verifico anno 
SQL = "SELECT annosco FROM impostazioni"
Set rs1 = conn.execute(SQL): SQL=""
annoScolastico=rs1("annosco")
session("annosco")=rs1("annosco")
rs1.close: set rs1=nothing

if rs("tipoacc")=0 then
session("itcscuola") = rs("id") & "|" & rs("tipoacc") & "|" & rs("nominativo") & "|" & rs("email") & "|" & rs("scuola1") & "|" & rs("coodiscip")
Sezione="index1.asp"
if sitoOffline=0 then call chiudiDB: response.Redirect("offline.asp")

elseif rs("tipoacc")=1 or rs("tipoacc")=4 or rs("tipoacc")=8 then
session("itcadmin") = rs("id") & "|" & rs("tipoacc") & "|" & rs("nominativo") & "|" & rs("email")
Sezione="admin/index.asp"
if sitoOffline=0 then call chiudiDB: response.Redirect("admin/indexoffline.asp")

if ((month(date)=8 or month(date)=9) and year(date)>abs(annoScolastico)) then
rs.close: set rs=nothing: conn.close: set conn=nothing
response.Redirect("messaggi.asp?m=2&as=" & annoScolastico & "&rup=" & Sezione)
end if

'account coro
elseif rs("tipoacc")=10 then
session("itcata") = rs("id") & "|" & rs("tipoacc") & "|" & rs("nominativo") & "|" & rs("email")
Sezione="coro/index.asp"
if sitoOffline=0 then call chiudiDB: response.Redirect("offline.asp")

'account catechista
elseif rs("tipoacc")=11 then
session("catec") = rs("id") & "|" & rs("tipoacc") & "|" & rs("nominativo") & "|" & rs("email")
Sezione="catechisti/index.asp"
if sitoOffline=0 then call chiudiDB: response.Redirect("offline.asp")

'account utente
elseif rs("tipoacc")=2 then
session("itcata") = rs("id") & "|" & rs("tipoacc") & "|" & rs("nominativo") & "|" & rs("email")
Sezione="ata/index.asp"
if sitoOffline=0 then call chiudiDB: response.Redirect("offline.asp")

'account utente
elseif rs("tipoacc")=12 then
session("irc") = rs("id") & "|" & rs("tipoacc") & "|" & rs("nominativo") & "|" & rs("email")
Sezione="irc/index.asp"
if sitoOffline=0 then call chiudiDB: response.Redirect("offline.asp")

'account NULL
elseif rs("tipoacc")=3 then
session("itcscuola") = rs("id") & "|" & rs("tipoacc") & "|" & rs("nominativo") & "|" & rs("email") & "|" & rs("scuola1") & "|" & rs("coodiscip")
Sezione="index1.asp"
if sitoOffline=0 then call chiudiDB: response.Redirect("offline.asp")
end if



rs.close: set rs=nothing: conn.close: set conn=nothing
response.Redirect(Sezione)
end if
rs.close: conn.close: set conn=nothing: set rs=nothing
end if 

sub chiudiDB
rs.close: set rs=nothing: conn.close: set conn=nothing
end sub
%> </td>
        </tr>
      </table></td>
  </tr>
  <tr> 
    <td height="119"> <form name="form1" method="post" action="index.asp" id="form1" autocomplete="off" onSubmit="return validate(this)">
        <table class="tablog" width="100%" border="0" cellpadding="0" cellspacing="0" style="border:solid 1px #CCCCCC;">
          <tr>
              <td>
                  <table align="center">

            <tr> 
            <td height="30" colspan="2">&nbsp;</td>
          </tr>
          <tr> 
            <td width="120"> <div align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">NOME UTENTE:</font></div></td>
            <td class="auto-style2"> <input name="username" type="text" id="username" class="textbox" value=" " onFocus="if (this.value.charAt(0)==' ') {this.value=''}"> 
            </td>
          </tr>
          <tr> 
            <td height="30" colspan="2">&nbsp;</td>
          </tr>
          <tr> 
            <td width="120" class="auto-style4"> <div align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">PASSWORD:</font></div></td>
            <td class="auto-style5"><input name="password" type="password" id="password" class="textbox"></td>
          </tr>
          <tr> 
            <td height="25" colspan="2"> <table width="100%" border="0" cellspacing="0" cellpadding="0">
                <tr> 
                  <td width="60%"></td>
                  <td width="40%"> <div align="right"><a class="auto-style2" href="msg"><span class="auto-style6">Assistenza</span></a>&nbsp;</div></td>
                </tr>
              </table></td>
          </tr>
          <tr> 
            <td height="30" colspan="2"> <table width="100%" border="0" cellspacing="0" cellpadding="0">
                <tr> 
                  <td width="60%"> <% if attAccount=1 and scadAccount>=cdbl(date) then %> <a href="newaccount.asp" class="link">&nbsp;Registrati</a><% end if %></td>
                  <td width="40%"> <div align="right"><a href="javascript:recuperalogin();" class="link">Recupera 
                      login</a>&nbsp;</div></td>
                </tr>
              </table>
                
                  </table>
              </td>
          </tr>
            </td>
          </tr>
        </table>

        <table width="90%" border="0" align="center" cellpadding="0" cellspacing="0">
          <tr> 
            <td height="25">&nbsp;</td>
          </tr>
          <tr> 
            <td><div align="center"> 
                <input type="submit" name="Submit" value="Autenticazione" id="Submit" class="css_button">
              </div></td>
          </tr>
        </table>
      </form></td>
  </tr>
  <tr> 
    <td></td>
  </tr>
  <tr> 
    <td style="height:100% !important;">&nbsp;</td>
  </tr>
</table>
</body>
</html>
55 messaggi dal 09 febbraio 2005
Ciao,
per quanto riguarda l'errore
probabilmente ti manca l'include del file ADOVBS.INC
che contiene le dichiarazioni delle varie costanti adXxxx.
in alternativa invece delle costanti adXxxx devi usare il loro valore.
Modificato da sspintux il 19 settembre 2018 11.16 -
16 messaggi dal 29 agosto 2018
Adesso l'errore è cambiato:
Microsoft JET Database Engine error '80040e14'

Invalid SQL statement; expected 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT', or 'UPDATE'.

/it/manual/intranet/index.asp, line 136

Ecco la 136

    .Execute()


Sarebbe la penultima di questo
Dim cmd
Set cmd = CreateObject("ADODB.Command")
'Configuro ed eseguo il comando
With cmd
    .ActiveConnection = conn
    .CommandType = adCmdText
    .Parameters.Append .CreateParameter("p1", adVarChar, adParamInput, 50, username)
    .CommandText = "account SET accessi = accessi + 1 WHERE userlog = p1"
    .Execute()
End With

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.