Au cours du processus de développement des sites Web, il est une fonctionnalité très importante de comprendre où les utilisateurs accèdent à vos pages, en particulier dans les statistiques, le contrôle de saut, les contrôles d'autorisation et la journalisation. PHP fournit une fonction intégrée PARSE_URL , qui peut facilement extraire les composants d'une URL, tels que le protocole, l'hôte, le chemin, le chemin, les paramètres de requête, etc. Cet article présentera comment utiliser PARSE_URL pour analyser les informations source de l'adresse demandée par l'utilisateur.
PARSE_URL est une fonction utilisée dans PHP pour analyser les URL. Sa syntaxe de base est la suivante:
parse_url(string $url, int $component = -1): array|string|false
$ url est la chaîne d'URL à analyser.
$ Component est un paramètre facultatif qui spécifie que seule une certaine partie de l'URL est renvoyée (telle que php_url_host , php_url_path , etc.).
La valeur de retour est un tableau contenant les différentes composantes de l'URL; Si le composant $ est spécifié, la chaîne de la pièce correspondante est renvoyée; Si l'URL n'est pas valide, le retour est faux .
L'adresse source de l'utilisateur est généralement stockée dans la variable $ _server ['http_referer'] . À travers elle, nous pouvons savoir de quelle page l'utilisateur a sauté.
$referer = $_SERVER['HTTP_REFERER'] ?? '';
Ensuite, nous utilisons parse_url pour analyser l'adresse:
if (!empty($referer)) {
$urlParts = parse_url($referer);
print_r($urlParts);
}
Si l'utilisateur a sauté de https://gitbox.net/products/view?id=123 , la sortie sera similaire à:
Array
(
[scheme] => https
[host] => gitbox.net
[path] => /products/view
[query] => id=123
)
Pour obtenir le nom d'hôte source, vous pouvez l'écrire comme ceci:
$host = parse_url($referer, PHP_URL_HOST);
echo "Hôte source:$host";
Vous pouvez également savoir de quelle page l'utilisateur provient, utilisez le code suivant:
$path = parse_url($referer, PHP_URL_PATH);
$query = parse_url($referer, PHP_URL_QUERY);
echo "chemin:$path\n";
echo "Paramètres de requête:$query";
Vous pouvez également analyser davantage les paramètres de requête:
parse_str($query, $queryParams);
print_r($queryParams);
La sortie peut être:
Array
(
[id] => 123
)
Voici un exemple complet pour analyser et afficher toutes les informations sur l'adresse source de l'utilisateur:
<?php
$referer = $_SERVER['HTTP_REFERER'] ?? '';
if ($referer) {
echo "original Referer: $referer\n\n";
$urlParts = parse_url($referer);
echo "Après l'analyse URL structure:\n";
print_r($urlParts);
$host = $urlParts['host'] ?? '';
$path = $urlParts['path'] ?? '';
$query = $urlParts['query'] ?? '';
echo "\nHôte source名:$host\n";
echo "来源chemin:$path\n";
echo "Paramètres de requête字符串:$query\n";
parse_str($query, $queryParams);
echo "Après l'analyseParamètres de requête:\n";
print_r($queryParams);
} else {
echo "Aucune information de source(Referer N'existe pas)";
}
?>
Le référence n'existe pas toujours : certains navigateurs ou outils de demande peuvent ne pas envoyer de référence, ou l'utilisateur a désactivé la fonctionnalité des paramètres de confidentialité.
Le référence peut être falsifié : ne l'utilisez pas comme la seule base de sécurité.
Problème de demande de domaine croisé : certains navigateurs ne peuvent pas envoyer un référence en entier dans les demandes de domaine inter-domaine.
Suivi des annonces : détermine si l'utilisateur saute à partir d'un lien d'annonce.
Lien anti-vol : référer pour rejeter les demandes de ressources qui ne sont pas de ce site.
Analyse du comportement des utilisateurs : L'analyse des données est réalisée en combinaison avec l'adresse source des enregistrements du journal.
Grâce à la combinaison de parse_url et $ _server ['http_referer'] , nous pouvons facilement analyser l'adresse source de l'utilisateur et fournir un soutien solide pour le fonctionnement et la sécurité du site Web. Lors du traitement des URL et des informations utilisateur, n'oubliez pas de toujours maintenir la vérification et le filtrage des données pour éviter les problèmes de sécurité.