Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Errore di run-time

  1. #1

    Errore di run-time

    Guardate questo codice:

    codice:
    <%
    FUNCTION fixQuotes( theString )
    	fixQuotes = REPLACE( theString, "'", "''" )
    END FUNCTION
    
    email = TRIM( Request( "email" ) )
    
    ' controlla se esiste già un indirizzo mail uguale
    FUNCTION alreadymail( email )
    	sqlString = "SELECT newsletter_email FROM newsletter " &_
        	"WHERE newsletter_email ='" & fixQuotes( email ) & "'"
      		Set Con = Server.CreateObject( "ADODB.Connection" )
    		Con.Open "dsn"  
      		SET RS = Con.Execute( sqlString )
      		IF RS.EOF THEN
      	  		alreadymail = FALSE
      		ELSE
      	  		alreadymail = TRUE
      		END IF
      		RS.Close
      		Con.Close
    		Set Con = Nothing
    END FUNCTION
    
    ' verifica di una mail già presente
    IF alreadymail( email ) THEN
    	Response.Write "<center>"
    	Response.Write "Indirizzo e-mail già presente nelle liste"
    	Response.Write "<form action='default.asp'>"
    	Response.Write "<input type='submit' value='torna alla home page'>" 
    	Response.Write "</form>"
    	Response.Write "</center>"
    ELSE
    	' verifica della corretta digitazione della mail
    	FUNCTION invalidEmail( email )
    	  Dim Reg
    	  Set Reg = New RegExp 	'inizializzo la regexp
    	  Reg.Global = True
    	  Reg.Ignorecase = True
    	  Reg.pattern = "^([a-z|\d][a-z|\d|.]*)?[a-z|\d]\@[a-z|\d][a-z|\d|.]*\.[a-z|\d]+$"
    	
    	  invalidEmail = Not(Reg.Test(email))
    	
    	  set Reg = Nothing
    	END FUNCTION
    
    	IF invalidEmail( email ) THEN
    		Set Con = Server.CreateObject( "ADODB.Connection" )
    		Con.Open "dsn"
    		sqlString = "INSERT INTO newsletter( newsletter_email, newsletter_dataregistrazione ) " & "VALUES ('" & fixQuotes( email ) & "', now())"
    		Con.Execute sqlString
    	%>
    	<html>
    	<head>
    	<title>Dati registrati</title>
    	</head>
    	<body>
    	I tuoi dati sono stati inseriti.
    	
    
    	Torna alla home page
    	[/b]
    	</body>
    	</html>
    	<%
    	ELSE
    		Response.Write "Errore nella digitazione dell' e-mail"	
    	END IF
    	
    	Con.Close
    	Set Con = Nothing	
    END IF
    %>
    In locale mi funziona mentre online mi esce errore:

    Errore di run-time di Microsoft VBScript error '800a01a8'
    Necessario oggetto: ''

    e viene indiucato in questa posizione:
    Con.Close

    Come è possibile che esca errore?

    Ciaooooo
    Nat Pharma Snc - www.natpharma.it -www.birrapercani.it
    Produzione di integratori fitoterapici per uso veterinario composti interamente da materie prime di origine vegetale



  2. #2
    perché invalidEmail restituisce false.
    così ti salta l'if e la creazione/apertura della connessione
    xxx

  3. #3
    Dopo avere trasformato
    codice:
    IF invalidEmail( email ) THEN
    in
    codice:
    IF NOT invalidEmail( email ) THEN
    porta anche la chiusura/distruzione della Con ALL'INTERNO della condizione (prima di ELSE).

    Domanda: perchè non creare la connessione una volta per tutte all'inizio della pagina e distruggerla alla fine?
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  4. #4
    Ora tutto ok, grazie a tutti dei consigli:
    codice:
    <%
    'apre connessione con db
    Set Con = Server.CreateObject( "ADODB.Connection" )
    Con.Open "dsn"  
    	
    FUNCTION fixQuotes( theString )
    	fixQuotes = REPLACE( theString, "'", "''" )
    END FUNCTION
    
    email = TRIM( Request( "email" ) )
    
    ' controlla se esiste già un indirizzo mail uguale
    FUNCTION alreadymail( email )
    	sqlString = "SELECT newsletter_email FROM newsletter " &_
        "WHERE newsletter_email ='" & fixQuotes( email ) & "'"
      	SET RS = Con.Execute( sqlString )
      	IF RS.EOF THEN
      		alreadymail = FALSE
      	ELSE
      		alreadymail = TRUE
      	END IF
      	RS.Close
    END FUNCTION
    
    IF alreadymail( email ) THEN
    	Response.Write "<center>"
    	Response.Write "Indirizzo e-mail già presente nelle liste"
    	Response.Write "<form action='default.asp'>"
    	Response.Write "<input type='submit' value='torna alla home page'>" 
    	Response.Write "</form>"
    	Response.Write "</center>"
    ELSE
    	' verifica della corretta digitazione della mail
    	FUNCTION invalidEmail( email )
    		Dim Reg
    		Set Reg = New RegExp 	'inizializzo la regexp
    		Reg.Global = True
    		Reg.Ignorecase = True
    		Reg.pattern = "^([a-z|\d][a-z|\d|.]*)?[a-z|\d]\@[a-z|\d][a-z|\d|.]*\.[a-z|\d]+$"
    	
    		invalidEmail = Reg.Test(email)
    	
    		set Reg = Nothing
    	END FUNCTION
    
    	IF invalidEmail( email ) THEN
    		sqlString = "INSERT INTO newsletter( newsletter_email, newsletter_dataregistrazione ) " & "VALUES ('" & fixQuotes( email ) & "', now())"
    		Con.Execute sqlString
    	%>
    	<html>
    	<head>
    	<title>Dati registrati</title>
    	</head>
    	<body>
    	I tuoi dati sono stati inseriti.
    	
    
    	Torna alla home page
    	[/b]
    	</body>
    	</html>
    	<%
    	ELSE
    		Response.Write "Errore nella digitazione dell' e-mail"	
    	END IF
    END IF
    
    'Chiude connessione db
    Con.Close
    Set Con = Nothing	
    %>
    Nat Pharma Snc - www.natpharma.it -www.birrapercani.it
    Produzione di integratori fitoterapici per uso veterinario composti interamente da materie prime di origine vegetale



Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.