Ho dei problemi a passare un valore stringa che contiene l'apice (') con il metodo POST. So che per inserire sul database si deve usare la funzione addslashes (o simile) che inserisce gli escape. Nel mio caso non inserisco su db perchè passo dei valori da una pagina all'altra con post, ma il concetto è lo stesso.
Ecco il codice, l'ho semplificato molto e ho creato un caso-tipo, se lo copiate in un file nuovo e lo salvate in .php potete testarlo in prima persona:
Codice PHP:
echo "<form action= " . $_SERVER['PHP_SELF'] ." method='POST'>";
$nome = "D'Antoni";
$nome_db = addslashes($nome);
echo $nome_db; // STAMPA D\'Antoni --> OK
echo "<select name='prova'><option selected value=''>cognome...</option>";
echo "<option value='".$nome_db."' size=8>$nome</option>";
echo "</select>
";
echo "<button type='submit' name='invia'>invia</button>";
echo "
</p>";
if(isset($_POST['prova']) && $_POST['prova']!='') {
$valoreIns = $_POST['prova'];
echo stripslashes($valoreIns) ."
"; // STAMPA D --> PERCHE'?
}
perchè alla fine mi stampa D e non D'Antoni??
io ho il magic_quotes_gpc disattivato, uso addslashes (oppure ho provato anche con mysql_real_escape_string) per salvare il valore da passare tramite post e aggiungere l'escape (e lo fa correttamente) e stripslashes quando lo vado a visualizzare...perchè non funziona? dove il problema?
Ho provato anche a inserire l'escape dopo aver passato il valore con post ma non cambia niente, così:
Codice PHP:
echo "<form action= " . $_SERVER['PHP_SELF'] ." method='POST'>";
$nome = "D'Antoni";
echo "<select name='prova'><option selected value=''>cognome...</option>";
echo "<option value='".$nome."' size=8>$nome</option>";
echo "</select>
";
echo "<button type='submit' name='invia'>invia</button>";
echo "
</p>";
if(isset($_POST['prova']) && $_POST['prova']!='') {
$valoreIns = addslashes($_POST['prova']);
echo stripslashes($valoreIns) ."
"; // STAMPA D
}
grazie per qualsiasi aiuto...non so più dove sbattere la testa e non trovo da nessuna parte info a riguardo..