Virgolette non "inviate"?

Posto il codice dell'intera pagina che facciamo prima:

session_start();
function rindirizzo($url, $seconds = FALSE){
    if (!headers_sent() && $seconds == FALSE){
        header("Refresh: ".$seconds.";URL=" . $url);
    }
    else{
        if ($seconds == FALSE){
            $seconds = "0";
        }
        echo "<meta http-equiv=\"refresh\" content=\"$seconds;url=$url\">";
    }
}

function dbconnect() {
   mysql_connect("localhost", "root", "");
   @mysql_select_db("gd") or die ("Unable to select database");
}
dbconnect();
$query=mysql_query("SELECT * FROM firme WHERE id_utente='".$_SESSION['verified_user']."'");

if ($_SESSION['verified_user'] == '') header("Location: login.php");
if (mysql_num_rows($query) > 0) {
echo"<b>Ciao ". $_SESSION['nome'].". Mi dispiace, ma non puoi inserire un altro messaggio!</b>";}
else {
    $result=mysql_query("SELECT * FROM utentidb WHERE id_user='".$_SESSION['verified_user']."'");
    if (!$result) echo "Errore nella query.";
    else {


function firma(){
echo"<center><b>Benvenuto ". $_SESSION['nome']."</b><br>
Utilizza il modulo sotto per lasciare un messaggio (max 30 caratteri) che 
sara' stampato sull'immagine. Grazie.</center><p>";

echo"<table border=\"0\" width=\"385\" height=\"126\">
      <FORM action=\"testo.php\" method=post>
      <TR>
       <TD align=\"left\" valign=\"top\">
        <input type=\"hidden\" name=\"task\" value=\"anteprima\">
        <INPUT TYPE=\"TEXT\"  maxlength=30 size=40 name=\"messaggio\" >
        </TD>
       <td>&nbsp;</td><td>&nbsp;</td> 
     </TR>
      <TR><td><font color=\"#FF0000\"><b>Scegli il tipo di carattere e il colore del testo:</b></font></td>
      <td  width=\"45\">&nbsp;</td><td>&nbsp;</td>
      </TR>
      <TR><td><img border=\"0\" src=\"time.gif\"> <input type=\"radio\" name=\"button\" value=\"time\" checked/></td>
       <td bgcolor=\"#000000\">&nbsp;</td><td><input type=\"radio\" name=\"color\" value=\"nero\" checked></td> 
      </TR>
      <TR><td><img border=\"0\" src=\"comic.gif\"> <input type=\"radio\" name=\"button\" value=\"comic\"></td>
      <td bgcolor=\"#FF0000\">&nbsp;</td><td><input type=\"radio\" name=\"color\" value=\"rosso\"></td>
      </TR>
      <TR><td><img border=\"0\" src=\"mono.gif\"> <input type=\"radio\" name=\"button\" value=\"mono\"></td>
      <td  bgcolor=\"#FFFF00\">&nbsp;</td><td><input type=\"radio\" name=\"color\" value=\"giallo\"></td>
      </TR>
      <TR><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>
      </TR>              
       <TR>
       <TD align=\"center\">
        <INPUT TYPE=\"SUBMIT\" value=\"Anteprima\">
        </TD><td>&nbsp;</td><td>&nbsp;</td>
        </TR>
        </FORM>
     </table>";
}



function anteprima($messaggio,$button,$color){
firma();
$messaggio=stripslashes($messaggio);
if ($messaggio == ""){
echo"<p>";
echo "<font color=\"#FF0000\"><b>Non hai inserito il testo!</b></font>";
}

else {
echo"<p>";
 if ($button == "time"){$carattere = "Times New Roman";}
 elseif ($button == "comic"){$carattere = "Comic Sans MS";}
 elseif ($button == "mono"){$carattere = "Monotype Corsiva";}
 
 if ($color == "nero") {$colore = "#000000";}
 elseif ($color == "rosso") {$colore = "#FF0000";}
 elseif ($color == "giallo") {$colore = "#FFFF00";}
 
echo"<table border=\"0\">
<tr>
<td><b>Hai scritto:
</b>&nbsp;</td><td><font color=\"$colore\" face='$carattere' size=\"5\">$messaggio</font></td>
</tr>
<tr>
<form  action=\"testo.php\" method=\"\post\">
<input type=\"hidden\" name=\"task\" value=\"conferma\">
<input type=\"hidden\" name=\"messaggio\" value=\"$messaggio)\">
<input type=\"hidden\" name=\"carattere\" value=\"$carattere\">
<input type=\"hidden\" name=\"colore\" value=\"$colore\">
<td align=\"center\"><INPUT TYPE=\"SUBMIT\" value=\"Conferma\"></td>
</form>
<form  action=\"testo.php\" method=\"\post\">
<input type=\"hidden\" name=\"task\" value=\"firma\">
<td align=\"center\"><input type=\"submit\" value=\"Cancella\"</td>
</form>
</tr>
</table>";
 }
}

function conferma($messaggio,$car,$col){
echo $messaggio;
$query=mysql_query("SELECT * FROM firme WHERE id_utente='".$_SESSION['verified_user']."'");
if (mysql_num_rows($query) > 0) {
echo"Non puoi inserire un altro messaggio!";}
else {
$id_utente=$_SESSION['verified_user'];
$upload = mysql_query("INSERT INTO firme (id_utente, scritta, type, colore, giorno)
VALUES ('$id_utente','$messaggio','$car','$col',NOW());")or die ("Errore! Dati non caricati");
echo "Conferma riuscita! Attendere prego...";
 rindirizzo("stampa.php",0);
 }
}




switch($_REQUEST['task']) {
case 'anteprima':
        anteprima($_REQUEST['messaggio'],$_REQUEST['button'],$_REQUEST['color']);
        break;
case 'conferma':
        conferma($_REQUEST['messaggio'],$_REQUEST['carattere'],$_REQUEST['colore'] );
        break;
         default:
        firma();  
  }

   }

Allora..

La funzione Anteprima() riceve testo dal modulo.

Il testo puņ essere anche con virgolette del tipo:

ad esempio

Tommaso "fulmine" Rossi.

OK fin qui tutto a posto, uso stripslashes

altrimenti vedo il testo con le barre: Tommaso \"fulmine\" Rossi.

Il problema viene dopo quando invio la stessa variabile $messaggio ad un'altra funzione (conferma() appunto)per la conferma e il caricamento del testo nel db.

Ho inserito un echo e mi sono accorto che il testo arriva troncato: Tommaso \

e basta!!

Come posso risolvere inviando correttamente il testo con le virgolette alla funzione e poi caricarla nel db?

Grazie

Ps: una cosa strana perņ Ricordo che caricavo e stampavo il testo sull'immagine con le GD (ma forse mi confondo) senza problemi..non ho capito cosa ho cambiato che adesso non va...mah??!!??

inviato 8 anni fa
frankphp
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda