基于PHP做个图片防盗链

  • Post category:PHP

基于PHP做个图片防盗链的完整使用攻略

图片防盗链是指在网站上使用图片时,防止其他网站直接链接到该图片,从而消耗网站的带宽和流量。本文将详细讲解如何使用PHP实现图片防盗链功能。

步骤1:创建防盗链脚本

我们可以使用PHP来创建一个防盗链脚本,该脚本将检查HTTP_REFERER头部信息,以确定请求是否来自允许的域名。如果请求来自允许的域名,则返回图片;否则,返回错误信息。

以下是防盗链脚本的示例代码:

<?php
$allowed_domains = array('example.com', 'www.example.com'); // 允许的域名列表
$referer = isset($_SERVER['HTTP_REFERER']) ? parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST) : ''; // 获取HTTP_REFERER头部信息
if (in_array($referer, $allowed_domains)) {
    header('Content-Type: image/jpeg'); // 设置图片类型
    readfile('image.jpg'); // 返回图片
} else {
    header('HTTP/1.1 403 Forbidden'); // 返回错误信息
    echo '403 Forbidden';
}

在这个示例中,我们首先定义了一个允许的域名列表,然后获取HTTP_REFERER头部信息,并检查其是否来自允许的域名。如果请求来自允许的域名,则设置图片类型并返回图片;否则,返回错误信息。

步骤2:使用防盗链脚本

在网站上使用防盗链脚本时,我们需要将图片的链接指向防盗链脚本,而不是直接指向图片。这样,当其他网站直接链接到该图片时,防盗链脚本将会检查HTTP_REFERER头部信息,并返回错误信息。

以下是使用防盗链脚本的示例代码:

<img src="http://example.com/anti-leech.php" alt="image">

在这个示例中,我们将图片的链接指向防盗链脚本anti-leech.php,而不是直接指向图片。这样,当其他网站直接链接到该图片时,防盗链脚本将会检查HTTP_REFERER头部信息,并返回错误信息。

示例1:使用防盗链脚本防止其他网站直接链接到自己网站的图片

以下是使用防盗链脚本防止其他网站直接链接到自己网站的图片的示例代码:

<?php
$allowed_domains = array('example.com', 'www.example.com'); // 允许的域名列表
$referer = isset($_SERVER['HTTP_REFERER']) ? parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST) : ''; // 获取HTTP_REFERER头部信息
if (in_array($referer, $allowed_domains)) {
    header('Content-Type: image/jpeg'); // 设置图片类型
    readfile('image.jpg'); // 返回图片
} else {
    header('HTTP/1.1 403 Forbidden'); // 返回错误信息
    echo '403 Forbidden';
}

在这个示例中,我们创建了一个防盗链脚本anti-leech.php,并将图片的链接指向该脚本。当其他网站直接链接到该图片时,防盗链脚本将会检查HTTP_REFERER头部信息,并返回错误信息。

示例2:使用防盗链脚本防止其他网站直接链接到自己网站的视频

以下是使用防盗链脚本防止其他网站直接链接到自己网站的视频的示例代码:

<?php
$allowed_domains = array('example.com', 'www.example.com'); // 允许的域名列表
$referer = isset($_SERVER['HTTP_REFERER']) ? parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST) : ''; // 获取HTTP_REFERER头部信息
if (in_array($referer, $allowed_domains)) {
    header('Content-Type: video/mp4'); // 设置视频类型
    readfile('video.mp4'); // 返回视频
} else {
    header('HTTP/1.1 403 Forbidden'); // 返回错误信息
    echo '403 Forbidden';
}

在这个示例中,我们创建了一个防盗链脚本anti-leech.php,并将视频的链接指向该脚本。当其他网站直接链接到该视频时,防盗链脚本将会检查HTTP_REFERER头部信息,并返回错误信息。

总结

图片防盗链是指在网站上使用图片时,防止其他网站直接链接到该图片,从而消耗网站的带宽和流量。本文详细讲解了如何使用PHP实现图片防盗链功能。我们首先创建了一个防盗链脚本,该脚本将检查HTTP_REFERER头部信息,以确定请求是否来自允许的域名。然后,我们将图片的链接指向防盗链脚本,而不是直接指向图片。最后,我们提供了两个示例,分别演示了如何使用防盗链脚本防止其他网站直接链接到自己网站的图片和视频。