Newsgroup: it.comp.www.asp
Titolo: Aiuto Insert Into

Salve ragazzi, ho bisogno di aiuto.
Io ho un sito in cui inserisco degli articoli su vari argomenti.
Adesso voglio fare in modo da aggiornare il db stesso dal web senza
dovere scaricare ogni volta l'intero db.
Ho creato una pagina .asp con form in cui inserisco l'articolo e poi ho
una
seconda pagina in cui utilizzo il Request.Form e creo l'istruzione sql.
Il problema è che non appena l'articolo contiene qualche apostrofe mi si
imballa tutto, giustamente.
Come faccio???
--
Postato da 
a-na11-27.tin.it
 [212.216.194.90]
ASPItalia.com 
http://www.ASPItalia.com/
Tutto su ASP, WSH, XML, XSL, IIS, NT, Win2k

 Come faccio???
EHEHEHEH ma con Javascript, naturalmente, sostituendo (clientside) al
carattere " ' " l'orribile stringa &rsquo;
ti metto qui di seguito il programma completo:
<script language="javascript">
function checkForm(){
/*Questa funzione si accerta che i campi del form siano non vuoti*/
 if(document.forms[0].elements[1].value!=""){
  if(document.forms[0].elements[2].value!=""){
   if(document.forms[0].elements[3].value!=""){
    document.forms[0].vai.value=1
    ///document.forms[0].submit();
    isApostrofo(document.forms[0].data.value,'data')
    isApostrofo(document.forms[0].titolo.value,'titolo')
   }
   else{alert('Inserisci un titolo al messaggio')}
  }
  else{alert('Inserisci la password')}
 }
 else{alert('Inserisci uno username valido')}
}
/*creo l'oggetto matrice*/
function myArray(n){
this.length=n
for(var i=0; i<=n; i++){
this[i]=0
}
return this
}
/*creo l'oggetto che sostituisce*/
function substitute(chars,subst,cond){
this.chars=chars
this.subst=subst
this.cond=cond
}
/*creo una matrice di oggetti da sostituire, errorchar[0] sostituisce
l'apostrofo col codice &rsquo; mentre gli altri due oggetti sostituiscono a
< e > i rispettivi codici ISO se si verificano certe condizioni, altrimenti
lasciano il tag HTML, cosi' quando ri-metto a video il testo posso mantenere
la formattazione HTML*/
var errorChar=new myArray(3)
errorChar[0]= new substitute("'","&lsquo;",0)
errorChar[1]= new substitute("<","&lt;",1)
errorChar[2]= new substitute(">","&gt;",1)
/*nel caso COND sia = 1 ecco le parole da ricercare dopo il carattere
"speciale" e cosa scrivere al loro posto*/
var keyWords= new myArray(4)
keyWords[0]= new substitute("script","&lt;&nbsp;<b>gli script sono
vietati</b>&nbsp;",0)
keyWords[1]= new substitute("/script","&lt;&nbsp;<b>gli script sono
vietati</b>&nbsp;",0)
keyWords[2]= new substitute("test","ho trovato un tag di test aperto",0)
keyWords[3]= new substitute("/test","ho trovato un tag di test chiuso",0)
var ctrl
ctrl=""
/*ed ecco il parser creato dal sottoscritto, quando lo invochi gli devi
passare una stringa, o una variabile contenente una stringa, e il nome
esatto (maiuscole e minuscole incluse) del campo su cui operare, NB: nella
pagina deve essere presente un solo form, altrimenti dovrai modificare lo
script adeguatamente*/
function isApostrofo(stringa,campo){
var apostrofo="'"
var thisChar;
var count=0;
var preString
var postString
var command
command=""
postString=""
 for(var i=0; i<stringa.length; i++){
  thisChar=stringa.substring(i, i+1);
   for(var j=0; j<errorChar.length; j++){
    if (thisChar==errorChar[j].chars){
     if (errorChar[j].cond=="0"){
      thisChar=errorChar[j].subst
      }
     if (errorChar[j].cond=="1"){
      var cmd
      cmd=i+1
      while (cmd>=i){
       command=command+stringa.substring(cmd,(cmd+1))
       cmd++
       if (cmd>stringa.length){
        cmd=-10
        ctrl="null"
        command=""
        }
        for(var cri=0; cri<keyWords.length; cri++){
        if (command==keyWords[cri].chars){
          thisChar="&lt;"+keyWords[cri].subst+"&gt;"
          ctrl="cmd"
          i=i+(command.length)+1
          cmd=-10
          command=""
         }
        }
       }
      }
     }
    }
   postString=postString+thisChar
  }
document.forms[0].elements[campo].value=postString
}
</script>
EEeeet voila' l'apostrofo, e tutto cio' che rompe SQL e' tolto di mezzo,
come avrai potuto notare, puoi insegnare allo script a riconoscere e a
"gestire" qualsiasi carattere e/o stringa di caratteri, il tutto PRIMA che
il server riceva i dati, con un bel guadagno in termini di tempo macchina.
Lato server poi un bel controllo su HTTP_Referrer ti togliera' dai piedi i
tentativi di invio di dati non coerenti.
Bacioni
Nettuno