Apprendre à programmer

Code pour PHP récupérer l’URL de la page courante

 Dans ce tutoriel, nous vous montrons comment un programme PHP pour récupérer l’URL d’une page web.

Pourquoi utiliser un programme pour récupérer l’URL d’une page web ?

Dans la pratique du développement web, les webmasters sont souvent à la recherche de l’URL de la page courante telle qu’elle s’affiche dans la barre d’adresse du navigateur. Cependant, il n’existe pas de fonction unique en PHP permettant de récupérer cette URL en un seul appel.

Certains développeurs choisissent de placer l’URL de la page en cours dans les métadonnées de partage des réseaux sociaux, comme Facebook ou Twitter, afin de permettre aux utilisateurs de partager la page. Néanmoins, la méthode la plus efficace pour récupérer l’URL de la page web en cours reste l’utilisation d’un code PHP dédié à cette tâche.

Plusieurs raisons expliquent pourquoi il n’y a pas de fonction PHP standard pour récupérer l’URL actuelle :

  1. La configuration du serveur joue un rôle essentiel. Elle peut fournir ou non ces informations en fonction de ses paramètres.
  2. Les fonctions permettant d’accéder aux serveurs, qu’il s’agisse d’NGINX ou d’Apache, sont différentes, ce qui rend difficile la création d’une fonction unique pour les deux serveurs.
  3. Du côté du serveur, la valeur de certaines variables peut varier en fonction du navigateur utilisé par le client et de son emplacement géographique.

Voici un tableau résumant ces raisons :

Raisons pour l’absence d’une fonction PHP standard pour l’URL actuelle
1. Configuration du serveur : Peut ou non fournir ces informations.
2. Différences entre les serveurs : NGINX et Apache utilisent des méthodes différentes.
3. Variables dépendantes du client : La valeur de certaines variables peut varier selon le navigateur et l’emplacement du client.

Les fonctions PHP pour récupérer des morceaux de l’URL 

Lorsque nous avons besoin de construire des URL dynamiques en PHP, nous utilisons généralement des fonctions qui fournissent les différents éléments, que nous assemblons par la suite en utilisant la concaténation de chaînes.

Il est important de comprendre qu’une URL suit généralement la structure de base suivante :

  • protocole représente généralement le type de protocole utilisé, tel que FTP, HTTP ou HTTPS.
  • [hôte] correspond à l’adresse du site, telle que votresite.com, ou à un lien de test tel que ftp.test.abc.
  • [chemin] définit le chemin d’accès aux pages, y compris les répertoires et/ou les fichiers.
  • [paramètres] font référence aux paramètres passés via $_GET[‘…’] en PHP.

Un exemple d’URL courante, particulièrement utile lors du développement en local (localhost), est le suivant :

$actual_link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";

Dans cet exemple, la variable $actual_link stocke à la fois l’hôte du site et l’URI de la requête en utilisant le protocole HTTP. Cependant, il est important de noter que cette méthode ne gère pas automatiquement les protocoles mixtes, tels que HTTPS mélangé avec HTTP ou FTP. Pour une manipulation plus avancée de ces cas particuliers, des opérations supplémentaires sont nécessaires.

Récupérer l'url

 La variable SERVER_NAME en PHP 

Pour obtenir le nom du serveur dans un script PHP, il est possible d’exploiter la variable SERVER_NAME, qui constitue une solution souple. Cependant, il faut noter que cette méthode lie le nom du serveur à la configuration spécifique de la machine. Ce qui fonctionne parfaitement aujourd’hui sur votre environnement de développement local (localhost) peut cesser de fonctionner une fois que vous le mettez en production. De même, en utilisant la variable HTTP_HOST, vous obtenez l’hôte du serveur, y compris le port d’accès (généralement 80, mais qui peut changer sur des configurations particulières, notamment en DMZ ou sur des réseaux privés).

Le tableau superglobal $_SERVER est une source riche d’informations liées à la requête HTTP. Pour voir l’ensemble des informations qu’il collecte, vous pouvez vous rendre sur la documentation officielle correspondante ou exécuter le code suivant dans un script PHP :

var_dump($_SERVER);

Cela affichera une liste complète des variables contenues dans $_SERVER, vous permettant de voir toutes les informations disponibles.

Par exemple, vous pouvez accéder aux informations suivantes :

  • $_SERVER[‘HTTP_HOST’] — renverra quelque chose comme ‘localhost:8080’.
  • $_SERVER[‘SERVER_NAME’] — renverra ‘localhost’.

D’autres variables utiles pour composer votre URL incluent :

  • $_SERVER[‘REQUEST_URI’] : Cette variable donne simplement le nom du fichier, par exemple, ‘/index.html’.
  • $_SERVER[‘QUERY_STRING’] : Cette variable renverra tout ce qui se trouve après le point d’interrogation (?) dans l’URL.

Comment récupérer l’URL de la page consultée ? 

Comment connaître l’URL de la page en cours avec PHP ?

Nous combinons les variables SERVER_NAME et REQUEST_URI pour obtenir l’URL complète de la page actuelle.

SERVER_NAME représente le nom du serveur sur lequel le script est exécuté.

REQUEST_URI, quant à elle, représente l’URI de la page, par exemple, /index.php.

Voici un exemple simple qui suppose que le protocole est HTTP :

$serverName = $_SERVER['SERVER_NAME']; // Récupère le nom du serveur.
$requestUri = $_SERVER['REQUEST_URI']; // Récupère l'URI de la page.

// Concatène le protocole HTTP, le nom du serveur et l'URI pour obtenir l'URL complet.
$url = "http://$serverName$requestUri";

echo "L'URL de la page en cours est : $url";

Dans cet exemple, nous utilisons SERVER_NAME et REQUEST_URI pour assembler l’URL complet de la page en cours en supposant que le protocole est HTTP.

Exemple simple qui suppose que le protocole est HTTP :

// Récupération du nom du serveur depuis la variable SERVER_NAME.
$serverName = $_SERVER['SERVER_NAME'];

// Récupération de l'URI de la page depuis la variable REQUEST_URI.
$requestUri = $_SERVER['REQUEST_URI'];

// Définition du protocole, supposant qu'il s'agit d'HTTP.
$protocol = 'http';

// Vérification si le serveur utilise HTTPS.
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') {
    $protocol = 'https';
}

// Concaténation du protocole, du nom du serveur et de l'URI pour former l'URL complet.
$url = "$protocol://$serverName$requestUri";

// Affichage de l'URL de la page en cours.
echo "L'URL de la page en cours est : $url";

Dans ce code :

  1. Nous récupérons le nom du serveur à partir de $_SERVER['SERVER_NAME'].
  2. Nous récupérons l’URI de la page à partir de $_SERVER['REQUEST_URI'].
  3. Nous définissons un protocole par défaut en supposant que c’est HTTP.
  4. Nous vérifions si le serveur utilise HTTPS en vérifiant la variable $_SERVER['HTTPS']. Si c’est le cas, nous mettons à jour le protocole à HTTPS.
  5. Ensuite, nous combinons le protocole, le nom du serveur et l’URI pour obtenir l’URL complet.
  6. Enfin, nous affichons l’URL de la page en cours.

Ainsi, ce code est capable de détecter le protocole (HTTP ou HTTPS) et de générer l’URL complète de la page en cours, quel que soit le serveur sur lequel il est exécuté.

Autres articles

QCM en programmation - Exemple PDF
La programmation est devenue une compétence incontournable dans le monde...
Read more
Introduction à la Programmation Orientée Objet (POO)
Cet article vise à : Comprendre les concepts fondamentaux de la...
Read more
Librairies et Fonctions en PHP : Guide...
Le langage PHP (Hypertext Preprocessor) est largement utilisé pour le...
Read more

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *