variabile $_POST ed escape

  • Creatore Discussione Creatore Discussione pape86
  • Data di inizio Data di inizio

pape86

Nuovo Utente
15 Gen 2010
19
0
0
Ciao a tutti!
ho dei problemi a passare un valore stringa che contenga l'apice (') con il metodo POST o GET. So che per inserire sul database si può deve usare la funzione addslashes che inserisce gli escape. Nel mio caso non inserisco su db ma passo dei valori da una pagina all'altra con post. Ecco il codice, l'ho semplificato molto e se lo copiate in un file nuovo e lo salvate in .php potete testarlo in prima persona :

PHP:
echo "<form action= " . $_SERVER['PHP_SELF'] ." method='POST'>";
$nome = "D'Antoni";
$nome_db = addslashes($nome);
echo "<select name='prova'><option selected value=''>cognome...</option>";
echo "<option value='".$nome_db."' size=8>$nome</option>";
echo "</select><br>";
echo "<button type='submit' name='invia'>invia</button>";
echo "<p>&nbsp;</p>";

if(isset($_POST['prova']) && $_POST['prova']!='') {
  $valoreIns = $_POST['prova'];
  echo stripslashes($valoreIns) ."<br>";
}


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?
grazie per qualsiasi aiuto...non so più dove sbattere la testa e non trovo da nessuna parte info a riguardo..
 
addslashes() va utilizzata sul parametro una volta inviato, prima non serve, prova così:
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><br>";
echo "<button type='submit' name='invia'>invia</button>";
echo "<p>&nbsp;</p>";

if(isset($_POST['prova']) && $_POST['prova']!='') {
  $valoreIns = addslashes($_POST['prova']);
  echo stripslashes($_POST['prova']) ."<br>";
}
 
niente da fare...mi stampa sempre D...:incazz2:
ma tu l'hai testato? cosa ti visualizza?
non è che magari ho qualche impostazione di php che non conosco da modificare?
 
Ok, e così?
PHP:
$nome = "D'Antoni";
$nome_db = addslashes($nome);
$nome_db = stripslashes($nome_db);
var_dump($nome_db);
exit();

string(8) "D'Antoni" ... quindi? non ho mica capito..:confused: ..comunque il problema è con la variabile $_POST a questo punto...
 
Ultima modifica:
niente da fare...mi stampa sempre D...:incazz2:
ma tu l'hai testato? cosa ti visualizza?
non è che magari ho qualche impostazione di php che non conosco da modificare?
ricordati che prima di testarlo devi riportare la pagina a zero (prima della selezione), diversamente continui a richiamare sempre lo stesso valore tramite POST.
 
ricordati che prima di testarlo devi riportare la pagina a zero (prima della selezione), diversamente continui a richiamare sempre lo stesso valore tramite POST.

sì, sì..per sicurezza ho chiuso la pagina e riaperta! ormai ho provato di tutto..
ma voi l'aveto provato? vi stampa la stessa cosa o è solo un problema mio? almeno così vediamo se è un discorso di codice o d'impostazioni di php..

EDIT:
ho risolto! maledizione...era una str...ata!!
il problema era su quest riga :
PHP:
echo "<option value='".$nome_db."' size=8>$nome</option>";

l'ho corretta così:
PHP:
echo "<option value=\"".$nome_db."\" size=8>$nome</option>";

assurdo!! :incazz:
 
Ultima modifica:

Discussioni simili