problemino con serialize/unserialize

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
ciao
piccolo problemino con serialize/unserialize
PHP:
<?php
if(isset($_GET['mando'])){
var_dump($_GET['mando']);
$dati=unserialize($_GET['mando']);
var_dump($dati);
}
$dato['la']=44.059959;
$dato['lo']=44.059959;
$dato['zo']=10;
$dato['la_m']=44.038129;
$dato['lo_m']=11.8373387;
$dato['ti']="un bel titolo";
$inviare=serialize($dato);
var_dump($inviare);
echo "<a href=\"?mando=$inviare\">invia</a>";
?>
questo è l'uot del var_dump prima dell'invio
string(301) "a:6:{s:2:"la";d:44.05995899999999920737536740489304065704345703125;s:2:"lo";d:44.05995899999999920737536740489304065704345703125;s:2:"zo";i:10;s:4:"la_m";d:44.038128999999997859049472026526927947998046875;s:4:"lo_m";d:11.837338700000000102363628684543073177337646484375;s:2:"ti";s:13:"un bel titolo";}"
e questo è l'uot dei due vardump dopo
string(9) "a:6:{s:2:"
bool(false)
forse perchè la stringa inviata è troppo lunga? o sono i ; dato che si ferma al primo?
mi scoccerebbe fare una sequenza di
?a=xx&b=vv&&c=mm......
 
ciao
ecco risolto eliminando e ripristinando le ", se può servire a qualcuno

PHP:
<?php
if(isset($_GET['mando'])){
var_dump($_GET['mando']);echo "<br>";
$dati=str_replace("|","\"",$_GET['mando']);//ripristino le virgolette
var_dump($dati);echo "<br>";
$dati=unserialize($dati);
var_dump($dati);echo "<hr>";
}
$dato['la']=44.059959;
$dato['lo']=44.059959;
$dato['zo']=10;
$dato['la_m']=44.038129;
$dato['lo_m']=11.8373387;
$dato['ti']="un bel titolo";
$inviare=serialize($dato);
var_dump($inviare);echo "<br>";
$inviare=str_replace("\"","|",$inviare);//elimino le virgolette
var_dump($inviare);echo "<br>";
echo "<a href=\"?mando=$inviare\">invia</a>";
?>
 
Carissimo borgo,
per la serie "i problemi non finiscono mai"...
ho letto la tua soluzione e la proverò, sperando che funzioni anche con POST e non solo con GET.
Però non capisco perché, per poter utilizzare un elemento costruito da PHP, sia necessario trasformarlo.
L'oggetto ha un formato creato da PHP; serialize() converte l'oggetto PHP in stringa PHP; unserialize() converte la stringa PHP in oggetto PHP. Perché poi, racchiudendo la stringa fra doppie virgolette, commette un errore da neofiti? Anche se capita a tutti di non alternare ' e " specie quando si fa echo di frasi HTML, la coppia serialize() e unserialize() è stata introdotta con PHP 4.2 ed io, che oggi uso PHP 5.4, perché ancora mi devo preoccupare delle virgolette?
 

Discussioni simili