前言
当我们的网站长时间使用一个主题或者壁纸的时候有没有感觉会很枯燥,那我们就动手做一个动态壁纸的API吧,使每次进入我们博客的时候都有满满的新鲜感,很简单哦ヾ(≧▽≦*)o
如果大家喜欢我的动态壁纸api合集的话,可以在评论区留言你的网站域名或者ip,我会为你开通权限,你直接使用https://www.sangmuen.com/imgapi/index.php 即可和我拥有一样背景的博客了!
WEB端和手机端共用一套图库
需要先在我们wordpress根目录(下面教程根目录之前的路径就省略了,每个人都不一样)下新建一个文件夹imgapi
#新建存放脚本的文件夹
mkdir /wordpress/imgapi
#新建脚本文件
cd /wordpress/imgapi
touch index.php
#在新建一个存放随机图片url的txt文件,必须和上面的index.php脚本在同级目录
touch img.txt
#编辑脚本
vim index.php
将下面的代码copy到index.php文件中
<?php
//存放api随机图链接的文件名img.txt
$filename = "img.txt";
if(!file_exists($filename)){
die('文件不存在');
}
//从文本获取链接
$pics = [];
$fs = fopen($filename, "r");
while(!feof($fs)){
$line=trim(fgets($fs));
if($line!=''){
array_push($pics, $line);
}
}
//从数组随机获取链接
$pic = $pics[array_rand($pics)];
//输出随机图片url
die(header("Location: $pic"));
?>
#在编辑图片存放txt文件
vim img.txt
然后将自己的心仪的图片url都复制到该txt文档中
然后修改这个文件夹的所有者
cd /wordpress/imgapi/
chown nginx:nginx imgapi/
然后将该index.php的路径作为你的网站壁纸的url去使用即可
校验WEB端和手机端,使用不同图库
如果有些小伙伴的图片使用了cdn加速,同时打开了浏览器空来源不可请求的限制,那么手机端访问网站的时候会出现壁纸请求被拒绝的问题,因为我们这个api属于是跨域请求,手机端因为安全问题大多数在跨域请求的时候是不会保存Referer,所以我们在用手机端的时候,会被以为是空来源请求!
要想检验是web端还是手机端就需要一个脚本 - Mobile_Detect.php,这个脚本在共享云盘里面有,下载下来然后放到/wordpress/imgapi目录下
新增存放手机壁纸的txt文件
mkdir /wordpress/imgapi/img_mobile.txt
然后修改index.php,新增引用Mobile_Detect.php,整体如下
<?php
/*
* 函数:访客设备
* 博客园:https://www.cnblogs.com/freephp/p/13979503.html
* Github: https://github.com/serbanghita/Mobile-Detect
*/
function is_mobile(){
require('./Mobile_Detect.php');
$MobileDetect = new Mobile_Detect();
if ($MobileDetect->isTablet()) {
// 平板定义为PC类
return false;
} elseif ($MobileDetect->isMobile()) {
return true;
} else {
return false;
}
}
// 电脑与手机用不同的壁纸
if(is_mobile()){
// 手机壁纸
$filename = "img_mobile.txt";
}else{
// 电脑壁纸
$filename = "img.txt";
}
//存放api随机图链接的文件名img.txt
if(!file_exists($filename)){
die('文件不存在');
}
//从文本获取链接
$pics = [];
$fs = fopen($filename, "r");
while(!feof($fs)){
$line=trim(fgets($fs));
if($line!=''){
array_push($pics, $line);
}
}
// 从数组随机获取链接
// $pic = $pics[array_rand($pics)];
$pic = $pics[random_int(0, count($pics) - 1)]; # 真随机
die(header("Location: $pic"));
?>
修改完成之后 :wq 保存 , 然后请求这个index.php文件就会区分是手机端还是WEB端,根据不同端返回不同图库里的图片!
注意:这个imgapi文件的归属人应该nginx,如果使用的是apache那归属者应该是www-data,要不请求会报404
动态壁纸有吗?