Cacher les variables contennues dans une url

Soyez le premier à donner votre avis sur cette source.

Snippet vu 27 799 fois - Téléchargée 29 fois

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

Ajouter un commentaire

Commentaires

r23o
Messages postés
1
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
13 septembre 2003
-
Bah ! trop compliqué ton truc.
Utilise plutot l'url rewriting en configurant ton htaccess. C'est plus puissant et plus simple et en plus c'est bien mieux pour le referencement dans les moteurs de recherche.
McPeter
Messages postés
136
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
18 avril 2013
-
Ouais .. encore un commentaire à deux balles !
Dans un premier temps avant de poster ce genre de commentaire, explique ce qu'est le mod_rewrite
ensuite comment el configurer
ensuite pour ce qui est du plus simple, tu repasseras ... car il faut maitriser les expressions régulières (ce qu est loin d'être le cas de tout le monde)
ensuite combien d'hebergeur accepte ce mode ?
le mod_rewrite fait partit de la configuration de apache est cette configuration est loin d'être active chez tous les hebergeurs.
etc..
etc..
etc..
bref poster des commentaires comme ça tu peux te les garder ..
ça ne fait en rien avancer la source.
plutot nul pour un premier message sur CS.
baronphi
Messages postés
1
Date d'inscription
lundi 8 mars 2004
Statut
Membre
Dernière intervention
16 octobre 2005
-
Bonjour à tous

Voilà mon problème, j'y connais rien en javascript.

J'ai récupéré le script ci-dessous sur un tuto et je souhaite intégrer celui-ci dedans mais je ne vois pas où placer le ONCLICK.
Merci de votre aide.

<SCRIPT LANGUAGE=JavaScript>
hauteurcadre = 10;

xmenu = new Array;
xlien = new Array;

xmenu[0] = 'Navigation';
xmenu[1] = 'Insérer';
xmenu[2] = 'Recherche par';
xmenu[3] = 'Consulter';
xmenu[4] = 'Contact';

xlien[0] = ''
xlien[1] = ''
xlien[2] = ''
xlien[3] = ''
xlien[4] = ''
xlien[0] += '[index.php Index]';
xlien[0] += ' | '
xlien[0] += '[javascript:history.go(-1) Suivant]';
xlien[0] += ' | '
xlien[0] += '[javascript:history.go(+1) Précédent]';
xlien[1] += '[# Une personne]';
xlien[1] += ' | '
xlien[1] += '[# Un document]';
xlien[2] += '[# Nom]';
xlien[2] += ' | '
xlien[2] += '[# Lieu]';
xlien[2] += ' | '
xlien[2] += '[# Source]';
xlien[3] += '[# Test]';
xlien[3] += ' | '
xlien[3] += '[# ]';
xlien[4] += '[# Mail]';

document.write('<TABLE CELLPADDING=2 CELLSPACING=0 BORDER=0 WIDTH=100%>----
');

for(i=0;i<xlien.length;i++)
{
document.write(''+xmenu[i]+', ');
}
document.write('----
<layer id="dynamenu32" width=100% height='+hauteurcadre+'>

</layer>
</TD></TR></TABLE>');

function colorIt(tditem)
{
if(document.all)
{
document.all.td0.style.background='#006699';
document.all.td1.style.background='#006699';
document.all.td2.style.background='#006699';
document.all.td3.style.background='#006699';
document.all.td4.style.background='#006699';
tditem.style.background='#6699CC';
}
else if(document.getElementById)
{
document.getElementById("td0").style.background='#006699';
document.getElementById("td1").style.background='#006699';
document.getElementById("td2").style.background='#006699';
document.getElementById("td3").style.background='#006699';
document.getElementById("td4").style.background='#006699';
tditem.style.background='#6699CC';
}
}

function MajMenu(menu)
{
which = xlien[menu];
if (document.layers)
{
document.dynamenu31.document.dynamenu32.document.write(''+which+'')
document.dynamenu31.document.dynamenu32.document.close()
}
else if (document.getElementById)
{
document.getElementById("dynamenu33").innerHTML = '<CENTER>'+which+'</CENTER>';
}
else if (document.all)
{
dynamenu33.innerHTML=' '
dynamenu33.innerHTML=''+which+'';
}
}
if (document.getElementById)
colorIt(document.getElementById("td0"));
else if (document.all)
{
colorIt(document.all.td0);
}
MajMenu(0);
</SCRIPT>
srprogfou
Messages postés
3
Date d'inscription
dimanche 4 mai 2003
Statut
Membre
Dernière intervention
20 août 2009
-
Question : j'ai du utiliser les href au lieu du onclick car google ne vois pas bien les liens onclick et du coup les pages ne sont pas réferencées

ce doit etre le cas pour cette méthode !

L'un d'entre vous à tester le référencement avec cette méthode ?
cs_hantouva
Messages postés
15
Date d'inscription
vendredi 10 décembre 2010
Statut
Membre
Dernière intervention
19 mars 2012
-
bonjour
voila jaimerais cacher les variables que jenvois uns un lienjai teste votre methode mais cela ne fonctionne pas
jai teste en premier sur une des variables "etat" que jenvois dans un lien vers une page entete.php cest au niveau de la page enete que je veux cacher les variables car cette meme variable sera envoyee dans un autre lien dans la page entete
// je recupere la varible entete dans page entete
<?php
require_once('conn.php');

if(isset($_POST['sg2']))

{ $sigle=$_POST['sg2'];
$annee=$_POST['annee'];
$etat=$_POST['etat'];

?>

//partie head
<!--cacher variables-->
<script language="JavaScript" type="text/javascript">
function Go(url)
{
// Donne la valeur de la variable 'url' au champ 'etat'
document.forms.menu.elements.etat.value=url;
// Permet l'envoi du formulaire lors de l'exécution de la fonction
document.forms.menu.submit();
}
</script>
// partie body
// le lien ainsi que toutes les parties ou apparait la veriable etat
<?php if(($annee)==2009)
{?>
[entete bilan.php?sg2=<?php echo $sigle; ?>&etat=<?php echo ($_POST['etat']);?>&annee=2009 2009]

[entete bilan.php?sg2=<?php echo $sigle; ?>&etat=<?php echo ($_POST['etat']);?>&annee=2008 2008]

[entete bilan.php?sg2=<?php echo $sigle; ?>&etat=<?php echo ($_POST['etat']);?> &annee=2007 2007]

[entete bilan.php?sg2=<?php echo $sigle; ?>&etat=<?php echo ($_POST['etat']);?>&annee=2006 2006]

[entete bilan.php?sg2=<?php echo $sigle; ?>&etat=<?php echo ($_POST['etat']);?>&annee=2005 2005]
<?php }
else
{

if(($annee)==2008)
{?>
[entete bilan.php?sg2=<?php echo $sigle; ?>&etat=<?php echo ($_POST['etat']);?>&annee=2009 2009]

[entete bilan.php?sg2=<?php echo $sigle; ?>&etat=<?php echo ($_POST['etat']);?>&annee=2008 2008]

[entete bilan.php?sg2=<?php echo $sigle; ?>&etat=<?php echo ($_POST['etat']);?>&annee=2007 2007]

[entete bilan.php?sg2=<?php echo $sigle; ?>&etat=<?php echo ($_POST['etat']);?>&annee=2006 2006]

[entete bilan.php?sg2=<?php echo $sigle; ?>&etat=<?php echo ($_POST['etat']);?>&annee=2005 2005]
<?php }
else
{

if(($annee)==2007)
{?>
[entete bilan.php?sg2=<?php echo $sigle; ?>&etat=<?php echo ($_POST['etat']);?>&annee=2009 2009]

[entete bilan.php?sg2=<?php echo $sigle; ?>&etat=<?php echo ($_POST['etat']);?>&annee=2008 2008]

[entete bilan.php?sg2=<?php echo $sigle; ?>&etat=<?php echo ($_POST['etat']);?>&annee=2007 2007]

[entete bilan.php?sg2=<?php echo $sigle; ?>&etat=<?php echo ($_POST['etat']);?>&annee=2006 2006]

[entete bilan.php?sg2=<?php echo $sigle; ?>&etat=<?php echo ($_POST['etat']);?>&annee=2005 2005]
<?php }
else
{

if(($annee)==2006)
{?>
[entete bilan.php?sg2=<?php echo $sigle; ?>&etat=<?php echo ($_POST['etat']);?>&annee=2009 2009]

[entete bilan.php?sg2=<?php echo $sigle; ?>&etat=<?php echo ($_POST['etat']);?>&annee=2008 2008]

[entete bilan.php?sg2=<?php echo $sigle; ?>&etat=<?php echo ($_POST['etat']);?>&annee=2007 2007]

[entete bilan.php?sg2=<?php echo $sigle; ?>&etat=<?php echo ($_POST['etat']);?>&annee=2006 2006]

[entete bilan.php?sg2=<?php echo $sigle; ?>&etat=<?php echo ($_POST['etat']);?>&annee=2005 2005]
<?php }
else
{


if(($annee)==2005)
{?>
[entete bilan.php?sg2=<?php echo $sigle; ?>&etat=<?php echo ($_POST['etat']);?>&annee=2009 2009]

[entete bilan.php?sg2=<?php echo $sigle; ?>&etat=<?php echo ($_POST['etat']);?>&annee=2008 2008]

[entete bilan.php?sg2=<?php echo $sigle; ?>&etat=<?php echo ($_POST['etat']);?>&annee=2007 2007]

[entete bilan.php?sg2=<?php echo $sigle; ?>&etat=<?php echo ($_POST['etat']);?>&annee=2006 2006]

[entete bilan.php?sg2=<?php echo $sigle; ?>&etat=<?php echo ($_POST['etat']);?>&annee=2005 2005]
<?php }
}
}
}
}?>
</td> </tr>
</table>

<form action="<? echo $PHP_SELF ?>" method="post" name="menu">





<?php if (($_POST['etat'])=="Actif")
{?>
&id_sorg=<?php echo $id_sorg; ?>&type_org=<?php echo $type_org; ?>&deno=<?php echo $deno; ?>&annee=<?php echo $annee; ?>&etat=Actif" style="padding-right:15px;color:#00F;" class="nonimpression">Actif
&id_sorg=<?php echo $id_sorg; ?>&type_org=<?php echo $type_org; ?>&deno=<?php echo $deno; ?>&annee=<?php echo $annee; ?>&etat=Passif" style= "padding-right:15px;" class="nonimpression">Passif
&id_sorg=<?php echo $id_sorg; ?>&type_org=<?php echo $type_org; ?>&deno=<?php echo $deno; ?>&annee=<?php echo $annee; ?>&etat=TCR" style="padding-left:15px;" class="nonimpression" >TCR

<?php }
else
{
if (($_POST['etat'])=="Passif")
{?>
&id_sorg=<?php echo $id_sorg; ?>&type_org=<?php echo $type_org; ?>&deno=<?php echo $deno; ?>&annee=<?php echo $annee; ?>&etat=Actif" style="padding-right:15px;" class="nonimpression">Actif
&id_sorg=<?php echo $id_sorg; ?>&type_org=<?php echo $type_org; ?>&deno=<?php echo $deno; ?>&annee=<?php echo $annee; ?>&etat=Passif" style= "padding-right:15px;color:#00F;" class="nonimpression">Passif
&id_sorg=<?php echo $id_sorg; ?>&type_org=<?php echo $type_org; ?>&deno=<?php echo $deno; ?>&annee=<?php echo $annee; ?>&etat=TCR" style="padding-left:15px;" class="nonimpression" >TCR
<?php }
else
{
if (($_POST['etat'])=="TCR")
{?>
&id_sorg=<?php echo $id_sorg; ?>&type_org=<?php echo $type_org; ?>&deno=<?php echo $deno; ?>&annee=<?php echo $annee; ?>&etat=Actif" style="padding-right:15px;" class="nonimpression">Actif
&id_sorg=<?php echo $id_sorg; ?>&type_org=<?php echo $type_org; ?>&deno=<?php echo $deno; ?>&annee=<?php echo $annee; ?>&etat=Passif" style= "padding-right:15px;" class="nonimpression">Passif
&id_sorg=<?php echo $id_sorg; ?>&type_org=<?php echo $type_org; ?>&deno=<?php echo $deno; ?>&annee=<?php echo $annee; ?>&etat=TCR" style="padding-left:15px;color:#00F;" class="nonimpression" >TCR

<?php }

}}?>

</form>

</td>
</tr>

<tr >
<td height="24" align= "center">

<?php

if(isset($_POST['sg2']) || isset($_GET['sg5'])||isset($_GET['sg6']))
{

include('bilan complet2009.php');
}


//
voila je ne vois pas ou estle probleme je pense avoir respecte les consignes de votre methode
si vous avez une idee ca me serait tres utile
merci bcq
hantouva
Commenter la réponse de jotrash

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.