智能守护,友链无忧 — 博客友情链接监控功能乞丐版
博客友情链接监控功能可确保链接有效性,提高博客知名度和流量。通过编写PHP文件检查链接状态,创建cron任务定时更新,前端读取数据展示,实现友链监控。
本文最后由 荒野孤灯 更新于 2024 年 9 月 4 日 13 时 20 分,已有 65 天未更新。今日被查阅 25 次,若内容或图片资源失效,请留言反馈,谢谢!
摘要由 AI 智能生成
博客如同一座座知识的灯塔,博友们通过友情链接相互照亮。然而,随着时间的流逝,有些博友可能会出现下链接、博客关停的现象,影响灯塔的光芒。因此,友情链接监控功能就显得有点重要。
友情链接是博客之间互惠互利的重要手段,它有助于提高博客的知名度、流量和搜索引擎排名。然而,要是被单方面下链接,效果就适得其反了,于是就想着弄个友情链接监控功能,也能省去逐一去检查友情链接的麻烦。
友链监控思路
效果如下:
功能实现方法
步骤一
编写 friend_links.php
功能文件代码,详细代码如下,开头网站信息及友链信息需根据自身情况修改:
<?php
// 设置本站链接
$this_site_url = 'https://www.80srz.com'; // 请替换为您的网站URL
// 定义友情链接数组
$friend_links = [
'风清' => 'https://wind.ink/email',
'钧言极客' => 'https://www.jinjun.top/link.html',
'DAIDAIFU BLOG - 代代付' => 'https://www.ddf.im/index.php/145.html',
'南川吟梦' => 'https://blog.southz.top/links.html',
'旺东自留地' => 'https://wang618.cn/you-qing-lian-jie.html',
// 根据自己友链情况修改,注意是有你链接的友情链接页面的网址!
];
// 缓存文件路径
// $cache_file_path = 'friend-links.json';
$uploads_dir = $_SERVER['DOCUMENT_ROOT'].'/';
$cache_file_path = $uploads_dir. 'friend-links.json';
// 检查链接状态
function check_link_status($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
return $http_code;
}
// 检查是否有反链
function check_backlink($url,$backlink) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$content = curl_exec($ch);
curl_close($ch);
return strpos($content,$backlink) !== false;
}
// 显示监控结果
function display_monitor_results($friend_links,$this_site_url, $cache_file_path) {
// 更新缓存数据
$updated_cache_data = [];
foreach ($friend_links as$name => $url) {
$http_code = check_link_status($url);
$backlink = check_backlink($url, $this_site_url);
$status_class = ($http_code == 200) ? 'status-ok' : 'status-error';
$backlink_class =$backlink ? 'backlink-ok' : 'backlink-error';
$updated_cache_data[$name] = [
'url' => $url,
'status' => $http_code == 200 ? '网站还活着' : '网站倒闭了',
'backlink' => $backlink ? '我们还是朋友' : '友谊小船已翻'
];
}
// 写入缓存数据
$cache_data = [
'timestamp' => time(), // 设置当前时间戳
'links' => $updated_cache_data
];
file_put_contents($cache_file_path, json_encode($cache_data));
return $updated_cache_data;
}
// 获取监控结果
$monitor_results = display_monitor_results($friend_links, $this_site_url,$cache_file_path);
// 输出JSON数据
echo '数据缓存成功';
代码说明: 1、设置博客及友链信息;2、生成json缓存文件保存友链状态信息,避免频繁监测增加服务器负载;3、缓存文件默认保存在网址根目录。
步骤二
创建 cron
定时任务,定期访问 friend_links.php
文件。你可以把它放到网站的任意文件夹中,但要记住路径。这个步骤不再赘述。
步骤三
有了友链监控数据 friend_links.json
,我们还需将其在前端显示,方便直观查看。可以在友链页面主题模板合适位置添加以下代码,样式需根据主题样式进行微调。
// 以下是本站用的一个简单样式,可实现根据友链状态显示不同颜色
<style>
table {
width: 100%;
border-collapse: collapse;
}
th, td {
border: 1px solid #333; /* 灰色边框 */
padding: 10px;
text-align: left;
}
th {
background-color: #333;
color: #fff;
}
td.status-ok {
color: #0f0; /* 正常状态为绿色 */
}
td.status-error {
color: #f00; /* 错误状态为红色 */
}
td.backlink-ok {
color: #0f0; /* 有反链为绿色 */
}
td.backlink-error {
color: #f00; /* 无反链为红色 */
}
</style>
<?php
// 设置JSON文件路径
$jsonFilePath = 'friend-links.json';
// 检查JSON文件是否存在
if (file_exists($jsonFilePath)) {
// 读取JSON文件内容
$jsonContent = file_get_contents($jsonFilePath);
// 解析JSON内容
$data = json_decode($jsonContent, true);
// 检查解析是否成功
if (json_last_error() === JSON_ERROR_NONE) {
// 获取JSON文件中的时间戳
$timestamp =$data['timestamp'];
// 显示检查更新时间
echo '<h2>友情链接监控</h2>';
// 显示表格
echo '<table>';
echo '<caption style="text-align:right;font-size:12px;font-color:#999;">自动监控报告时间:' . date('Y - n - j : H:i:s', $timestamp) . '</caption>';
echo '<tr><th style="width:8%">序号</th><th style="width:36%;">网站名称</th><th style="width:28%;">网站状态</th><th style="width:28%;">友链状态</th></tr>';
$rank = 1 ;
// 遍历JSON文件中的链接
foreach ($data['links'] as$name => $link) {
// 获取链接状态
$status =$link['status'];
// 设置状态颜色
$statusClass =$status === '网站还活着' ? 'status-ok' : 'status-error';
// 获取反链状态
$backlink =$link['backlink'];
// 设置反链颜色
$backlinkClass =$backlink === '我们还是朋友' ? 'backlink-ok' : 'backlink-error';
// 显示链接信息
echo '<tr>';
echo '<td style="text-align: center;">'.$rank.'</td>';
echo '<td><a href="' . $link['url'] . '" rel="external nofollow noopener noreferrer" target="_blank">' . $name . '</a></td>'; // 显示网站名称
echo '<td class="' . $statusClass . '" style="text-align: center;">' .$status . '</td>';
echo '<td class="' . $backlinkClass . '" style="text-align: center;">' .$backlink . '</td>';
echo '</tr>';
$rank ++;
}
echo '</table>';
} else {
// 如果解析失败,显示错误信息
echo '<p>JSON解析错误: ' . json_last_error_msg() . '</p>';
}
} else {
// 如果JSON文件不存在,显示错误信息
echo '<p>JSON文件不存在或不可读。</p>';
}
?>
好了,友情链接监控功能到此就已经实现了,记得第一从要访问一次 friend_links.php
生成友链状态数据。想要折腾的博友可以动手去试试吧。具体样式效果可查看本站友情链接页面 :友情链接
第三方网站监控API推荐
网上有很多这样的服务,诸如:Uptimerobot
和 Uptimeflare
等,基础功能也都是免费的。但今天我要推荐的是 StatusLive
+ Uptimerobot
组合,因为它部署简单,很适合我这种小白。
StatusLive
项目地址:https://github.com/freejishu/StatusLive
Uptimerobot
官网地址:https://uptimerobot.com
它最经典的打开方式 ( dist + conf.json + core.php
) ,按照说明申请 API ,修改设置文件内容后,将文件夹上传至主机空间的任意文件夹下即可,不需要使用 docker
技术,适合我这种只有虚拟主机的玩家,哈哈,大佬勿喷!!!
效果演示:
分类标签:折腾,主题模板,工具代码,typecho优化,分享
文章链接:https://80srz.com/posts/1960.html
许可协议: 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)
不错不错,就是没听懂😂
这个不错, 有js版本就牛皮了
非常不错的教程,我们还是朋友!😊
你好,朋友 ,倒闭了通知一声哈 😄
这个功能可以啊,真不错,可惜我数据丢失之后我就转Halo去了。
嘎嘎……
不错不错,省去了定期去检查的习惯。
haha,懒人专用。
今天看了你这文章,我回头看了下 UptimeRobot,居然发现现在 Host status 页面要付费才能用了,怪不得这个监控页面打不开了……
不错不错,好东西。
要不咱们也加个友链,然后我监控你,😄😄😄
蒙君垂青,乐意之至。已添加
官网自带的监控页面吗?
确实,免费的终究不能持久。
是的,以前官方提供,并支持自定义地址,可绑定自己的域名。比如我博客右上角那个监控,几年没看直接打不开了……进后台一看这个功能现在收费了。
已添加,又结交一位大佬,哈哈
哈,你这友链状态,应该和现有的友链列表,结合起来。
哈,这就有点为难我了,没这技术😂
可以试着优化。哈哈哈。友链,你应该用的是插件,插件的output_str方法中,有foreach遍历输出,你在输出中,去解析json文件,逐个去匹配链接是否一致,一致则获取状态,然后看想要怎么展示。另外,你的这个friend_links.php也是手动写的链接,可以改为从数据库的links表获取。这样也不用每次两边同时修改了。
友链没有用插件,主题设置里面带的,目前对我来说够用,毕竟这也不是要经常操作