• User

    [ASP] Convalida form anti-spam da Javascript a VBScript

    Ciao a tutti è possibile convertire questo codice in VBscript?

    <%@LANGUAGE = JScript%>
    <%
    var commenti = Request.Form("commenti");
    var valida = /http/;
    if (!valida.test(commenti)) Response.Write("invio ok");
    Response.Redirect("testasp/httpko.asp");
    %>

    Poreste aiutarmi? Grazie Andrea


  • Moderatore
    
    <%
    Dim commenti
    commenti = Request.Form("commenti")
    Dim valida
    valida = /http/
    	if  Instr(commenti, valida, 1)>0 Then Response.Write("invio ok")
    	Response.Redirect("testasp/httpko.asp")
    %>
    
    

    :ciauz:


  • User

    Ciao Legolas, grazie per l'aiuto

    ho provato lo script e mi restituisce questo errore:

    Errore di run-time di Microsoft VBScript error '800a000d'

    Tipo non corrispondente: '[string: "prova"]'

    /invio-codice.asp, line 6


  • User Attivo

    Devi controllare che nel commento non ci siano link?

    [HTML] if (!valida.test(commenti))[/HTML]
    Questa è un'espressione regolare in javascript che dice: "se http non è presente nel testo commenti allora invio ok".

    Puoi fare una espressione regolare in vbscript oppure controllare (più banalmente ma meno efficaciemente) che sia presente http nel testo così:

    if instr(commenti,"http")<>0 then
    response.write("Invio KO")
    else
    response.write("Invio OK")
    end if
    

    Ammesso sia quello che devi fare...


  • User

    @FuSioNmAn said:

    Devi controllare che nel commento non ci siano link?

    [HTML] if (!valida.test(commenti))[/HTML]
    Questa è un'espressione regolare in javascript che dice: "se http non è presente nel testo commenti allora invio ok".

    Puoi fare una espressione regolare in vbscript oppure controllare (più banalmente ma meno efficaciemente) che sia presente http nel testo così:

    if instr(commenti,"http")<>0 then
    response.write("Invio KO")
    else
    response.write("Invio OK")
    end if
    

    Ammesso sia quello che devi fare...

    Ciao Fusionman, devo eliminare il problema spam, ma perchè sarebbe meno efficace la soluzione che proponi?
    l'ho provata e funziona.
    Ha qualche limitazione?

    Ciao e grazie per l'aiuto Andrea


  • User Attivo

    Perchè con quella becchi solo se è presente http
    Se inseriscono www. qualcosa (quindi senza http) non viene filtrato.
    Per questo dicevo che con le espressioni regolari è un'altra cosa.
    Bisogna costruire una stringa che tenga presente tutti i casi che decidi


  • User

    Hai ragione, però il form che viene preso di mira non è nè un blog nè un forum, è il solito robots che puntualmente mi invia messaggi da questo form senza nessun risultato, credo che capiscono se si tratta di invi con html abilitato e quindi inseriscono anche http, e non capiscono che rompono è basta.

    Tengo nei preferiti questa discussione così se dovessero cambiare strategia torno a disturbarvi.

    Grazie dell'aiuto Andrea.


  • User

    Ciao a tutti, per il momento ho risolto il problema spam, ma ho bisogno di un altro aiuto,

    ho il seguente script che mi estrae i dati in ordine dall'ultima decrescente, è complicato fare in modo che l'ordine sia casuale?

    
    
    <%
    Response.Buffer = True
    lineIndex = 0
    Set connect = Server.CreateObject("ADODB.Connection")   ' Prepare to connect to database
    connect.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath ("messaggi.adb")
    
    ClassTopic = Trim(session("k"))
    
    whereclause = "WHERE "
    whereclause = whereclause &"Classifieds.ClassTopic = '" &  ClassTopic & "'" 
     
    query = "SELECT * FROM classifieds "& whereclause &"And ClassExpire > Date()" & "ORDER BY ClassPosted DESC"
    
    set recordset = Server.CreateObject("ADODB.Recordset")
    recordset.CursorType = 2  ' adOpenStatic
    recordset.Open query, connect
    %>
    <!-- fine -->
    <table width="100%"><tr><td> 
    <!-- intestazione annunci -->
    <div>
    <% i=0
    Do While Not recordset.EOF 
         NoResults = False
    if i=2 then exit do
    %>
    <table width="98%" cellpadding="0" cellspacing="0" border="0" style="font-size: 10pt">
    <tr><td>
    <a href="ads_display.asp?Key_m=<%=recordset("ClassTopic")%>"> <b><%=recordset("ClassAdTitle")%></b></a><br> 
    <b>rif. n° <%=recordset("ClassID")%> dal <%=recordset("ClassPosted")%> al <%=recordset("ClassExpire")%></b>
    <%=left(recordset("ClassDescription"),100)%>...<br><br></td></tr>
    </table>
    <%
    i=i+1
    recordset.MoveNext
    Loop
    %>
    <%recordset.close%>
    </div><!-- intestazione anuunci#--></td></tr>
    </table>
    

    il k lo passo io.

    Grazie spero possiate aiutarmi.

    Ciao Andrea