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

    [php]problemi con serialize e unserialize

    sto usando per la prima volta queste funzioni per passarmi degli array...

    io ho un link del genere: .php?post=serialize($_POST) e nell'url mi vedo appese cose del tipo a:4:{s:7:

    però poi perché la funzione inversa non mi restituisce niente? ho provato a far scrivere il risultato dell'userialize ma non scrive nulla, sia con echo che con print_r :master:


    ho guardato il manuale e le funzioni le ho applicate come sta scritto negli esempi, ma l'unserialize mi dà appunto problemi.

    spulciando però meglio il manuale ho letto che se la stringa non è deserializzabile la funzione restituisce FALSE e genera un E_NOTICE. Così ho provato ad impostare l'error_reporting a E_ALL per vedere il notice, ed in effetti ottengo:
    Notice: unserialize(): Error at offset 5 of 9 bytes
    quindi mi chiedo...come risolvere il problema? e soprattutto che senso hanno queste due funzioni se la prima volta che le uso ottengo che la stringa non è deserializzabile?




    un grazie a chi mi chiarisce questi dubbi
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    credo che il problema sia nella codifica dei caratteri che avviene in get..

    Hai provato con un url_decode prima dell'unserialize?

    comunque se la usi senza passarla via get vedrai che funge.

    ciao

  3. #3
    si infatti il problema era proprio quello! mi stavo impegolando per nulla, lol!




    grazie mille!


    edit => per risolvere ho usato anche htmlentities in GET e html_entity_decode in recupero della variabile
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  4. #4
    io ho un vettore multidimensionale così fatto:

    $vett[$chiave_1][$chiave_2][$chiave_3][$chiave_4][$chiave_5][$chiave_6]

    ho fatto poi la serializzazione

    $prova=serialize($vett);

    per passarlo ad un altra pagina ho fatto

    <input type=\"hidden\" name=\"struttura\" value=\"$prova\">

    La pagina che lo riceve mi da un Notice

    $struttura=unserialize($_POST["struttura"]);

    Notice: unserialize(): Error at offset

    premetto che nel form utilizzo il metodo POST



  5. #5
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    prova a usare

    stripslashes($_POST['struttura']), potrebbe essere che tu abbia attivato gpg_magic_quotes, che aggiunge le slashes alle variabili passate via post.

    Comunque un vettore cosi complesso mi sembra un po' assurdo, non riesci a trovare un modo migliore per passare i dati?
    Ad esempio potresti metterlo in sessione, oppure scriverti un oggetto che è un modo più ordinato di organizzare i dati...

    ciao

  6. #6
    l'errore persiste anche con stripslashes


  7. #7
    ho risolto con urldecode e urlencode

  8. #8
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    avevo dato per scontato che quello lo avessi già provato

  9. #9
    Utente di HTML.it L'avatar di breiko
    Registrato dal
    Jan 2003
    Messaggi
    53
    Ciao ragazzi, ho anch'io un problema del genere.
    Alcuni unserialize funzionano e altri no dipende dalla stringa che passo.

    Il problema è che io ho i dati in un database, li devo copiare in un altro (serializzando), quindi da quest'ultimo li devo visualizzare tramite unserialize.

    Quindi per me niente GET o POST.
    Ho provato con addslashes() e stripslashes() ma niente.
    Ho provato anche con htmlspecialchars() ma la funzione _decode() non è supportata dalla versione php di aruba.

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.