Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Problema (misterioso) con unserialize

    Buonasera a tutti,

    ho girato per il foprum, ho visto che ci sono varie discussioni aperte sull'argomento, ma nessuna che affronti il mio problema.

    Premetto che fino all'altro giorno lavoravo in locale e il problema non si era mai presentato, adesso che ho spostato l'applicativo sul server ho riscontrato questo problema. (Magari non è importante, ma lo scrivo per dovere di cronaca!!!)

    Praticamente serializzo 2 array e li passo via post ad una pagina che dovrebbe riempirmi alcuni excel.
    La pagina in questione riceve i due array serializzati:
    il primo dovrebbe contenere dei codici di contratti e stampandolo nella pagina che lo riceve ha il seguente formato:
    a:6:{i:0;s:8:\"TAG09001\";i:1;s:8:\"TAG09002\";i:2 ;s:8:\"TAG09003\";i:3;s:8:\"TAG09004\";i:4;s:8:\"T AG09005\";i:5;s:8:\"TAG09006\";}

    il secondo contiene dei valori numerici che si riferiscono ai contratti ed appare cosi:
    a:6:{i:0;d:156.06000000000000227373675443232059478 759765625;i:1;d:156.060000000000002273736754432320 59478759765625;i:2;d:27.05000000000000071054273576 01001858711242675781

    A questo punto ho applicato d entrambi la funzione unserialize(), e poi ho provato a stampare il contenuto degli array deserializzati e mentre il primo non stampa niente il secondo stampa i valori come dovrebbe:
    156.06
    156.06
    27.05
    27.05
    27.05
    27.05

    Qualcuno ha idea di quale potrebbe essere il problema della mancata deserializzazione???

    Grazie mille in anticipo.

    Ciaooo

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    potresti stampare il valore della variabile PRIMA dell'unserialize per verificare cosa in effetti hai nel codice (puoi usare un var_export o un print, e poi visualizza il sorgente della pagina, NON quello che vedi nel browser)... e poi: come passi i valori in POST? Con dei campi HIDDEN? Magari hai dei problemi con i "doppi apici" e il carattere di escape (è solo una semplice ipotesi)

  3. #3
    Ciao,
    grazie per la risposta.

    I valori degli array prima di essere deseriliazzti sono
    a:6:{i:0;s:8:\"TAG09001\";i:1;s:8:\"TAG09002\";i:2 ;s:8:\"TAG09003\";i:3;s:8:\"TAG09004\";i:4;s:8:\"T AG09005\";i:5;s:8:\"TAG09006\";}

    a:6:{i:0;d:156.06000000000000227373675443232059478 759765625;i:1;d:156.060000000000002273736754432320 59478759765625;i:2;d:27.05000000000000071054273576 01001858711242675781;}

    Il primo non riesce proprio a deserializzarlo, mentre il secondo lo fa senza problemi.
    Per come l'ho capito io il primo contiene delle stringhe (s, il secondo dei valori (d, e ogni volta che ci sono dei valori stringa mi da problemi.
    Anche oggi mi si presenta lo stesso problema!!!!
    Help please!!!!

    i dati li passo via campo hidden e POST, però come dicevo, la cosa strana è che prima di essere passato sul server, l'applicativo in locale funzionava!!!


    ciaoo

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    i "backslash" nel valore "deserializzato" fanno parte della variabile o compaiono solo nella stampa a video?

  5. #5
    No nell'array non dovrebbero esserci.
    L'array dovrebbe contenere:
    {TAG09001,TAG09002,....,TAG09006}

    Ma quello che ho stampato dovrebbe essere il dato ancora serializzato, o sbaglio??
    Dici che sono quelli che gli danno fastidio, nell'altro che ho stampato non ci sono e infatti viene deserializzato correttamente!

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    mi sono espresso male in effetti... senti prova in uno script da solo:

    Codice PHP:
    print unserialize('a:6:{i:0;s:8:"TAG09001";i:1;s:8:"TAG09002";i:2;s:8:"TAG09003";i:3;s:8:"TAG09004";i:4;s:8:"TAG09005";i:5;s:8:"TAG09006";}'); 
    va?

  7. #7
    ho provato a fare questo di scriptino, che dovrebbe fare la stessa cosa che mi chiedevi...

    $a = unserialize('a:6:
    {i:0;s:8:"TAG09001";i:1;s:8:"TAG09002";i:2;s:8:"TA G09003";i:3;s:8:"TAG09004";i:4;s:8:"TAG09005";i:5; s:8:"TAG09006";}');

    for($i=0;$i<sizeof($a);$i++)
    echo"$a[$i]
    ";

    ed effettivamente lo deserializza e stampa il contenuto.
    Quindi il problema sono gli \, hai idea di come posso levarmeli di torno??

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.