- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- Problema con caratteri accentati e apici php mysql
-
Problema con caratteri accentati e apici php mysql
Salve a tutti,
Ricevendo dei dati da un form per poi salvarli in un database, li elaboro in questo modo eliminando caratteri speciali.[PHP]
$titolo = addslashes($_POST['titolo']);
$sottotitolo = strip_tags($_POST['sottotitolo']);
$corpo_notizia = strip_tags($_POST['corpo_notizia']);function puliscistringa($stringa) { $stringa = str_replace("à", "a", $stringa); $stringa = str_replace("è", "è", $stringa); $stringa = str_replace("ì", "i", $stringa); $stringa = str_replace("ò", "o", $stringa); $stringa = str_replace("ù", "u", $stringa); //@$stringa = ereg_replace("[^A-Za-z0-9' ]", "", $stringa ); return $stringa; } $titolo = puliscistringa($titolo); $corpo_notizia = puliscistringa($corpo_notizia); // se nel php.ini non è abilitato il "magic_quotes_gpc" if (!get_magic_quotes_gpc()) { // funzione ricorsiva per l'aggiunta degli slashes ad un array function magicSlashes($element) { if (is_array($element)) return array_map("magicSlashes", $element); else return addslashes($element); } // Aggiungo gli slashes a tutti i dati GET/POST/COOKIE if (isset ($_GET)&& count($_GET))$_GET = array_map("magicSlashes", $_GET); if (isset ($_POST)&& count($_POST))$_POST = array_map("magicSlashes", $_POST); if (isset ($_COOKIES)&& count($_COOKIES))$_COOKIE = array_map("magicSlashes", $_COOKIE); }
[/PHP]
Quando vado a salvare nel database mi esce nel titolo questo => l'articolo ora è inserito <= ed è giusto, ma perchè mi esce pure quel carattere speciale ?
Inoltre se aggiungo apici e doppi apici mi da 1 errore sql e non mi fa inserire nulla nel database.
Come posso risolvere entrambi i casi ?Il mio database è
[TABLE="class: data"]
[TR="class: odd"]
[TD]InnoDB[/TD]
[TD]latin1_swedish_ci[/TD]
[TD="class: value tbl_size"][/TD]
[/TR]
[/TABLE]
-
Ciao infosicurezza,
il primo problema è dato dalla codifica che utilizzi, questa discussione può esserti utile.
Per il secondo problema può invece leggere questa guida.
-
Grazie per la risposta, ho risolto seguendo le tue guide e gli altri post di questo forum.
-
Secondariamente, nello str_replace della "è" non hai inserito la "e" senza accento
-
lo fato di proposito, altrimenti chi scrive commette un errore di ortografia
-
Sono di nuovo qui, mi sapete dire perchè alla stampa della query mi escono i caratteri speciali ?
Nel database i caratteri accentati sono normali.
-
È a causa di problemi di codifica, è spiegato nel primo link che ti ho dato.
-
Si lo seguita, e mi funziona se stampo le variabili in php. Se scrivo in un tag <p> </p> html (statico) non mi visualizza i caratteri, ma questo simbolo �
Da cosa può dipendere ?
Nel file php ci metto questo nell'head
[php]
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
[/php]
e nella connessione ho questo
[php]
mysql_query("SET CHARACTER SET 'utf8'");
[/php]
Il mio db pure porta utf8