Maison >développement back-end >tutoriel php >Explication détaillée de la façon d'empêcher les hotlinking en PHP

Explication détaillée de la façon d'empêcher les hotlinking en PHP

小云云
小云云original
2018-02-01 13:01:472981parcourir

Cet article présente principalement la méthode d'anti-hotlinking en PHP, et analyse les technologies associées et les techniques de mise en œuvre spécifiques impliquées dans l'anti-hotlinking en PHP sous forme d'exemples. J'espère que les amis dans le besoin pourront s'y référer. aider tout le monde.

$_SERVER['HTTP_REFERER'] statut d'acquisition

Notez que $_SERVER['HTTP_REFERER'] ne peut pas toujours être obtenu Il ne peut être obtenu que dans les circonstances suivantes :

1. Les situations dans lesquelles HTTP_REFERER peut être obtenu sont les suivantes :

1. Utilisez directement cfba799dd43fce78ec3e9e3d200b7e48

2. Formulaire soumis avec Soumettre ou 764a0a970dbc75966e734f5ea597d024 (POST ou GET)
3. Formulaires soumis en utilisant Jscript (POST ou GET)

2. Les situations suivantes ne peuvent pas être obtenues :

1. Lien des favoris

2. Cliquez sur "Accueil" ou sur l'adresse personnalisée
3. Utilisez location.href ou location.replace()
4 de Jscript. Saisissez l'adresse directement dans le navigateur
5. c37f721670919360921ccb8afc9eb479
6. 707ab8d2056c6e1f516d2bf3c9988ff9 ou d2eacb9d552db150e90498bcd18784f7 rediriger vers
7. Charger l'adresse à l'aide de XML

Explication de la fonction : strrpos

strrpos — Calcule la position de la dernière occurrence de la chaîne spécifiée dans la chaîne cible

Explication

int strrpos ( string $haystack , string $needle [, int $offset = 0 ] )<p></p>Renvoie la position numérique de la dernière occurrence de l'aiguille dans la chaîne $ meule de foin. int strrpos ( string $haystack , string $needle [, int $offset = 0 ] )<br>
$haystack 在此字符串中进行查找。
$needle 如果 needle不是一个字符串,它将被转换为整型并被视为字符的顺序值。

Valeur de retour

Renvoie la position où l'aiguille existe. S'il n'est pas trouvé, renvoie FALSE.

Code de détection de lien chaud : asd.php


<?php
//防盗链技术
//先判断是否获取到 $_SERVER[&#39;HTTP_REFERER&#39;] 变量
if(isset($_SERVER[&#39;HTTP_REFERER&#39;])){
  //判断$_SERVER[&#39;HTTP_REFERER&#39;]是不是以http://localhost/开始的
  if(strpos($_SERVER[&#39;HTTP_REFERER&#39;],"http://localhost")==0){
    echo &#39;<img src="a.png"/>&#39;;
  }
  else{
    header("Location:warning.php");//跳转页面到warning.php
    //echo $_SERVER["HTTP_REFERER"];
  }
}
else {
  header("Location:warning.php");
}
?>
warning.php


<html>
<b>倒链</b>
</html>
Code de vérification anti-hotlink


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="http://localhost/wml/asd.php" rel="external nofollow" >验证防盗链</a>
</body>
</html>
Ce qui précède est le principe de compréhension

Généralement, le code de protection anti-hotlink est configuré en configurant le serveur, tel que l'accès à la configuration nginx

(gif|jpg|jpeg|png|bmp|swf) Liste blanche d'autres fichiers

La configuration spécifique peut être recherchée sur Baidu

Recommandations associées :

Crackage anti-hotlink PHP

Explication détaillée de la méthode anti-hotlink PHP

Code anti-hotlink php


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn