Maison > développement back-end > tutoriel php > Développement PHP : Comment implémenter les fonctions anti-hotlinking et watermarking

Développement PHP : Comment implémenter les fonctions anti-hotlinking et watermarking

WBOY
Libérer: 2023-09-20 16:50:02
original
994 Les gens l'ont consulté

Développement PHP : Comment implémenter les fonctions anti-hotlinking et watermarking

Développement PHP : Comment implémenter des fonctions anti-hotlinking et watermarking, des exemples de code spécifiques sont nécessaires

Introduction :
À l'ère d'Internet, les fonctions anti-hotlinking et watermarking d'images sont très importantes. Ces fonctions peuvent empêcher d'autres sites Web de le faire. voler vos ressources d'image, tout en protégeant également vos droits d'auteur sur l'image. Cet article expliquera comment utiliser le langage PHP pour implémenter des fonctions anti-sangsues et de filigrane, et fournira des exemples de code spécifiques.

1. Mise en place de la fonction anti-hotlinking :
La fonction anti-hotlinking fait référence à la citation directe de vos ressources d'images sur d'autres sites Web. Afin d'éviter que cela ne se produise, nous pouvons porter des jugements côté serveur et autoriser uniquement des sources de requêtes spécifiques à accéder aux images.

Ce qui suit est un exemple de code utilisant PHP pour implémenter la fonction anti-hotlinking :

<?php
$referer = $_SERVER['HTTP_REFERER']; // 获取请求来源
$allowed_domains = array('www.example.com', 'subdomain.example.com'); // 定义允许的请求来源域名列表

$allowed = false;
foreach ($allowed_domains as $domain) {
    if (strpos($referer, $domain) !== false) {
        $allowed = true;
        break;
    }
}

if (!$allowed) {
    // 如果请求来源不在允许的域名列表中,则返回403 Forbidden状态码
    header('HTTP/1.1 403 Forbidden');
    exit;
}

// 允许请求来源访问图片
// 这里是输出图片的代码
?>
Copier après la connexion

Dans le code ci-dessus, nous obtenons d'abord la page source de la requête via $_SERVER['HTTP_REFERER']. Ensuite, nous définissons la liste des noms de domaines autorisés $allowed_domains, qui peut être modifiée en fonction de la situation réelle. Ensuite, nous utilisons une boucle pour vérifier si la source de la requête figure dans la liste des domaines autorisés et, si c'est le cas, définissons la variable $allowed sur true. Enfin, si $allowed est faux, un code d'état 403 Forbidden est renvoyé, indiquant que l'accès est refusé.

2. Implémentation de la fonction filigrane :
La fonction filigrane fait référence à l'ajout de certaines informations d'identification à l'image pour protéger le droit d'auteur et la source de l'image. Nous pouvons utiliser la bibliothèque GD de PHP pour implémenter la fonction de filigrane d'image.

Ce qui suit est un exemple de code d'utilisation de PHP pour implémenter la fonction de filigrane d'image :

<?php
$source_image = 'path/to/source/image.jpg'; // 原始图片路径
$watermark_image = 'path/to/watermark/image.png'; // 水印图片路径
$save_path = 'path/to/save/image.jpg'; // 保存图片路径

$source = imagecreatefromjpeg($source_image);
$watermark = imagecreatefrompng($watermark_image);

$source_width = imagesx($source);
$source_height = imagesy($source);

$watermark_width = imagesx($watermark);
$watermark_height = imagesy($watermark);

$offset_x = ($source_width - $watermark_width) / 2; // 水印位置居中
$offset_y = ($source_height - $watermark_height) / 2;

imagecopy($source, $watermark, $offset_x, $offset_y, 0, 0, $watermark_width, $watermark_height); // 合并图片

imagejpeg($source, $save_path); // 保存图片

imagedestroy($source);
imagedestroy($watermark);
?>
Copier après la connexion

Dans le code ci-dessus, nous utilisons d'abord les fonctions imagecreatefromjpeg() et imagecreatefrompng() pour créer les ressources de l'image originale et de l'image de filigrane. respectivement. Ensuite, nous obtenons les informations de largeur et de hauteur de l'image originale et de l'image du filigrane via les fonctions imagesx() et imagesy() afin d'ajuster la position du filigrane.

Ensuite, nous calculons la position du filigrane, ici nous plaçons le filigrane au centre de l'image originale. Ensuite, utilisez la fonction imagecopy() pour fusionner l’image du filigrane sur l’image d’origine.

Enfin, nous utilisons la fonction imagejpeg() pour enregistrer l'image fusionnée dans le chemin spécifié. Afin d'économiser les ressources du serveur, assurez-vous d'appeler la fonction imagedestroy() pour détruire les ressources de l'image d'origine et de l'image en filigrane après avoir enregistré l'image.

Conclusion :
Cet article présente comment utiliser le langage PHP pour implémenter des fonctions anti-sangsues et de filigrane, et fournit des exemples de code spécifiques. En implémentant ces fonctions, vous pouvez protéger vos ressources d'images contre le vol et protéger vos droits d'auteur sur les images. J'espère que cet article vous sera utile.

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal