Dunque... ho un problema che non so risolvere, vi faccio una panoramica della situazione e poi copio i codici....
Dunque, sito in php con MySql per il db.
Pagina dalla bachaca (tutti gli utenti fanno un Login).
L'utente scrive un messaggio con una parola apostrofata del tipo:
<<Ora mi riposo un po'>> e il messaggio non viene inserito nel db.
Idem se l'utenete volesse solo modificare un suo messaggio senza apostrofo in un messaggio con l'apostrofo, la modifica non verrebbe fatta.
Copio qui sotto i codici, il primo è quello della pagina in cui viene scritto il messaggio (a mio avviso tutto ok);
Il secondo codice è quello della pagina che visualizza il messaggio e che inserisce il record nel db.
###1° codice###
<table cellpadding=2 cellspacing=0 border=0>
<tr>
<form action="bacheca.php" method=Post>
<input type=hidden name=ID value="<?= $IDAraldo ?>">
<input type=hidden name=p value="<?= $p ?>">
<input type=hidden name=IDMsg value="<?= $IDMsg ?>">
<input type=hidden name=IDMsgPadre value="<?= $IDMsgPadre ?>">
<td valign=top bgcolor=#666666>[img]img/stemmi/<?= $ImgGilda_S ?>[/img] <?= htmlspecialchars($Login) ?> - <?= htmlspecialchars($DescGilda_S) ?></td>
</tr>
<? if ($IDMsgPadre > 0) { ?>
<tr>
<td valign=top bgcolor=#666666>Commento al messaggio <?= htmlspecialchars($TitoloPadre) ?> di <?= htmlspecialchars($AutorePadre) ?></td>
</tr>
<? } ?>
<tr>
<td align=left valign=top bgcolor=#666666>Titolo: <input type=text size=65 name=Titolo value="<?= htmlspecialchars($Titolo) ?>"></td>
</tr>
<tr>
<td bgcolor=#666666><textarea cols=72 rows=15 name=Messaggio><?= htmlspecialchars($Messaggio) ?></textarea></td>
</tr>
<tr>
<td bgcolor=#666666><hr size=1 color=gold></td>
</tr>
#
#
#
#eccetera... eccetera... si vieni rimandati a bacheca.php
#
#
#
#</table>
</body>
</html>
Stufi? Ora arriva il bello:
###2° Codice###
<? session_start();
include #eccetera....
#
#
#eccetera....
#
#
#
#
#
$Messaggio = trim($Messaggio);
$Titolo = trim($Titolo);
$Titolo = substr($Titolo, 0, max(255, strlen($Titolo)));
If ($Titolo == '') {
$Titolo = 'Nuovo Messaggio';
}
If ($Messaggio != '') {
#I controlli Master + Capo sono impliciti nel codice precedente
#Effettuare controllo PG Esistente
If ($IDMsg == '') {
#----- nuovo messaggio! -----
$MySql = 'INSERT INTO MessaggioAraldo (IDAraldo, IDMessaggioPadre, Titolo, Messaggio, Autore, IDGilda, Img, Corporazione, IDRazza, DataMessaggio)';
$MySql .=" VALUES ($IDAraldo,";
$MySql .=" '$IDMsgPadre',";
$MySql .=" '$Titolo',";
$MySql .=" '$Messaggio',";
$MySql .=" '".pars($Login)."',";
$MySql .=" '".pars($IDGilda_S)."',";
$MySql .=" '".pars($ImgGilda_S)."',";
$MySql .=" '".pars($DescGilda_S)."',";
$MySql .=" '".pars($IDRazza_S)."',";
$MySql .=" NOW())";
#echo $MySql;
$Result = mysql_query($MySql);
$MySql = "SELECT * FROM MessaggioAraldo WHERE IDAraldo = '$IDAraldo' ORDER BY IDMessaggio DESC";
$Result = mysql_query($MySql);
$rs1 = mysql_fetch_array($Result);
$IDMsg = $rs1['IDMessaggio'];
$rs1->close;
} else {
#----- correzione messaggio! -----
$MySql = "UPDATE MessaggioAraldo SET ";
$MySql .=" Titolo = '$Titolo',";
$MySql .=" Messaggio = '$Messaggio'";
$MySql .=" WHERE IDAraldo = '$IDAraldo'";
$MySql .=" AND IDMessaggio = '$IDMsg'";
if ($Esilio_S != '1') {
$MySql .=" AND Autore = '".pars($Login)."'";
}
#echo $MySql;
$Result = mysql_query($MySql);
}
#
#eccetera.......
#
#</body>
</html>
---------------------------------------------
S.O.S. Ho le bacheche bloccate e non so come risolverlo, avevo pensato che mancasse l'htmlspecialchars() ma ho visto che c'è... cosa posso fare?
Marco