Discussion:
Passaggio GET di Array
(troppo vecchio per rispondere)
Gian Marco Tedaldi / AmiciAmici.com
2007-04-06 12:57:59 UTC
Scusate se è una banalità ma non mi è mai capitato di dover passare un
array tramite GET.
Ho fatto per ora così:
tramite un while ed un BD creo un array $dati[]
poi lo passo via url script.php?d=$dati
e in script.php
$dato_passato=$_GET['d'];
Mi aiutate ad avere i dati corretti in $dato_passato?
--
Amministratore
www.amiciamici.com
Giornalismo dal basso sull'amicizia e sul turismo
"Pronto Chi Bussa" il primo podcast di Parma e provincia?
LuigiZ
2007-04-06 14:05:44 UTC
Post by Gian Marco Tedaldi / AmiciAmici.com
Scusate se è una banalità ma non mi è mai capitato di dover passare un
array tramite GET.
tramite un while ed un BD creo un array $dati[]
poi lo passo via url script.php?d=$dati
e in script.php
$dato_passato=$_GET['d'];
Mi aiutate ad avere i dati corretti in $dato_passato?
Dai un'occhiata a http://it.php.net/manual/it/function.serialize.php
e ricorda il limite della lunghezza della query string.

Luigi
Gian Marco Tedaldi / AmiciAmici.com
2007-04-06 17:03:23 UTC
Post by LuigiZ
Post by Gian Marco Tedaldi / AmiciAmici.com
Scusate se è una banalità ma non mi è mai capitato di dover passare un
array tramite GET.
tramite un while ed un BD creo un array $dati[]
poi lo passo via url script.php?d=$dati
e in script.php
$dato_passato=$_GET['d'];
Mi aiutate ad avere i dati corretti in $dato_passato?
Dai un'occhiata a http://it.php.net/manual/it/function.serialize.php
e ricorda il limite della lunghezza della query string.
Per il limite non credo di aver problemi visto che si tratta di 10
numeri di, al massimo 3 cifre.
Il problema è che se passo script.php?d=".serialize($dati)."
e in script.php $dato_passato=unserializa($_GET['d']);
Ottengo tutti valori nulli.
Non è che si trova online un esempio concreto?
--
Amministratore
www.amiciamici.com
Giornalismo dal basso sull'amicizia e sul turismo
"Pronto Chi Bussa" il primo podcast di Parma e provincia?
LuigiZ
2007-04-06 21:37:35 UTC
Post by Gian Marco Tedaldi / AmiciAmici.com
Il problema è che se passo script.php?d=".serialize($dati)."
e in script.php $dato_passato=unserializa($_GET['d']);
Ottengo tutti valori nulli.
Non è che si trova online un esempio concreto?
Non saprei... bisognerebbe provare a cercare ...
Hai qualche messaggio di errore ?
Hai codificato l'url ?

Ciao.
Luigi
Gian Marco Tedaldi / AmiciAmici.com
2007-04-06 22:23:04 UTC
Post by LuigiZ
Post by Gian Marco Tedaldi / AmiciAmici.com
Il problema è che se passo script.php?d=".serialize($dati)."
e in script.php $dato_passato=unserializa($_GET['d']);
Ottengo tutti valori nulli.
Non è che si trova online un esempio concreto?
Non saprei... bisognerebbe provare a cercare ...
Hai qualche messaggio di errore ?
No, solo che i valori passati sono NULL.
Ho già controllato che all'andata l'array fosse popolato.
Post by LuigiZ
Hai codificato l'url ?
Ora provo.
--
Amministratore
www.amiciamici.com
Giornalismo dal basso sull'amicizia e sul turismo
"Pronto Chi Bussa" il primo podcast di Parma e provincia?
Torakiki
2007-04-06 21:52:54 UTC
[cut]

Prova con

script.php?d=urlencode(serialize($dati));

all'andata e con

$dato_passato=unserialize(urldecode($d));

al ritorno.
--
Torakiki
Gian Marco Tedaldi / AmiciAmici.com
2007-04-06 22:35:21 UTC
Post by Torakiki
[cut]
Prova con
script.php?d=urlencode(serialize($dati));
all'andata e con
$dato_passato=unserialize(urldecode($d));
al ritorno.
Niente.
Ma online non esistono guide o script che hanno utilizzato questo metodo?
--
Amministratore
www.amiciamici.com
Giornalismo dal basso sull'amicizia e sul turismo
"Pronto Chi Bussa" il primo podcast di Parma e provincia?
Federico
2007-04-07 06:41:54 UTC
Post by Gian Marco Tedaldi / AmiciAmici.com
Post by Torakiki
Prova con
script.php?d=urlencode(serialize($dati));
all'andata e con
$dato_passato=unserialize(urldecode($d));
al ritorno.
Niente.
Dopo aver serializzato l'array, prova a usare le funzioni
utf8_encode() e utf8_decode() oppure base64_encode() e
base64_decode(). Per esempio:

<?php
$arr = array(1,2,3,4,5,6,7,8,9,10);
$get = utf8_encode(serialize($arr));

if (isset($_GET['d'])) {
echo '<pre>';
print_r(unserialize(utf8_decode($_GET['d'])));
echo '</pre>';
}
?>
<a href="<?php echo $_SERVER['PHP_SELF'].'?d='.$get ?>">Clicca</a>

Altrimenti, visto che i dati contenuti nell'array saranno solo numeri
interi potresti scrivere una semplice funzione per trasformarlo in
una stringa adatta ad essere passata via get (e viceversa), per
esempio:

<?php
function mySerialize($array)
{
return implode(':', $array);
}

function myUnserialize($string)
{
return explode(':', $string);
}

$arr = array(1,2,3,4,5,6,7,8,9,10);
$get = mySerialize($arr);

if (isset($_GET['d'])) {
echo '<pre>';
print_r(myUnserialize($_GET['d']));
echo '</pre>';
}
?>

<a href="<?php echo $_SERVER['PHP_SELF'].'?d='.$get; ?>">Clicca</a>

Oppure puoi passare direttamente i valori dell'array nell'url, per
esempio: script.php?d[0]=1&d[1]=2&d[2]=3&d[3]=4&...

Ciao.
--
Federico
LuigiZ
2007-04-07 13:21:06 UTC
Post by Gian Marco Tedaldi / AmiciAmici.com
Niente.
Ma online non esistono guide o script che hanno utilizzato questo metodo?
Secondo me dovresti provare a fare un po' di debug, senza fermarti alla
prima difficoltà.
Il metodo suggerito da me e Torakiki è valido, basta seguire quello che
succede:

$array = array('uno', 'due', 'tre'=>'stella');

echo serialize($array);
echo $d = urlencode(serialize($array));
echo "<a href=\"pagina.php?d=$d\" > Prova ora </a>";


e nello script pagina.php

$d = $_GET['d'];
echo $d;
echo $dec = urldecode($d);
$uns = unserialize( $dec );
print_r($uns);

Così facendo potrai vedere qual'è il passaggio che crea il problema e
risolverlo.
Nel mio caso si trattava di rimuovere gli slash aggiunti a protezione
dei parametri passati nella url:

$dec = stripslashes(urldecode($_GET['d']));
$uns = unserialize( $dec );
print_r($uns);

A volte meglio studiare un po' quello che succede invece che perdere
tanto tempo a cercare quello che serve esattamente a te.

Spero ti sia utile.
Ciao.

Luigi
Gian Marco Tedaldi / AmiciAmici.com
2007-04-07 17:17:26 UTC
Grazie a tutti per i consigli.
In questo fine settimana che ho un po' di tempo cerco di sbrogliare la
situazione.
--
Amministratore
www.amiciamici.com
Giornalismo dal basso sull'amicizia e sul turismo
"Pronto Chi Bussa" il primo podcast di Parma e provincia?
Negus
2007-04-10 08:29:58 UTC
On 6 Apr, 14:57, "Gian Marco Tedaldi / AmiciAmici.com"
Post by Gian Marco Tedaldi / AmiciAmici.com
Scusate se è una banalità ma non mi è mai capitato di dover passare un
array tramite GET.
Potresti pensare di usare le sessioni, invece che il GET.