I use a textarea modifyed with TinyMCE but when I send the form to New.asp which is my "New Post" page, it simply won't upload the content to the server.
That is the error...
Microsoft Office Access Database Engine error '80040e14'
Syntax error (missing operator) in query expression ''<p>-: CLEANED :-</p> <p> </p> <h2><a name='"_Toc421990132'"></a>1)     La Sicurezza</h2> <p> </p> <p'.
/tesina/Argomenti/New.asp, row 18
I Tryed to deal with special characters in ASP to try out if that was the issue, apparently it's not;
I Tryed to upload a text by copy/pasting from word, it doesen't work, tryed from Notepad++, worked once with plain text and no styling at all.
HTML for the Form...
<form id="newar" action="New.asp" method="post">
<div class="institle">
<span> Titolo dell'Argomento: </span>
<input type="text" name="txtTitle" placeholder="Titolo">
</div>
<div class="institle">
<span> Sottotitolo dell'Argomento: </span>
<input type="text" name="txtSubtitle" placeholder="Sottotitolo">
</div>
<div class="institle">
<span> Scegli la Materia </span>
<%
Dim ID_Materia, NomeMateria, Rs, StrConn, Conn
StrConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Server.MapPath("../Database/Tesina.accdb")
Set Conn = Server.CreateObject("ADODB.Connection")
Set Rs = Server.CreateObject("ADODB.Recordset")
Conn.Open StrConn
Set Rs = Conn.Execute ("SELECT * FROM Materia")
IF NOT Rs.EOF THEN
%>
<Select Name="TxtMateria">
<%
Rs.MoveFirst
Do While Not Rs.EOF
ID_Materia = Rs.Fields("ID_Materia")
NomeMateria = Rs.Fields("NomeMateria")
%>
<Option Value="<%=ID_Materia%>"> <%=NomeMateria%> </Option>
<%
Rs.MoveNext
Loop
%>
</Select>
<%
Rs.Close
Conn.Close
Set Rs = Nothing
Set Conn = Nothing
ELSE
Rs.Close
Conn.Close
Set Rs = Nothing
Set Conn = Nothing
Response.Write("Nessun Record Disponibile")
END IF
%>
</div>
<div class="editor">
<textarea class="editor" id="editor" name="editor">
</textarea>
</div>
<div class="institleup">
<div id="filelist"> </div>
<div id="container">
<div id="dragdrop">
<span> Drag & Drop </span>
</div>
<div id="buttons">
<button id="pickfiles" href="javascript:;"> Browse Images </button>
<button id="uploadfiles" href="javascript:;"> Upload Images </button>
</div>
</div>
<pre id="console"></pre>
<script type="text/javascript">
var uploader = new plupload.Uploader({
runtimes : 'html5,flash,silverlight,html4',
browse_button : 'pickfiles',
container: document.getElementById('container'),
drop_element: "dragdrop",
url : 'Upload/upload.asp',
flash_swf_url : '../js/Moxie.swf',
silverlight_xap_url : '../js/Moxie.xap',
filters : {
max_file_size : '2mb',
mime_types: [
{title : "Image files", extensions : "jpg,gif,png"},
]
},
init: {
PostInit: function() {
document.getElementById('filelist').innerHTML = '';
document.getElementById('uploadfiles').onclick = function() {
uploader.start();
return false;
};
},
FilesAdded: function(up, files) {
plupload.each(files, function(file) {
document.getElementById('filelist').innerHTML += '<div id="' + file.id + '">' + file.name + ' (' + plupload.formatSize(file.size) + ') <b></b></div>';
});
},
UploadProgress: function(up, file) {
document.getElementById(file.id).getElementsByTagName('b')[0].innerHTML = '<span>' + file.percent + "%</span>";
},
Error: function(up, err) {
document.getElementById('console').appendChild(document.createTextNode("\nError #" + err.code + ": " + err.message));
}
}
});
uploader.init();
uploader.bind('FileUploaded', function(up, file, info) {
var obj = JSON.parse(info.response);
$('form#newar').append('<input type="hidden" name="hidimage" value="' + obj.result.FileName + '" />');
});
</script>
</div>
<div id="submit">
<input type="Submit" value="Inserisci Form">
</div>
</form>
ASP Code in the response page.. (New.asp)
<%
IF Session("Amministratore") = "True" THEN
Dim Titolo, Sottotitolo, TestoBase, TestoQuote, TestoLess, TestoGreat, TestoSlash, ID_Materia, StrConn, Conn
Titolo = Request.Form("txtTitle")
Sottotitolo = Request.Form("txtSubtitle")
TestoBase = Request.Form("editor")
ID_Materia = Request.Form("txtMateria")
TestoQuote = Replace(TestoBase,chr(34), "'" & """)
TestoLess = Replace(TestoQuote,chr(60), "<")
TestoGreat = Replace (TestoLess, chr(62), ">")
TestoSlash = Replace (TestoGreat, chr(47), "/")
StrConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Server.MapPath("../Database/Tesina.accdb")
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open StrConn
Conn.Execute ("INSERT INTO Argomento (Titolo, Sottotitolo, Testo, ID_Materia) Values ('" & [Titolo] & "', '" & [Sottotitolo] & "', '" & [TestoSlash] & "', " & [ID_Materia] & ")")
Conn.Close
Set Conn = Nothing
Response.Redirect ("ArgomentiAdm.asp")
ELSE
Response.Redirect ("../Homepage.asp")
END IF
%>
My DB is as Follows...
Table1: Argomento [Topic]
ID_Argomento (Auto_INC, PrimaryKey)
Titolo [Title] (Short String 255chr)
Sottotitolo [Subtitle] (Short String 255chr)
Testo [Text] ( Long String )
ID_Materia (ID_Subject) (Integer, ForeignKey Ref. Materia)
Table2: Materia [Subject]
ID_Materia (Auto_INC, PK)
NomeMateria (Short String )
EDIT.
Modifyed ASP, which, eventhough I checked on internet, it doesen't work with HTMLEncode, or well, atleast as far as I can see.
IF Session("Amministratore") = "True" THEN
Dim Titolo, Sottotitolo, Testo, ID_Materia, StrConn, Conn
Titolo = Server.HTMLEncode(Request.Form("txtTitle"))
Sottotitolo = Server.HTMLEncode(Request.Form("txtSubtitle"))
Testo = Server.HTMLEncode(Request.Form("editor"))
ID_Materia = Request.Form("txtMateria")
'TestoQuote = Replace(TestoBase,chr(34), "'" & """)
'TestoLess = Replace(TestoQuote,chr(60), "<")
'TestoGreat = Replace (TestoLess, chr(62), ">")
'TestoSlash = Replace (TestoGreat, chr(47), "/")
StrConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Server.MapPath("../Database/Tesina.accdb")
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open StrConn
response.write ("Conn.Execute ""(""INSERT INTO Argomento (Titolo, Sottotitolo, Testo, ID_Materia) Values ('" & [Titolo] & "', '" & [Sottotitolo] & "', '" & [Testo] & "', " & [ID_Materia] & ")"")")
'Conn.Execute ("INSERT INTO Argomento (Titolo, Sottotitolo, Testo, ID_Materia) Values ('" & [Titolo] & "', '" & [Sottotitolo] & "', '" & [Testo] & "', " & [ID_Materia] & ")")
response.end
Conn.Close
Set Conn = Nothing
'Response.Redirect ("ArgomentiAdm.asp")
ELSE
Response.Redirect ("../Homepage.asp")
END IF
And Response.Write of whole submit here...
Conn.Execute "("INSERT INTO Argomento (Titolo, Sottotitolo, Testo, ID_Materia) Values ('Crittografia Moderna', 'Cos’è la Crittografia? Definizione, Utilizzo ed Implementazione', '<p>-: CLEANED :-</p> <h1><a name="_Toc421990131"></a>Informatica: Cos’è la Crittografia? Definizione, Utilizzo ed Implementazione</h1> <p> </p> <h2><a name="_Toc421990132"></a>1)     La Sicurezza</h2> <p> </p> <p>La <strong>Sicurezza</strong> di un sistema informatico più o meno complesso indica il grado di tutela dello stesso e degli utenti utilizzatori, analizzando i Cinque Parametri Fondamentali è possibile quindi capire su quali elementi deve concentrarsi l’azione di difesa per non incorrere in problemi economici o legali:</p> <p> </p> <ul> <li><strong>Affidabilità dei Dati </strong>– Facoltà di un sistema informatico di permettere una continuativa ed ininterrotta Disponibilità dei Dati;</li> </ul> <p> </p> <ul> <li><strong>Integrità dei Dati</strong> – Fondamentale per il sistema informatico è di evitare qualsiasi forma di Corruzione dei Dati;</li> </ul> <p> </p> <ul> <li><strong>Riservatezza </strong>– Il sistema informatico deve essere in grado di stabilire delle “Viste”, ossia di mostrare i dati solo agli utenti autorizzati;</li> </ul> <p> </p> <ul> <li><strong>Autenticazione ed Autenticità</strong> – Sorgente, Destinazione e Contenuto di un messaggio sono sempre disponibili e certe;</li> </ul> <p> </p> <ul> <li><strong>Non Ripudio dell'Operazione</strong> – Impossibile per gli utenti negare di aver Ricevuto o Inviato un determinato messaggio;</li> </ul> <p> </p> <p> </p> <h2><a name="_Toc421990133"></a>2)     La Crittografia</h2> <p> </p> <p>La <strong>Crittografia </strong>è una scienza che si occupa di “<strong>Studiare le Scritture Nascoste</strong>”, la quale permette di codificare un messaggio, fornendo garanzie superiori a mittente e destinatario sulla base a quale tecnica crittografica viene applicata alla comunicazione, scegliendo quindi accuratamente quali parametri della sicurezza si vogliano garantire;</p> <p> </p> <p>La crittografia di ambito informatico tiene conto della <strong>Velocità di Calcolo</strong> dei moderni dispositivi, escludendo di fatto l’efficacia di ogni cifrario sostitutivo, estremamente presenti nella storia ma abbandonati con l’avvento degli elaboratori;</p> <p> </p> <p>L'utente si trova quindi obbligato a scegliere algoritmi fondati su <strong>Leggi Matematiche</strong> basate su analisi e rapporti tra numeri primi costituiti da una quantità di cifre estremamente elevate.</p> <p>In crittografia il "<strong>Cifrario</strong>” è lo strumento che contiene le istruzioni che permettono di trasformare il "Testo in Chiaro" in "Testo Crittografato" o viceversa, a meno che l'algoritmo contenuto nel cifrario non sia classificato come "<strong>One-Way Hash</strong>", in quest’ultimo caso è impossibile risalire da un testo cifrato ad un corrispondente univoco testo in chiaro, in quanto qualsiasi tentativo di decriptazione otterrebbe numerose possibili alternative;</p> <p> </p> <p> </p> <h3><a name="_Toc421990134"></a>2.1)                      Chiavi Sicure e Standard di Cifratura</h3> <p> </p> <p>Al giorno d'oggi una Chiave "<strong>Discretamente Sicura</strong>" si aggira sui <strong>128</strong> <strong>bit</strong> per algoritmi come il <strong>DES</strong> (Data Encryption Standard) e l'<strong>AES</strong> (Advanced Encryption Standard) che svolgono operazioni altamente complesse utilizzando algoritmi vettoriali di sostituzione applicati su blocchi di dati codificati con <strong>Chiave Simmetrica</strong>;</p> <p> </p> <p>Lo stesso livello di sicurezza si può ottenere con l’implementazione a <strong>Chiave Asimmetrica</strong> attraverso il metodo matematico <strong>RSA </strong>impiegando chiavi da 1024 o più bit, corrispondenti a numeri composti da oltre 300 Cifre.</p> <p> </p> <p>L'AES in particolare si affida alla ripetizione di un ciclo composto da <strong>4 Operazioni</strong>:</p> <p> </p> <ul> <li><strong>Sostituzione</strong> per rimuovere ogni linearità</li> </ul> <p> </p> <ul> <li><strong>Spostamento degli Elementi di una Riga</strong> verso sinistra in base alla posizione nella matrice ipotizzata da Rijndael;</li> </ul> <p> </p> <ul> <li><strong>Ricombinazione delle Colonne</strong> moltiplicate per una data matrice 4x4;</li> </ul> <p> </p> <ul> <li><strong>Operazione di XOR Logico</strong> per decidere se moltiplicare o meno il risultato per una tabella data.</li> </ul> <p> </p> <p> </p> <p>Grazie alla non-linearità dell'AES, Conosciuto anche come “Rijndael” dal nome dello sviluppatore portoghese che lo inventò nel 2001, è pressoché impossibile, ad oggi, risalire ad un <strong>Algoritmo Risolutivo Univoco</strong> senza conoscere nessun dato intermedio quale il contenuto del messaggio o la grandezza dei "Blocchi";</p> <p> </p> <p>La scelta di un attacco "<strong>Brute-Force</strong>" risulta altrettanto impossibile a causa delle tempistiche richieste, che si trovano nell'ordine di svariati anni per Chiavi da 128 bit ed oltre.</p> <p> </p> <p>Secondo l’agenzia governativa americana “National Institute of Standards and Technology” () ha stimato che per le informazioni classificate SECRET sia sufficiente una chiave a 128 bit seguendo il nuovo standard AES, aumentata fino alla grandezza di 192 o 256 bit per informazioni classificate TOP SECRET, garantendo quindi che ogni attacco a tali chiavi possa concludersi soltanto in un fallimento per i prossimi anni.</p> <p> </p> <p> </p> <h3><a name="_Toc421990135"></a>2.2)                      Oggetto Elaborato Durante la Cifratura: Blocchi o Flusso</h3> <p> </p> <p>Per quanto riguarda il funzionamento degli algoritmi di cifratura si delineano i concetti di <strong>Cifrario a Blocchi </strong>e di <strong>Cifrario a Flusso</strong> che intervengono nella trasformazione da "Testo in Chiaro" a "Testo Cifrato", risulta quindi necessario scegliere se utilizzare un algoritmo progettato per <strong>Analizzare dei </strong>"<strong>Sottoinsiemi</strong>" del messaggio trattati come singoli oggetti o se, invece, sia più conveniente allo scopo un algoritmo che effettui la cifratura <strong>Leggendo Singolarmente Ogni Simbolo</strong> che compone il messaggio;</p> <p>Nel tentativo di risalire al testo originale prendendo come punto di partenza il Testo Cifrato risulta invece fondamentale conoscere il metodo utilizzato per cifrare il messaggio al fine di accorciare le <strong>Operazioni di Decriptazione</strong>.</p> <p> </p> <p> </p> <h3><a name="_Toc421990136"></a>2.3)                      Chiave di Cifratura: Simmetrica o Asimmetrica</h3> <p> </p> <p>La cifratura di un messaggio può essere eseguita attraverso cifrari che si dividono in due categorie,<strong> Cifratura a Chiave Simmetrica</strong> (Singola) o <strong>Cifratura a Chiave Asimmetrica</strong> (Doppia);</p> <p>Entrambi i metodi evidenziano caratteristiche appropriate ad una situazione, a discapito però della loro efficacia in situazioni diverse.</p> <p> </p> <p>La cifratura a <strong>Chiave Simmetrica</strong> utilizza una <strong>Singola Chiave</strong>, la quale viene utilizzata sia per <strong>Cifrare</strong> che per <strong>Decifrare </strong>un messaggio;</p> <p>Il principale svantaggio di questa categoria di cifrari è la necessità di <strong>Recapitare la Chiave </strong>al destinatario o ai destinatari, il che rende il metodo imperfetto, esponendo il sistema a pericoli durante le operazioni di trasferimento, fisico o via rete, della chiave.</p> <p> </p> <p>La cifratura a <strong>Chiave Asimmetrica</strong> utilizza una <strong>Coppia di Chiavi</strong>, una <strong>Pubblica</strong> ed una <strong>Privata</strong>, correlate matematicamente tra loro in modo tale che solo l’altra chiave della coppia rispetto a quella utilizzata per criptare, possa poi decriptare il messaggio;</p> <p>La caratteristica fondamentale è la necessità di utilizzare le Chiavi in Coppia, garantendo diversi livelli di sicurezza in base agli algoritmi utilizzati o allo scopo che si desidera ottenere.</p> <p> </p> <p>La cifratura a Chiave Asimmetrica permette di implementare una certa sicurezza per entrambe le parti:</p> <p> </p> <ul> <li><strong>Garanzia del Mittente</strong> – La cifratura "In Uscita" avviene con la Chiave Privata del mittente garantendone la provenienza, permettendo però a chiunque intercetti il messaggio di <strong>Decifrarlo</strong> grazie alla Chiave Pubblica del mittente.</li> </ul> <p> </p> <ul> <li><strong>Garanzia del Destinatario </strong>– La cifratura "In Uscita" avviene con la Chiave Pubblica del destinatario, il quale diviene l’unico in grado di interpretare il messaggio, che però potrebbe provenire da un dispositivo <strong>Camuffato</strong>, le cui caratteristiche descrittive sono state alterate.</li> </ul> <p> </p> <ul> <li><strong>Garanzia Bilaterale</strong> – La cifratura "In Uscita" avviene prima con la Chiave Privata del mittente, poi con la Chiave Pubblica del destinatario, permettendo solo a quest'ultimo di poter accedere al livello più interno della cifratura, protetto dalla Chiave Privata del mittente.</li> </ul> <p> </p> <p> </p> <h3><a name="_Toc421990137"></a>2.4)                      Utilizzo Particolare della Cifratura a Chiave Asimmetrica: La Firma Digitale</h3> <p> </p> <p>Un particolare utilizzo della Chiave Asimmetrica si concretizza con la "<strong>Firma Digitale</strong>" che consiste nella creazione di un "<strong>Impronta</strong>" di un messaggio tramite l'<strong>Algoritmo di Hash</strong>, il cui risultato è una sequenza di BIT che rappresenta univocamente il documento, e proprio l'impronta viene criptata con Chiave Privata del mittene "In Uscita" per garantire l'identità dello stesso, nonostante non sia quindi garantita la segretezza del messaggio;</p> <p>Il motivo per cui viene criptata l’impronta e non l’intero messaggio è la difficoltà computazionale nel cifrare messaggi molto lunghi, i quali richiederebbero tempistiche estremamente elevate.</p> <p> </p> <p>Una volta giunti a destinazione il messaggio "In Chiaro" e l'impronta Criptata, viene nuovamente creata un impronta del messaggio dal destinatario, tramite il medesimo Algoritmo di Hash;</p> <p>L'ultimo passaggio nell’autenticazione tramite firma digitale consiste nel <strong>Decriptare l'Impronta Allegata</strong> al messaggio e <strong>Confrontarla</strong> con <strong>l'Impronta Ottenuta</strong> dal destinatario.</p> <p> </p> <p>Se l’impronta allegata al messaggio risulta diversa dall’impronta creata dal destinatario, allora il messaggio è stato <strong>Modificato</strong> “<strong>In Transito</strong>”, e non è più lo stesso inviato dal mittente;</p> <p> </p> <p>Da notare come l’procedimento venga seguito automaticamente da un software, senza che sia necessaria l’interazione dell’utente.</p> <p>-: CLEANED :-</p>', 1)")
I Have't changed the maxchars because that was already one of the things to do, which I won't do if the site doesen't work, eventhough I appreciated the input.
Can you use
String = Server.HTMLEncode(String)
instead ofReplace
?Can you show your query with data? Just before you going to execute
Conn.Execute
? You could do this by using following wayfew more suggestion
instead
write
instead
use
Thanks for posting SQL Query. You have issue with char ' (char #39). Use
TestoSlash = Replace(TestoSlash, "'", "'")