Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: charset e accento

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    134

    charset e accento

    Salve a tutti, sono giorni che provo a risolvere questo enigma...

    ho la mia pagina php che ha come riga di charset nell'head della pagina

    <meta http-equiv="Content-type" value="text/html; charset=UTF-8" />

    la tabella del mio DB e come Collation utf8_unicode_ci

    e quando vado a registrare i dati nel mio db al posto dell'accento mette questo simbolo "\" che non cè verso di levarlo e fargli mettere l'accento!!

    Vi prego aiutatemi!

  2. #2
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,026
    Prova a a filtrare la tua variabile in questo modo:
    Codice PHP:
    $variabile ="'"// alla variabile gli è stata asseganto un accento
    $variabile str_replace("<""&lt;"$variabile );     
    $variabile str_replace(">""&gt;"$variabile );     
    $variabile str_replace("\"""&quot;"$variabile );     
    $variabile str_replace("'""'"$variabile ); 
    e poi inseriscila nel database.
    Come vedi ti ho messo anche altri caratteri che puoi filtrare.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    134
    Ma l'accento nel DB lo mette... Solo che sempre preceduto dal simbolo \ che non si toglie...

  4. #4
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,026
    Hai già visto che valore gli passi al database? Forse all'interno ha un carattere così "\".
    Prova a postarmi la query di INSERT. Se puoi passami anche il codice anti-accedente alla variabile che viene passata alla query.

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    134
    Questa è la prima parte di codice:

    codice:
    if (@$_POST['cognome']) {
    	
    $cognomes = mysql_real_escape_string($_POST['cognome']);
    $cognome = htmlspecialchars_decode(htmlentities($cognomes)); 
    $nome = mysql_real_escape_string($_POST['nome']);
    $sesso = mysql_real_escape_string($_POST['sesso']);
    $datanascita = mysql_real_escape_string($_POST['datanascita']);
    $luogonascitas = mysql_real_escape_string($_POST['luogonascita']);
    $luogonascita = htmlspecialchars($luogonascitas, ENT_QUOTES);
    $prov = mysql_real_escape_string($_POST['provincia']);
    $cittadinanza = mysql_real_escape_string($_POST['cittadinanza']);
    $residenzas = mysql_real_escape_string($_POST['residenza']);
    $residenza = htmlspecialchars($residenzas, ENT_QUOTES);
    $provincia = mysql_real_escape_string($_POST['provincia2']);
    $cap = mysql_real_escape_string($_POST['cap']);
    $indirizzos = mysql_real_escape_string($_POST['indirizzo']);
    $indirizzo = htmlspecialchars($indirizzos, ENT_QUOTES);
    $statocivile = mysql_real_escape_string($_POST['statocivile']);
    $codfiscale = mysql_real_escape_string($_POST['codicefis']);
    $datarilpat = mysql_real_escape_string($_POST['datarilpat']);
    $legaleraps = mysql_real_escape_string($_POST['legrap']);
    $legalerap = htmlspecialchars($legaleraps, ENT_QUOTES);
    $telefonocasa = mysql_real_escape_string($_POST['telfisso']);
    $telefonolav = mysql_real_escape_string($_POST['telefonolav']);
    $cellulare = mysql_real_escape_string($_POST['cellulare']);
    $emails = mysql_real_escape_string($_POST['email']);
    $email = strtolower ($emails);
    $professione = mysql_real_escape_string($_POST['professione']);
    $annotazioni = mysql_real_escape_string($_POST['annotazioni']);
    @$docide = mysql_real_escape_string($_POST['docide']);
    @$codfi = mysql_real_escape_string($_POST['codfi']);
    @$docvari = mysql_real_escape_string($_POST['docvari']);
    @$privacy = mysql_real_escape_string($_POST['privacy']);
    @$nfile = mysql_real_escape_string($_POST['nfile']);
    @$nfiles = mysql_real_escape_string($_POST['nfiles']);
    @$docvari = mysql_real_escape_string($_POST['docvari']);
    @$privacy = mysql_real_escape_string($_POST['privacy']);
    
    
    mysql_query('set names utf8');
    
    	$query = mysql_query("INSERT INTO anagrafica (COGNOME,NOME,SESSO,DATA_NASCITA,LUOGO_NASCITA,PROV,CITTADINANZA,RESIDENZA,PROVINCIA,CAP,INDIRIZZO,STATOCIVILE,CODFISCALE,DATARILAPAT,LEGALERAP,TELEFONOCASA,TELEFONOLAVORO,CELLULARE,EMAIL,PROFESSIONE,ANNOTAZIONI) VALUES ('{$cognome}', '{$nome}', '{$sesso}', '{$datanascita}', '{$luogonascita}', '{$prov}', '{$cittadinanza}', '{$residenza}', '{$provincia}', '{$cap}', '{$indirizzo}', '{$statocivile}', '{$codfiscale}', '{$datarilpat}', '{$legalerap}', '{$telefonocasa}', '{$telefonolav}', '{$cellulare}', '{$email}', '{$professione}', '{$annotazioni}')");
    
    }

  6. #6
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,026
    Almeno, fino adesso non ho mai visto la @ davanti ai nomi di variabili:
    Codice PHP:
    if (@$_POST['cognome'])
    ....
    ....
    @
    $docide mysql_real_escape_string($_POST['docide']);
    @
    $codfi mysql_real_escape_string($_POST['codfi']);
    @
    $docvari mysql_real_escape_string($_POST['docvari']);
    @
    $privacy mysql_real_escape_string($_POST['privacy']);
    @
    $nfile mysql_real_escape_string($_POST['nfile']);
    @
    $nfiles mysql_real_escape_string($_POST['nfiles']);
    @
    $docvari mysql_real_escape_string($_POST['docvari']);
    @
    $privacy mysql_real_escape_string($_POST['privacy']); 
    Scusa perchè la metti?

    Verifica i campi del database se sono scritti bene perchè ho notato che DATA_NASCITA,LUOGO_NASCITA corrisponde $datanascita, $luogonascita cioè senza underscor poi DATARILAPAT corrisponde a $datarilpat
    e poi TELEFONOLAVORO corrisponde $telefonolav

    Poi solo per dirti come avrei fatto io, il VALUE (\'%s\',\'%s\',\'%s\') cioè creo una serie di \'%s\' per tutti i campi del database.

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    134
    I dati che vengono messi nel database sono giusti, i campi sono corretti anche perchè inserisci bene il contenuto, ma con il problema del \ quando si inserisce un apostrofo... le @ non lo so neanche io perchè le ho messe... le ho tolte ma il risultato è identico

    ho anche provato a fare un str_replace("\", " ", $variabile); ma mi da errore...

  8. #8
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    I problemi possono essere due:

    - Il carattere '\\' viene salvato nel database al momento dell'inserimento dei dati. Se hai phpmyadmin puoi verificare guardando là.
    In questo caso i problemi possono essere molteplici: che funzioni hai utilizzato per filtrare i dati? in quale ordine? hai le magic quotes attivi?

    - Il carattere '\\' non è salvato nel database, ma viene aggiunto al momento di stampare tutto a schermo.

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    134
    Si il carattere \ lo inserisce quando inserisco i dati nel database... Ma non ho ben capito cosa dovrei controllare...

  10. #10
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    Con un
    Codice PHP:
    <?php var_dump(get_magic_quotes_gpc());
    puoi sapere se le magic quotes sono attive. Se l'output è 'true', allora è necessario disattivare la relativa funzione dal php.ini

    Se non è quello il problema, allora stà nel modo in cui è stata salvata. (ma dal codice che hai postato prima non c'è nulla che può portare al problema segnalato)

    Inoltre, ci forniresti la stringa originale (quella inviata per essere salvata) e quella presente nel database che è stata 'modificata' impropriamente?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.