De manière fiable, vous ne pouvez pas.
Une méthode que vous pouvez essayer est des en-têtes de referer (qui est comment épelé dans la spécification), généralement envoyé par le navigateur pour indiquer d'où l'utilisateur vient. En PHP, ceci est disponible en $_SERVER['HTTP_REFERER']
.
La plupart des navigateurs modernes (j'ai testé Google Chrome et Firefox) envoient un en-tête de referer sur les clics de lien et pas lors de la saisie directe - c'est-à-dire si les paramètres de l'utilisateur le font par défaut. Une autre option, en fonction de ce que vous voulez vraiment, est d'ajouter une sorte de variable de session générée aléatoirement à l'URL du lien et, à la réception d'une requête, de voir si le jeton dans l'URL correspond au jeton dans la session de l'utilisateur. Si oui, voilà. Sinon, ce lien a été copié-collé.
Bien sûr, toutes ces méthodes peuvent facilement être battues, et votre serveur peut être trompé. Ne comptez pas sur eux.
Tout droit. Super Info. C'est en fait pour les deux, la présentation et l'authentification. – eleete
Si vous souhaitez réellement vous authentifier, puis le sécuriser dans une certaine mesure, vous devrez ajouter une clé secrète par utilisateur à l'URL. C'est la seule façon fiable à 100%. – Matchu
+1, la seule façon d'être sûr est d'utiliser une sorte de clé en constante évolution (probablement stockée dans la session) pour valider qu'un lien a été cliqué. La clé doit être régénérée à chaque fois que la page est consultée, mais quelque chose d'aussi simple qu'un court hachage du temps + l'adresse IP de l'utilisateur devrait suffire. – Dereleased