Cacher les variables contennues dans une url

Contenu du snippet

Problème : Il arrive que sur vos liens, vous ayez besoin de spécifier une variable adjointe d'une valeur, afin de faire un traitement dans la page renvoyé par ce dernier.
Le problème, est que ces variables, son visible dans l'url. Pour l'aspect esthétique, ce n'est pas trés beau, mais ce type d'url, peut entrainner des failles dans votre code et des utilisateurs, peuvent adjoindre toute sorte de valeurs, ce qui ne sera pas forcément de votre gout.
Utilitée : Imaginez que vous souhaitez intégrer un questionnaire dans votre site internet, et qu'en fonction des réponses donné, le visiteur, sera dirigé vers tel ou tel page.
Si il suffit de retenir l'url et ses variable, n'importe qui pourra avoir accès à ces différentes pages directement.
Avec cette astuce, le visiteur, ne verra aucune des variables.

Compatibilitée : IE et N6.0

Source / Exemple :


<!--
Explications : 
Nous allons partir du principe, que votre site est basé sur une seule page de base. 
Nous allons donc nommer cette dernière : index.php 
Imaginez maintenant que vous voulez inclure une page au sein de index.php en passant des variables à l'url par l'intermédiaire d'un menu traditionel. 
Le menu classique : 
-->

<a href="?page=accueil.php">Accueil</a><br>
<a href="?page=page1.php">Page 1</a><br>
<a href="?page=page2.php">Page 2</a><br> 
etc... 

<!--
Comme vous pouvez le constater, nous avons ici une variable "page" qui va permettre d'inclure un contenu dans notre page d'origine index.php 
Maintenant, ce qu'il va se passer, c'est que lorsqu'un utilisateur, cliquera sur le premier lien, nous retrouverons ceci dans la barre d'url de notre navigateur favoris :
- http://www.mon_site.com/index.php?page=accueil.php 

Il faudra utiliser (php) la commande $_GET['page'] dans ce cas pour récupérer la variable "page" et sa valeur. 
Nous allons donc utiliser une astuce, afin de cacher cette variable. 
Pour ce, il faut créer un formulaire avec les argument suivant : 
-->

<form action="<? echo $PHP_SELF ?>" method="get" name="Menu1"> 
  <input type="text" name="page" value=""><br> 
  <!-- ICI RECOPIER LE MENU CI-DESSUS --> 
  <a href="?page=accueil.php">Accueil</a><br>
  <a href="?page=page1.php">Page 1</a><br>
  <a href="?page=page2.php">Page 2</a><br> 
</form> 

<!--
Jusque là, vous vous dites, mais quel interêt ? .... (ça vient, ça vient  ) 
A présent, nous allons insérer un petit script qui devra être placé dans le <HEAD></HEAD> de votre page index.php 
Ce script en JavaScript, va permettre d'envoyer une valeur dans le contenu du champ "page" de la boite input. 
-->

<script language="JavaScript" type="text/javascript"> 
function Go(url) 
{ 
  // Donne la valeur de la variable 'url' au champ 'page' 
  document.forms.menu.elements.page.value=url; 
  // Permet l'envoi du formulaire lors de l'exécution de la fonction 
  document.forms.menu.submit(); 
}  
</script> 

<!--
Maintenant, nous allons modifier les liens du menu, afin d'appeler cette fonction. 
Pour des raisons qui vont suivre dans le courant de cette astuce, nous allons totalemnt supprimer les liens existants, et nous appelerons la fonction JavaScript au travers d'un onClick. 
Nous mettrons ici comme variable affectée à la fonction la page de destination. 
-->

<form action="<? echo $PHP_SELF ?>" method="get" name="menu"> 
  <input type="text" name="page" value=""><br> 
  <!-- ICI RECOPIER LE MENU CI-DESSUS --> 
  <a href="#" onClick="Go('accueil.php')">Accueil</a><br> 
  <a href="#" onClick="Go('page1.php')">Page 1</a><br> 
  <a href="#" onClick="Go('page2.php')">Page 2</a><br> 
</form> 

<!--
Maintenant, lors d'un click sur un de ces lien, le champ "page" se verra affecter la valeur contennue. 
Et le formulaire sera envoyé... 
Dans ce cas, nous pourrons récupérer la variable "page" et sa valeur par la commade $_GET['page'], et ainsi pouvoir inclure une page provenant de n'importe qu'elle destination. 
ex : 
-->

<html> 
<head> 
<title>Ma Page</title> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
<script language="JavaScript" type="text/javascript"> 
function Go(url) 
{ 
// Donne la valeur de la variable 'url' au champ 'page' 
document.forms.menu.elements.page.value=url; 
// Permet l'envoi du formulaire lors de l'exécution de la fonction 
document.forms.menu.submit(); 
} 
</script> 
</head> 
<body> 

<form action="<? echo $PHP_SELF ?>" method="get" name="menu"> 
   <input type="text" name="page" value=""><br> 
   <!-- ICI RECOPIER LE MENU CI-DESSUS --> 
   <a href="#" onClick="Go('accueil.php')">Accueil</a><br> 
   <a href="#" onClick="Go('page1.php')">Page 1</a><br> 
   <a href="#" onClick="Go('page2.php')">Page 2</a><br> 
</form> 

<!-- LE RESTE DE VOTRE CODE --> 

<? 
// Insertion des informations pour la page appelée 
// vérification de l'existance de la variable et de son contenu. 
if (isset($_GET['page']) && trim($_GET['page']) != "") 
{ 
   switch($_GET['page']) 
   { 
      case 'accueil.php' : 
         include("mon_dossier/accueil.php" ); 
         break; 
      case 'page1.php' : 
         include("mon_dossier/page1.php"); 
         break; 
      case 'page2.php' : 
         include("mon_dossier/page2.php"); 
         break; 
      default : 
         include("mon_dossier/accueil.php"); 
         break; 
   } 
} 
else 
{ 
   include("mon_dossier/accueil.php"); 
} 
?> 
</body> 
</html> 

<!--
Jusque là, rien d'extraodinaire.... en effet, les variables sont toujours visible dans le l'url.. 
L'astuce commence maintenant. 
Il suffit à présent de modifier les lignes suivantes : 
-->

<form action="<? echo $PHP_SELF ?>" method="get" name="menu"> 
   <input type="text" name="page" value=""> 

<!--
en : 
-->

<form action="<? echo $PHP_SELF ?>" method="post" name="menu"> 
   <input type="hidden" name="page" value=""> 

<!--
et de changer toutes les commandes $_GET['page'] en $_POST['page'] 
soit :
-->
 
if (isset($_POST['page']) && trim($_POST['page']) != "") 
{ 
   switch($_POST['page']) 

<!--
Et voilà ... 
Désormais, les variables et leur valeur, ne seront plus visible dans votre lien.
-->

Conclusion :


04/09/2003 - Rectificatif...
J'ai oublié de mettre le dièse dans les liens .. ce qui empèche le script de marcher correctement ... :|
08/09/2003 - Rectificatif...
Encore un oublie ;(
Retirer le "javascript:" qui du coup ne sert à rien dans l'appel 'onClick'
ET une bourde :
j'avais mis : if (!$GET_[' ... au lieu de : if (isset($_GET[' ...

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.