Niveau
..........
En rapport...

Passer des informations d'une page à l'autre sans révéler les variables et sans post !

Le principe de base est simple. On va créer une variable qui va contenir des bouts de code php.
On va compresser cette variable, l'encoder pour le passage en GET puis l'envoyer à une deuxieme page.
Cette deuxieme page va décoder la chaîne en paramètre, la décompressé puis l'exécuter (via eval).
En utilisant SERIALIZE, on pourrait passer une variable tableau (pourquoi pas $_SESSION ?)

Code

———————–Copier ce code dans a.php————————

php
<?php
    //on met dans la variable $str 2 affectations, une pour $a et une pour $b
    $str = '$a="toto";$b="tata";';
    //on compresse la chaîne obtenue avec gz
    $str = gzcompress($str, 9);
    //encode la chaîne au format URL
    $str=urlencode($str);
    //on affiche le résultat :
    echo $str;
?>

Voici un lien appelant la page b.php et passe en paramètre la chaîne compressé :

php
<a href="b.php?<?php echo $str; ?>">page b!</a>

———————–Copier ce code dans b.php————————

php
<?php
    //récupère l'adresse qui a été utilisée pour appeler la page
    $b=$_SERVER['REQUEST_URI'];
    //extrait le seul et unique paramètre (il se trouve après le ?)
    $b=substr($b, strpos($b,'?')+1);
    //décode la chaîne (encodé dans le fichier a.php)
    $b=urldecode($b);
    //décompresse les données
    $str = gzuncompress($b);
    //évalue le contenu, ça va donc évaluer $a="toto";$b="tata";
    eval($str);
    //et affiche le résultat. On voit donc que $a et $b ont été passé en paramètre de a.php
    //vers b.php sans qu'ils soient directement visible.
   echo 'str='.$str.'<br>a='.$a.'<br>b='.$b;
?>



06/06/2006 15:49 -

iDo –