- Home
- Categorie
- Coding e Sistemistica
- Altri linguaggi per il web
- Problema con insert to e pagine asp
-
Mi manca solo una cosa per capire bene: allora io dovrei in una ipotetica request form come questa:
id=request.form("idnews")
data=request.form("data")
titolo=request.form("titolo")
abstract=request.form("abstract")
testo=request.form("testo")
autore=request.form("autore")aggiungere solamente gli apici; solo che a video non riesco a vedere bene quanti sono, tu hai scritto:
testo=Replace(request.form("testo"),"'","''")quindi se leggo bene dopo ("testo"),"'","''")
ovvero ("testo"),virgolette apice virgolette,virgolette apice apice virgolette? Tutto senza spazi?
Verrebbe:
id=request.form("idnews"),"'","''")
data=request.form("data"),"'","''")
titolo=request.form("titolo"),"'","''")
abstract=request.form("abstract"),"'","''")
testo=request.form("testo"),"'","''")
autore=request.form("autore"),"'","''")
Così? E scusa l'ignoranza, ma fatto questo dobrebbe funzionare? A cosa serve mettere questi apici? Che funzione hanno?
Grazie per avermi risposto così in fretta!!! Sei davvero gentilissimo e se funziona ti devo minimo una cena! Grazie!!!!
-
Ho detto *testo=Replace(request.form("testo"),"'","''")
non
*testo=request.form("testo"),"'","''")
In alternativa puoi crearti una piccola funzione che fa questo lavoro:
Function sos(str) * sos **= Replace(str,"'","''")* End function
-
Verrebbe così:
id=sos(request.form("idnews")) data=sos(request.form("data")) titolo=sos(request.form("titolo")) abstract=sos(request.form("abstract")) testo=sos(request.form("testo")) autore=sos(request.form("autore"))
Il motivo sta nel fatto che l'apice manda in "confusione" l'interprete sql. In una insert le stringhe vanno racchiuse tra apici. Se c'è un'apice nella stringa questo deve essere raddoppiato per poter essere considerato parte di essa e non la sua terminazione.
Ciao fammi sapere
-
aver inviato il messaggio di risposta, ho già provato e mi pare proprio che funzioni. Meno male che ci sei tu, davvero non sai da quanto provavo a metterla a posto saranno mesi (almeno 5)!!!
Se tutto va bene torno e vi posto i miei più sentiti ringraziamenti ove mi metterò a disposizione per pulizie gratuite di case e uffici ai valorosi del linguaggio asp!
Ma senti, e visto che sei così istruito, mi sapresti anche dire come mai quando voglio fare le modifiche nel form mi riporta solo due parole anzichè tutte quelle che ci sono nel campo (vedi il primo messaggio)??
Può essere dovuto anche quello agli apici? Ma che funzione hanno esattamente? Grazie Grazie Grazie!!!!!
-
Scusa abbiamo postato praticamente insieme! Grazie per la risposta, era semplice dovevo arrivarci!!!!! L'idea della funzione è eccellente e semplicissima, devo ancora imparare tutto su come sfruttare le potenzialità dell'asp! Però mi metto di impegno! Provo e vi faccio sapere come finisce (sicuramente con un guru che mi aiuta come te andrà subito tutto a posto!) Non so proprio come ringraziarti, davvero.
-
guru? per così poco?
Occhio che effettuare come minimo il replace degli apici è fondamentale per la sicurezza di una pagina di accesso ad un'area riservata, qualora questa effettui il controllo dei dati di accesso attraverso un database.
Altrimenti saresti esposta ad SQL INJECTION
Es. di query ERRATA e penetrabile:
"SELECT * FROM utenti WHERE nome = '"&Request("nome")&"' AND psw = '"&Request("psw")&"'" ``` In questo caso inserendo come nome utente e psw i seguenti valori: nome: **' or '' = '** psw: **' or '' = ' ** si otterrebbe la selezione del primo record della tabella, di solito quello con ID = 1 ** Attenzione perchè questo errore è molto diffuso tra i neofiti **PS: vada per la cena
-
Erano MESI che ci provavo e non riuscivo nè qualcuno era stato capace di darmi una mano; adesso ho fatto tutte le modifiche e pare che funzioni, ho provato a mettere cose copiate e incollate e a scriverne a mano pare che vada. Tranne a un tentativo in cui mi ha detto che "data mismatch in criteria expression" ma credo fosse perchè in un campo data era rimasto "inserire data" anzichè un formato data 00/00/0000. Me lo confermi? O mi devo preoccupare?:?
Invece (ahime) la modifica nonostante i tuoi suggerimenti continua a prendere solo le prime due parole del titolo, e non so proprio come fare... ti prego dammi una mano!!!
Cmq avrai passato anche tu (e spero stia tuttora passando) quei momenti in cui credi di aver scoperto l'acqua calda e ti senti fiero di un piccolo passo avanti che a distanza di anni ti fa ridere... lo provi quasi per tutte le cose!! Una lingua, un programma o un sito! Ecco per me oggi è uno di quei giorni!:D
-
Ti capisco benissimo.. ancora oggi le nuove scoperte mi lucidano gli occhi
Certo che l'errore "data mismatch in criteria expression" è dovuto a quello che dici.
Ma veniamo al secondo problema... aspetta che sto pensando
-
è un errore html... hai mancato le virgolette dell'attributo value:
<input name="titolo" type="text" size="50" value="<%=news.fields("titolo")%>">
Avrebbe dovuto spezzarsi al primo spazio
-
Se può aiutarti (non credo!) mi prende solo la prima parola del titolo.
Nella pagina che mostra le news c'è un link che consente di cancellare o modificare la news, con questo codice:<% 'creo il recordset news e chiedo al db di elencare le news all'interno del db set news=dbconn.execute("select * from news order by idnews desc")%> <% 'leggo tutti i record fino alla fine del file do while not news.eof%> <a href="dettaglio_news.asp?idnews=<%=news("idnews")%>"><strong><%=news("data")%> <%=news("titolo")%></strong></a> <a href="elimina_news.asp?idnews=<%=news("idnews")%>">Elimina</a> <a href="modifica_news.asp?idnews=<%=news("idnews")%>">Modifica</a></td>
Nella pagina delle modifiche il codice (l'ho anche modificato come avevi detto tu) è così:
<%if request.QueryString("action")="" then%> <%set news=dbconn.execute ("select * from news where idnews="&int(request.querystring("idnews")))%> <fieldset style="border:1px solid gray;"> <legend><strong>MODIFICA UNA NEWS NEL DATABASE</strong></legend> <form name="form1" method="post" onsubmit="return controllaINSERIMENTO(this)" action="modifica_news.asp?action=register"> <table width="50%" border="0" cellspacing="0" cellpadding="0" align="center"> <tr> <td><input type="hidden" name="idnews" value="<%=news.fields("idnews")%>"></td></tr> <tr> <td><strong>Data</strong></td> <td><input name="data" type="text" size="50" value=<%=news.fields("data")%>></td> </tr> <tr> <td><strong>Titolo</strong></td> <td><input name="titolo" type="text" size="50" value=<%=news.fields("titolo")%>></td> </tr> <tr> <td><strong>Abstract (introduzione)</strong></td> <td><textarea name="abstract" cols="60" rows="10"><%=news.fields("abstract")%></textarea></td> </tr> <tr> <td><strong>Testo</strong></td> <td><textarea name="testo" cols="60" rows="10"><%=news.fields("testo")%></textarea></td> </tr> <tr> <td><strong>Autore </strong></td> <td><input name="autore" type="text" size="50" value=<%=news.fields("autore")%>></td> </tr> <tr><td><strong>Immagine</strong></td> <td><input name="immagine" type="text" size="50" value=<%=news.fields("immagine")%>></td> </tr> <tr><TD> </TD> <td><input type="submit" name="submit" value="Modifica"> <a href="amministrazione.asp" target="_self">Cambiato idea? Clicca qui!</a> </td> </tr> </table> </form> </fieldset> <%else id=request.form("idnews") data=request.form("data") titolo=Replace(request.form("titolo"),"'","''") abstract=Replace(request.form("abstract"),"'","''") testo=Replace(request.form("testo"),"'","''") autore=Replace(request.form("autore"),"'","''") immagine=request.form("immagine") 'AZIONE DI REGISTRAZIONE set rds_news=dbconn.execute ("UPDATE news SET data='"&data&"', titolo='"&titolo&"', abstract='"&abstract&"', testo='"&testo&"', autore='"&autore&"', immagine='"&immagine&"' WHERE idnews="&id&"")%>
Non so dirti di più...
-
Ti ho già risposto sopra
-
Sei troppo intelligente!!!! L'avevo visto ma siccome tutti gli altri campi funzionavano, incluse le textarea e tutto il resto non mi ero posta il problema... come mai funzionano lo stesso?? E' un problema solo per campi di testo?
-
@katy82 said:
Sei troppo intelligente!!!! L'avevo visto ma siccome tutti gli altri campi funzionavano, incluse le textarea e tutto il resto non mi ero posta il problema... come mai funzionano lo stesso?? E' un problema solo per campi di testo?
Le textarea non vuole le virgolette, potresti anche evitarle per il textfield solo evitando gli spazi. Perchè?Perchè il browser non potendo sapere dove termina il testo che stai immettendo nel campo testo allora si ferma al primo spazio in quanto lo interpreta come separatore di attributi
<input type="text" name="textfield" value=prova test>
In questo esempio il browser crede che test sia un attributo così come lo è type, name e value. Ovviamente non lo riconosce e lo lascia pardere.
Con la textarea è differente, il browser interpreterà come valore del campo tutto quello compreso tra <textarea> e </textarea>
PS: a base di pesce, porto io il vino
-
Mi inchino alla tua sapienza e mi imbarazzo per la mia ignoranza! A presto l'invito per una cena a base di pesce (si vede che sei dalle parti di ischia, noi polentoni del piemonte conosciamo solo la bagna caoda!)!!! Grazie davvero di tutto!!!!!!
-
Ehehe ciao