Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di nep036
    Registrato dal
    Nov 2003
    Messaggi
    1,453

    Serialize e simboli dannosi

    Ciao, pesco da db dei dati inseriti con il mysql_real_escape_string, poi li passo a flash serializzandoli: Ho notato che con urlencode (che mi servirebbe per passare a flash il simbolo &) la deserializzazione in flash è imprecisa, si porta dietro una parte della stringa serializzata.

    Dopo un po di prove ho scoperto che il simbolo % è quello che da noie, però adesso non so come trattare i dati per riuscire a portare in flash sia il simbolo % che &

    Spero qualcuno mi illumini,

    grazie...


  2. #2
    Utente di HTML.it L'avatar di nep036
    Registrato dal
    Nov 2003
    Messaggi
    1,453
    mmhhh ho risolto per & e il %, il problema era altrove... il simbolo dell'euro mi aggiunge alla fine della stringa delle "

    boh, sarà il mio mac, sarà che è americano, sarà che devo provare sul pc....

  3. #3
    Ciao.
    Prova con utf8_encode

    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  4. #4
    Utente di HTML.it L'avatar di nep036
    Registrato dal
    Nov 2003
    Messaggi
    1,453
    Originariamente inviato da whisher
    Ciao.
    Prova con utf8_encode

    Le ho provate tutte....

    allora tutto il db, tabella e colonna ha charset utf8_unicode_ci

    flash esporta in utf8_unicode
    lo script php l'ho salvato come utf8_unicode

    ho fatto tutto.... funzionano tutti tutti i caratteri speciali, ma tutti, tranne € (cioè funziona ma mi aggiunge alla fine della stringa serializzata le doppie virgolette)

    però mi sorge un dubbio se l'euro lo metto nel campo in flash e non nel player pubblicato mi scrive l'euro, poi quando ritorna la stringa inserita nel db vedo tutto, anche l'euro, ma le doppie virgolette alla fine della stringa dopo la deserializzazione.

    Però se scrivo il simbolo nel campo del player in esecuzione invece di € mi mette Û....a questo punto penso che dipenda dal mio mac...

  5. #5
    Utente di HTML.it L'avatar di nep036
    Registrato dal
    Nov 2003
    Messaggi
    1,453
    Adesso ho notato che per ogni simbolo dell'euro che inserisco alla fine della stringa mi ritrovo un numero maggiore di caratteri che fanno parte dell'array serializzato:

    Questo è il testo che inserisco

    abcdefghilmnopqrstuvzxykj
    ABCDEFGHILMNOPQRSTUVZXYKJ
    àèéìòù&@!?$€%€€€€€€€€€€€€€
    .,;:
    123456789
    +*-/

    Questo è quello che mi torna

    abcdefghilmnopqrstuvzxykj
    ABCDEFGHILMNOPQRSTUVZXYKJ
    àèéìòù&@!?$€%€€€€€€€€€€€€€
    .,;:
    123456789
    +*-/";}i:2;O:5:"od

    In bold quello che viene aggiunto e che non centra niente e che fa parte della stringa serializzata

    Come dicevo prima con un solo simbolo dell'euro inserito alla fine trovo in più solo le virgolette


    Mamma mia che macello....

  6. #6
    Utente di HTML.it L'avatar di nep036
    Registrato dal
    Nov 2003
    Messaggi
    1,453
    Per curiosità ho provato ad inserire solo il carattere dell'euro e solo altri caratteri per confrontare la stringa serializzata...

    Mi torna questo:

    a:4:{i:0;O:5:"odata":2:{s:2:"id";s:1:"1";s:5:"test o";s:3:"€";}i:1;O:5:"odata":2:{s:2:"id";s:1:"2";s:5:"testo";s:3:"€";}i:2;O:5:"odata":2:{s:2:"id";s:1:"3";s:5:"testo";s:1:"a";}i:3;O:5:"odata":2:{s:2:"id";s:1:"4";s:5:"testo";s:1:"$";}}

    Analizzando la stringa ho notato che quando inserisco il simbolo € nella serializzazione invece di calcolare 1 carattere ne calcola 3

    Ho colorato le parti incriminate a confronto

    In arancio si nota che al simbolo euro abbiamo s:3 che è sballato essendo un solo carattere, infatti per il simbolo del $ o per una semplice "a" il valore s: è corretto, cioè 1

    Non c'è nessuno che riesce a spiegarmi sta cosa?

    Scusate se vi rompo le scatole.... :-)


  7. #7
    Utente di HTML.it L'avatar di nep036
    Registrato dal
    Nov 2003
    Messaggi
    1,453
    Si, ho provato anche su pc, è proprio il simbolo dell'euro a far danni.

    Ho messo la prova sul server, cosi magari potete vedere con i vostri occhi...

    Il campo di sopra è l'input

    quello di sotto è l'input dopo che viene inserito nel db e ricaricato attraverso la serializzazione. Provate a giocare con gli € e noterete la differenza tra input e output....

    LINK

    Grazie a chi mi darà conforto...

  8. #8
    Utente di HTML.it L'avatar di nep036
    Registrato dal
    Nov 2003
    Messaggi
    1,453
    Se può servire per far capire meglio questo è lo script php che uso per questi test...

    Codice PHP:

    <?php    

        $db_host 
    'localhost:8889';
        
    $db_user 'root';
        
    $db_pass 'root';
        
    $db_name 'test';

        
    $db mysql_connect($db_host$db_user$db_pass);
        
    mysql_select_db($db_name$db);

        function 
    strip_magic($value) {

            
    $value = (get_magic_quotes_gpc()) ? stripslashes($value) : $value;
            return 
    $value;

        }

        if (isset(
    $_POST['vars'])) {

        
    $var_0 strip_magic($_POST['vars']);
        
    $val_0 mysql_real_escape_string($var_0$db);

                        
    $query "INSERT INTO test (testo) VALUES ('$val_0')";

                        
    $data mysql_query($query$db);
                        
    $result mysql_affected_rows();

                        if (
    $result === 1) {

                        
    $query_bis "SELECT * FROM test ORDER by id ASC";

                        
    $data_bis mysql_query($query_bis$db);

                            if (
    mysql_num_rows($data_bis) == 0) {

                                echo 
    '&esito=NO';
                                exit;

                            } else {

                                echo 
    '&esito=OK';

                                class 
    oData {

                                    var 
    $id$testo;

                                        function 
    oData($id$testo) {

                                            
    $this->id $id;
                                            
    $this->testo $testo;

                                        }

                                }

                                
    $array = array();
                                
    $a 0;

                                while (
    $row mysql_fetch_assoc($data_bis)) {

                                
    $array[] = new oData($row['id'], $row['testo']);

                                
    $a++;

                                }
                                
                                echo 
    '&output='urlencode(serialize($array));
                                
    mysql_close($db);

                            }


                        } else {

                            echo 
    '&esito=NO';

                        }

        }

    ?>

  9. #9
    Utente di HTML.it L'avatar di nep036
    Registrato dal
    Nov 2003
    Messaggi
    1,453
    Tanto per la cronaca, è colpa della serializer class per flash, perchè tutti i caratteri funzionano alla perfezione se non deserializzati in flash...quindi non serializzo più :-)


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.