欢迎光临 - 我的站长站,本站所有资源仅供学习与参考,禁止用于商业用途或从事违法行为!

php源码

Random-Image随机图片API源码
2023-08-13 我的站长站

Random-Image随机图片API源码

  • 源码编号:2598
  • 源码分类:php源码
  • 点击次数:49
  • 数 据 库 :
  • 源码授权:试用
  • 开源情况:非商用
  • 下载权限:普通 / VIP
  • 源码售价:免费下载
  • 下载次数:7
立即下载

源码介绍

Random-Image是一款开源的随机图片API源码,可以快速搭建一个随机图片程序,完全隐藏图片文件的真实地址,支持调用域名白名单,支持多文件夹分类目录,前端调用支持使用随机数载入。

源码安装方法

下载代码,解压至你域名文件夹根目录

开启 Apache 或者 Nginx 的伪静态功能

访问:你的域名/images

其他配置方法:

打开 images.php 文件,添加域名白名单与默认文件夹即可。

<?php
error_reporting(E_ERROR);
require_once 'imgdata.php';
$karnc = new imgdata();
/**
 * 遍历获取目录下的指定类型的文件
 * @param $path
 * @param array $files
 * @return array
 */
function getfiles($path, $allowFiles, &$files = array()) {
    if (!is_dir($path)) return null;
    if (substr($path, strlen($path) - 1) != '/') $path .= '/';
    $handle = opendir($path);
    while (false !== ($file = readdir($handle))) {
        if ($file != '.' && $file != '..') {
            $path2 = $path . $file;
            if (is_dir($path2)) {
                getfiles($path2, $allowFiles, $files);
            } else {
                if (preg_match("/\.(" . $allowFiles . ")$/i", $file)) {
                    $files[] = substr($path2, strlen($_SERVER['DOCUMENT_ROOT']));
                }
            }
        }
    }
    return $files;
}
/**
 * 域名白名单校验函数
 * @param $domain_list
 * @return true/false
 *在下面修改为你的网站域名,在下面列表中的网站才能调用API
 */
function checkReferer($domain_list = array(
    'haremu.com',
    'acg.sx'
)) {
    $status = false;
    $refer = $_SERVER['HTTP_REFERER']; //前一URL
    if ($refer) {
        $referhost = parse_url($refer);
        /**来源地址主域名**/
        $host = strtolower($referhost['host']);
        if ($host == $_SERVER['HTTP_HOST'] || in_array($host, $domain_list)) {
            $status = true;
        }
    }
    return $status;
}
//列出指定目录下的图片
$CONFIG = array();
$CONFIG['imageManagerAllowFiles'] = array(".png", ".jpg", ".jpeg", ".gif", ".bmp");
$base_Path = '/picture/'; //图片默认主目录
$category = 'a'; //图片默认分类目录
if ($_GET['folder']) {
    $folder = trim($_GET['folder']);
    $CONFIG['imageManagerListPath'] = $base_Path . $folder . '/';  //有GET访问的分类目录
} else {
    $CONFIG['imageManagerListPath'] = $base_Path . $category . '/'; //无GET访问的默认目录
}
$allowFiles = $CONFIG['imageManagerAllowFiles'];
$path = $CONFIG['imageManagerListPath'];
$allowFiles = substr(str_replace(".", "|", join("", $allowFiles)), 1);
//获取文件列表
$path = $_SERVER['DOCUMENT_ROOT'] . (substr($path, 0, 1) == "/" ? "" : "/") . $path;
$files = getfiles($path, $allowFiles);
if (!count($path)) {
    return "抱歉,没有找到匹配的文件!";
}
//获取指定范围的列表
$len = count($files);
for ($i = 0, $list = array(); $i < $len; $i++) {
    $list[] = $files[$i];
}
$rand = array_rand($list, 1);
$img = $list[$rand];
$imgFile = $_SERVER['DOCUMENT_ROOT'] . (substr($list[$rand], 0, 1) == "/" ? "" : "/") . $img;
$imgNot = $_SERVER['DOCUMENT_ROOT'] . '/' . 'nico.gif'; //无授权域名图片
$refer = $_SERVER['HTTP_REFERER']; //前一URL
//存在前一URL
if ($refer) {
    if (!checkReferer()) {
        $karnc->getdir($imgNot);
        $karnc->img2data();
        $karnc->data2img();
        die;
    } else {
        $karnc->getdir($imgFile);
        $karnc->img2data();
        $karnc->data2img();
        die;
    }
} else {
    //直接访问API地址
    $imgWeb = file_get_contents('imgweb.html');
    echo $imgWeb;
    die;
}
?>

多文件夹说明: 第二个文件夹无需配置,直接使用 URL 传递参数即可。

比如: 默认文件夹的分类,调用的域名是:“ 你的域名/images ”

其它文件夹的分类,调用是域名是:“ 你的域名/images/文件夹名 ”

注意! 若要使用随机数调用,必须启用 Apache 或者 Nginx 的伪静态功能,否则空白输出。

Nginx 用户需要手动添加 nginx.conf 文件里面的伪静态规则到你的域名配置中去……

rewrite ^/images$ /images.php last;
rewrite ^/images/(.*?)$ /images.php?folder=$1 last;

#下面是子目录例子:

rewrite ^/api/images$ /api/images.php last;
rewrite ^/api/images/(.*?)$ /api/images.php?folder=$1 last;

Apache伪静态

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^images$ images.php [L,QSA]
    RewriteRule ^images/(.*?)$ images.php?folder=$1 [L]
</IfModule>

使用随机数载入的情况通常在一个页面多次调用随机图的时候,比如首页文章列表,否则图片都是一样的。

随机数载入方式:“ 你的域名/images?随机数 ” ,就是原有 URL 上添加一个英文问号和任意随机数。

示例:

<img src="https://wdzzz.com/api/images">
<img src="https://wdzzz.com/api/images/acg">
<img src="https://wdzzz.com/api/images?d8c196951e5bbf3edd158de4">
<img src="https://wdzzz.com/api/images/acg?9f0d34f8ee6f96b56d8902d1">


相关专题
API
API
2022-06-15 121

API是开发中必备知识点,合理的应用API可以大大节省开发成本,为您整理收集了包含API接口的信息,包含API接口,API代码,API源码,助你更快的学习使用API技术....

标签 API源码
下载地址

· 积分下载:下载扣除对应积分,不扣除下载次数
· VIP免费:VIP会员免费下载,扣除下载次数
· 下载即代表您已阅读并同意 [服务条款]

相关推荐
  • API源码
  • PHP智云V1.3全能API接口网站源码
    PHP智云V1.3全能API接口网站源码

    智云全能API接口PHP源码V1.3版本接口数据由智云平台开发及整理源码直接上传即可访问,无需数据库,不支持上传二级目录访问!源码上传后请访问:你的域名/inde.html(可以将inde.html重新修改其他名称访问)...

    php源码 554 4年前
  • 2020年最新HTML+API版防红网站模板
    2020年最新HTML+API版防红网站模板

    2020年最新HTML+API版防红网站模板,HTML+JS+API框架,打开即可使用,不需要任何环境。支持多种防红方式,多种短域名后缀。

    html模板 466 4年前
  • HTML+API美腿zipa图片瀑布流网站模板
    HTML+API美腿zipa图片瀑布流网站模板

    HTML+API美腿zipa图片瀑布流网站模板,图片采集与自葫芦侠,流量不走本地,虚拟空间都能部署,适合引流请在下载后24小时内删除,否则一切法律后果请自行承担...

    html模板 682 4年前
  • 最新ASP星外IDC代理API程序网站源码
    最新ASP星外IDC代理API程序网站源码

    最新ASP星外IDC代理API程序网站源码这套ASP源码带有全新登录界面+会员中心,源码适合使用代理星外主机管理系统的API,把文件上传到支持ASP空间即可使用 ,目录记事本打开Global.asa修改成你的星外代理...

    asp源码 260 5年前
  • 微信域名检测源码 带API接口
    微信域名检测源码 带API接口

    微信域名检测源码 带API接口,市面价格2000+的源码,高性能优化处理,目前市场大,运营利润高。可自动检查域名微信内是否报红。极致域名检测系统安装教程此版本是老版本,现在发出来供大家免费使用,可简...

    app源码 634 4年前