Formation PUB300 : PHP, 2018 Passer de l'information entre les pages Web

Encodage d'URL (URL avec paramètres)


Prenons le cas où vous avez une liste de clients affichée dans un tableau. Pour chacun des items, vous souhaitez offrir trois options : afficher les détails, modifier ou supprimer l'item.

Tableau de données avec boutons d'édition

Concentrons-nous sur l'affichage des détails d'un client. On comprend que peu importe le client sélectionné, la logique d'affichage sera la même. Seule la requête qui va chercher les données à afficher sera différente. Il faut donc trouver un moyen d'indiquer à la page qui affiche les détails sur quel client elle doit travailler.

Une des techniques pouvant être utilisées est l'encodage d'URL.

L'encodage d'URL consiste à passer des paramètres dans l’URL. En anglais, les paramètres ajoutés à l'URL s'appellent query strings. Il s'agit d'une technique pratique et rapide. Mais attention : elle ne doit pas être utilisée pour passer les informations sensibles puisque ces informations seront écrites en clair dans l’URL.

Et comme les informations sont écrites directement dans l'URL, il faut prévoir qu'un internaute pourrait tenter une attaque en entrant des caractères malicieux...

Les techniques de protection sont les mêmes que lorsque l'information provient d'un formulaire Web : requêtes préparées pour prévenir les injections SQL si l'information doit être utilisée dans une requête SQL, htmlspecialchars() pour prévenir les attaques XSS si l'information doit être affichée à l'écran, etc.

Pour passer un paramètre dans l'URL, il suffit de faire suivre le nom de la page Web par un point d'interrogation. Suivront ensuite une ou plusieurs paires variable=valeur, séparées par un esperluette (&).

Limite : la taille maximale de l’URL est de 255 caractères.

Ex : http://mondomaine.com/details-client.php?id=28

Ex : http://apical.cegepvicto.ca/ContenuFormation.php?formation_id=30&chapitre_id=1722&fiche_id=1222

▼Publicité

Encodage de l'URL

Dans la plupart des cas, les URL avec paramètres seront encodés dans un lien.

Ex :

PHP

echo "<a href='http://mondomaine.com/details-client.php?id=28'><img src='medias/commun/BoutonChoisir.png' alt='Détails' title='Détails' /></a>;

Mieux : on utilisera des variables pour préciser les paramètres.

Ex :

PHP

echo "<a href='http://mondomaine.com/details-client.php?id=$id'><img src='medias/commun/BoutonChoisir.png' alt='Détails' title='Détails' /></a>;

Décodage de l'URL

Dans la page visée par ce lien (ex : dans la page details-client.php), on pourra retrouver la valeur d'un paramètre en utilisant $_GET. Il faut toujours utililser isset() pour vérifier si le paramètre existe avant de tenter de lire sa valeur au cas où un internautre entrerait directement l'URL sans paramètre.

Ex :

PHP

if (isset($_GET['id'])) {

   $id = $_GET['id'];

   // Penser à utiliser les requêtes préparées si $id doit être ajouté dans une requête SQL

   // ou un htmlspecialchars() avant de l'afficher à l'écran.

   ...

}

else {

   ...  // Action à poser si la page n'a pas reçu l'identifiant en paramètre.

}

Dans cet exemple, si un internaute tentait d'accéder à la page en entrant directement son URL sans préciser de paramètres (ex : en tapant « http://mondomaine.com/details-client.php » dans la barre d'URL de son navigateur), le code du else serait exécuté puisqu'aucun id n'aurait été précisé. Le programme pourrait, par exemple, rediriger l'internaute vers une page sur laquelle on peut choisir le client désiré.

Dernière révision le 29 septembre 2018
Merci de partager !

▼Publicité

Site fièrement hébergé chez GreenGeeks.

Soumettre