一、插件可开发目录

插件可开发目录即是已载入过插件的文件列表,目前包括以下三个文件:

  1. 根目录下的 api.php
  2. user 目录下的 index.php 和 ajax.php
  3. 关于api.php调用静态 使用 api/xxxx

    二、创建项目

  4. 创建项目目录

在项目根目录中创建项目目录,例如 xfcs。

  1. 创建控制器

在项目目录 xfcs 中创建 controller 目录,并在其中创建 Index.php 控制器文件。

  1. 编写控制器代码
    
    <?php
    namespace xfyzf\plugins\项目名\controller;

class Index {
public $priKey='如需授权请创建这个 获取前往 auth.daoh.top用户中心获取';
public $info = [
"name" =>'',//支付插件英文名称,需和目录名称一致,不能有重复
"showname" =>'',//支付插件显示名称
"author" =>'', //支付插件作者
'auth' =>false,//授权开关
'pwd' =>'',//明文 密码
'path' =>'',//授权效验文件 注意 必须唯一 结尾.ini
];

public function 随意() {
    // 控制器方法内容
}

}
?>

4.config.json创建示例
```php
{
    "name": "",//支付插件英文名称,需和目录名称一致,不能有重复
    "showname": "",//支付插件显示名称
    "author": "", //支付插件作者
    "link": "",//作者链接
    "menu": {//如需前端目录适配可创建这个 数组
        "name": "APP挂机",//目录名称
        "url": "?p=appjk/msg=APP_Qrlist",//目录路由
        "menu": "Qrlist"//目前仅支持 qrlist  对应 二维码管理
    }

}

三、开发教程

  1. 调用插件
    在根目录下的 api.php 中,仅支持 POST 请求,请求参数如下:

p: 插件目录/msg(任意)= 要载入的函数
示例代码:

<?php
$url = "https://host/api.php";
$post = array(
    'p' => 'xfcs/msg=cs',
);
// 应该都能看懂吧,POST 传输 p = xfcs/msg=cs 即可载入对应的库  
// 目录名 Core/class/xfyzf/plugins/xfcs/controller
class Index {
    public function cs() {
        // 控制器方法内容
    }
}
?>
  1. 在 user 目录下的 index.php 和 ajax.php 中

支持 POST 和 GET 请求,编写方法在插件的 index.php 中增加公共函数即可。

公共调用常量

  • pluginsassets: 公共调用样式表,位于插件目录中的 assets 目录。
  • pluginstem: 插件模板,位于插件目录中的 view 目录。

    四、模板常用函数说明

1.函数名称:alerttc

描述:

该函数用于在 PHP 中生成 JavaScript 弹窗提示信息,并在用户关闭提示框后跳转到指定页面。

注意事项:

  • 当传入 $msg 参数时,将会生成带有提示信息的弹窗,并在用户关闭提示框后跳转到指定页面。
  • 如果不传入 $msg 参数,则只会直接跳转到指定页面,不会生成弹窗提示信息。
    参数:
  • $msg(可选):要显示在弹窗中的提示信息。
  • $url(可选,默认值为 “index_min”):指定跳转的目标页面。
    使用示例:
    
    // 例 1:生成带有提示信息的弹窗,并在关闭后跳转到默认页面

alerttc("操作成功!");

// 例 2:生成带有提示信息的弹窗,并在关闭后跳转到指定页面

alerttc("请先登录!", "login");

// 例 3:直接跳转到默认页面,不生成弹窗提示信息

alerttc();

2.函数名称:minalerttc

描述:

该函数用于在 PHP 中生成 JavaScript 弹窗提示信息,并在用户关闭提示框后跳转到指定页面。

注意事项:
- 该函数会生成带有提示信息的弹窗,并在用户关闭提示框后跳转到指定页面。
参数:
- $msg:要显示在弹窗中的提示信息。
使用示例:
```php
// 生成带有提示信息的弹窗,并在关闭后跳转到默认页面

minalerttc("操作成功!");

// 生成带有提示信息的弹窗,并在关闭后跳转到指定页面

minalerttc("请先登录!");

3.函数名称:sysmsg

描述:

该函数用于在 PHP 中生成系统提示信息页面,可用于显示各种提示信息。

注意事项:

  • 如果 $send 参数为 true,则会以 JSON 格式返回提示信息,否则将以 HTML 页面形式显示提示信息。
    参数:
  • $msg:要显示的提示信息。
  • $send(可选,默认为 false):指定是否以 JSON 格式返回提示信息。
    使用示例:
    // 例 1:以 HTML 页面形式显示提示信息

sysmsg("

操作成功!

");

// 例 2:以 JSON 格式返回提示信息

sysmsg("请先登录!", true);```html
// 例 1:以 HTML 页面形式显示提示信息
sysmsg("

操作成功!

");

// 例 2:以 JSON 格式返回提示信息
sysmsg("请先登录!", true);

4、Mailbox_sending_template 该函数用于生成邮箱发送模板,可以根据传入的数据生成定制化的邮件内容。

注意事项:
- 此函数用于生成包含标题、站点名称和用户信息的邮件模板。

- 可以通过调用 generateParagraphs() 函数来循环拼接邮件内容的段落。
使用示例:
```php
// 示例数据

$data = array(

    'user' => '彩虹易支付',

    'paragraphs' => array(

        array(

            'label' => '订单号:',

            'value' => '123456',

            'fontSize' => 16,

        ),

        array(

            'label' => '订单金额:',

            'value' => '0',

        ),

        // 可以继续添加更多的段落数据

    )

);

// 示例标题

$title = '订单详情';

// 生成邮箱模板

$mailTemplate = Mailbox_sending_template($data, $title);

5、Splicing_form() 函数使用说明

功能

Splicing_form() 函数用于拼接表格,调用 Loop_splicing_form() 函数生成表格行。

注意事项:

  • 此函数用于生成包含一行表单数据的表格行。

  • 如果需要添加样式,可以在传入的数据中提供 style 键,对应每个单元格的样式。

使用示例:

// 示例数据
$data = array(
    array(
        'label' => '姓名:',
        'value' => '彩虹易支付',
        'style' => 'color: red;', // 示例样式
    ),
    array(
        'label' => '年龄:',
        'value' => '30',
        'style' => 'font-weight: bold;', // 示例样式
    ),
    // 可以继续添加更多的表单数据
);
// 生成表格行
$tableRow = Splicing_form($data);

// 打印表格行
echo '<table>';
echo $tableRow;
echo '</table>';
?>

6、pay_passtemplate() 函数使用说明

功能

pay_passtemplate() 函数用于生成验证二级密码的模板页面。

注意事项

  • 此函数用于生成一个带有密码输入框和确认按钮的页面,需要用户输入二级密码才能继续访问。

  • 如果用户未输入正确的二级密码或未设置二级密码,则页面将停留在此处,不继续执行后续操作。

使用示例:

// 调用函数验证二级密码

pay_passtemplate();

//同时 需要载入 二级密码 js

<script type="text/javascript" src="<?=userassets?>core_js/pay_pass.js"></script>

7、table_page() 函数使用说明

功能

table_page() 函数用于生成带有分页功能的表格页面导航。

注意事项

  • 此函数用于生成带有首页、上一页、下一页、末页等分页链接的页面导航。

  • 页面导航链接的生成基于传入的当前页数、总页数和最小URL参数。
    使用示例
    // 示例调用

$page = 1; // 当前页数

$pages = 10; // 总页数

$min_url = 'example'; // 最小URL参数

table_page($page, $pages, $min_url);```php
// 示例调用
$page = 1; // 当前页数
$pages = 10; // 总页数
$min_url = 'example'; // 最小URL参数
table_page($page, $pages, $min_url);

8、提示库Tips 使用说明

success以及error的使用

如需使用在头部 use Tips;

然后调用 Tips::success(‘这是一个文本内容’);最少需要传输一个参数 文本内容

参数解析

第一个  文本内容  第二个 标题  第三个 跳转链接  如不为空  则会 进行跳转  第四个 跳转时间 秒 默认2  

error和success 一样
9、弹窗库Commontc使用说明

1.类中所含 库  falsetc 、 truetc、alerttc

2.调用方式

第一个参数  msg  传入弹窗内容 

第二个参数data  这个是异步函数(注意是js代码)

第三个参数 是send  为布尔值 如果 传入true 则不会终止 其他的程序执行反之则会 默认false

调用示例
```php
<?php 

use lib\Commontc;

Commontc::truetc("这是一个提示模型");

Commontc::truetc("这是一个带跳转的提示",rethreffun('./login'));

/*

rethreffun是一个 生成跳转的js代码 传入地址 即可 然后传入到 弹窗模型中

truetc 是成功的提示 

falsetc 是失败的提示

alerttc 是一个弹窗

*/

?>

五、功能常用函数解析

1.get_curl() 函数使用说明

功能

get_curl() 函数用于执行 HTTP GET 或 POST 请求,并返回结果。

参数说明

$url (string): 请求的 URL。

$post (mixed): 是否使用 POST 请求。如果需要发送 POST 请求,将要发送的数据作为字符串传递,否则为 false。

$referer (mixed): 请求的 Referer。如果不需要 Referer,设置为 0;如果需要自定义 Referer,传递自定义的 Referer 地址;如果需要使用默认 Referer,设置为 1。

$cookie (mixed): 请求的 Cookie。如果不需要 Cookie,设置为 0;如果需要发送 Cookie,传递要发送的 Cookie 字符串。

$header (bool): 是否返回响应头。如果需要返回响应头,设置为 true;否则为 false。

$ua (mixed): 请求的 User-Agent。如果不需要自定义 User-Agent,设置为 0;如果需要自定义 User-Agent,传递自定义的 User-Agent 字符串。

$nobaody (bool): 是否只获取响应头而不获取响应体。如果只需要获取响应头,设置为 true;否则为 false。
注意事项

此函数用于执行 HTTP 请求并获取响应。

函数执行过程中会禁用 SSL 证书验证,如果用于生产环境,请谨慎使用。

默认使用了一组固定的 HTTP 请求头信息,如果需要自定义请求头,请在函数内部修改。

默认使用了一个固定的 User-Agent,如果需要自定义 User-Agent,请通过 $ua 参数传递自定义的 User-Agent 字符串。

使用示例

<?php

// 发送 GET 请求并获取响应体

$response = get_curl('https://example.com');

// 发送 POST 请求并获取响应体

$postData = array('key' => 'value');

$response = get_curl('https://example.com', $postData);

// 发送 GET 请求并获取响应头

$responseHeader = get_curl('https://example.com', false, 0, 0, true);

// 发送 GET 请求并获取响应头和响应体

$responseWithHeader = get_curl('https://example.com', false, 0, 0, true);

// 发送 GET 请求并设置自定义 Referer 和 User-Agent

$responseCustom = get_curl('https://example.com', false, 'https://example.com', 0, 0, 'Custom User-Agent');

// 发送 GET 请求并只获取响应头

$responseHeaderOnly = get_curl('https://example.com', false, 0, 0, false, 0, true);

?>

2.input() 函数使用说明

功能

input() 函数用于获取用户输入数据,并进行过滤处理,以防止 XSS 攻击和 SQL 注入。

参数说明

$method (string|null): 可选参数,指定获取用户输入数据的方式。可选取值为 'post'、'get'、'cookie'、'input' 或 null。默认为 null,表示合并 $_POST 和 $_GET 数据。

返回值

返回一个经过过滤处理后的关联数组,包含用户输入的数据。

注意事项

此函数用于获取用户输入数据,并对数据进行过滤处理,以防止 XSS 攻击和 SQL 注入。

默认情况下,函数会合并 $_POST 和 $_GET 数据,并进行过滤处理。

如果指定了 $method 参数,则根据指定的方式获取数据。

如果选择获取 'input' 数据,则函数会尝试从 PHP 输入流中获取 JSON 格式的数据,并解码为数组。

函数会使用 strip_tags() 函数过滤 HTML 标签,并使用 daddslashes() 函数对数据进行转义处理。

使用示例

<?php

// 获取 POST 数据并过滤处理

$postData = input('post');

// 获取 GET 数据并过滤处理

$getData = input('get');

// 获取 Cookie 数据并过滤处理

$cookieData = input('cookie');

// 获取 JSON 输入数据并过滤处理

$inputData = input('input');

// 获取合并的 POST 和 GET 数据并过滤处理

$mergedData = input();

?>

3.authcode() 函数使用说明

功能

authcode() 函数用于对字符串进行加密和解密操作。

参数说明

$string (string): 需要加密或解密的字符串。

$operation (string): 操作类型,可选值为 'DECODE'(解密)或 'ENCODE'(加密)。默认为 'DECODE'。

$key (string): 密钥,用于加密和解密。如果不指定密钥,则使用默认密钥。

$expiry (int): 过期时间,仅在加密操作时有效。默认为 0,表示永不过期。

返回值

如果操作为 'DECODE',则返回解密后的字符串。

如果操作为 'ENCODE',则返回加密后的字符串。

注意事项

此函数用于加密和解密字符串,通常用于用户身份验证等场景。

函数内部使用了一系列加密算法和随机数生成器。

如果操作为 'DECODE',函数会验证解密后的字符串是否过期,如果过期或解密失败,则返回空字符串。

使用示例

<?php

// 加密字符串

$originalString = 'hello world';

$encryptedString = authcode($originalString, 'ENCODE', 'your_key', 3600); // 使用指定密钥,并设置过期时间为 1 小时

// 解密字符串

$decryptedString = authcode($encryptedString, 'DECODE', 'your_key');

?>

4.exitjson() 函数使用说明

功能

exitjson() 函数用于返回 JSON 格式的响应数据并终止脚本执行。

参数说明

$code (int): 响应代码,表示请求的处理状态。例如,0 表示成功,-1 表示失败等。

$msg (string): 响应消息,用于描述响应状态或结果。

$data (mixed|null): 可选参数,响应数据。如果提供了数据,则会包含在响应中。

注意事项

此函数用于返回 JSON 格式的响应数据,通常用于 API 接口的响应。

如果提供了 $data 参数,则会将 $code、$msg 和 $data 打包成 JSON 格式返回。

如果未提供 $data 参数,则只返回 $code 和 $msg。

函数执行后会立即终止脚本执行。

使用示例
<?php

// 示例1:返回带数据的 JSON 响应

$code = 0;

$msg = 'Success';

$data = array('name' => 'John', 'age' => 30);

exitjson($code, $msg, $data);

// 示例2:返回不带数据的 JSON 响应

$code = -1;

$msg = 'Failed';

exitjson($code, $msg);

?>```php
<?php

// 示例1:返回带数据的 JSON 响应
$code = 0;
$msg = 'Success';
$data = array('name' => 'John', 'age' => 30);
exitjson($code, $msg, $data);

// 示例2:返回不带数据的 JSON 响应
$code = -1;
$msg = 'Failed';
exitjson($code, $msg);
?>

5.executeSQLQuery() 函数使用说明

功能

executeSQLQuery() 函数用于执行 SQL 查询并返回结果或受影响的行数。

参数说明

$sql (string): 要执行的 SQL 查询语句。

$operation (string): 操作类型,可选值为 'select'、'delete'、'update' 或 'insert'。默认为 'select'。

返回值

如果操作为 'select',则返回查询结果的关联数组。

如果操作为 'delete'、'update' 或 'insert',则返回受影响的行数。

如果操作类型不合法或执行过程中出现异常,则返回 false。

注意事项

此函数用于执行 SQL 查询,并根据操作类型返回结果或受影响的行数。

函数内部使用 PDO 对象执行查询,可以有效防止 SQL 注入攻击。

如果执行过程中出现异常,则会捕获异常并返回 false。

使用示例
```php
<?php

// 示例1:执行 SELECT 查询并返回结果

$sqlSelect = "SELECT * FROM users WHERE id = :id";

$resultSelect = executeSQLQuery($sqlSelect, 'select');

// 示例2:执行 DELETE、UPDATE 或 INSERT 查询并返回受影响的行数

$sqlDelete = "DELETE FROM users WHERE id = :id";

$affectedRows = executeSQLQuery($sqlDelete, 'delete');

// 示例3:未指定操作类型,默认为 SELECT 查询

$sqlDefaultSelect = "SELECT * FROM products";

$resultDefaultSelect = executeSQLQuery($sqlDefaultSelect);

// 示例4:执行异常查询,返回 false

$sqlInvalid = "INVALID SQL QUERY";

$resultInvalid = executeSQLQuery($sqlInvalid);

?>

6.safeSqlQuery() 函数使用说明

功能

safeSqlQuery() 函数用于执行安全的 SQL 查询,并根据操作类型返回结果或受影响的行数。

参数说明

$sql (string): 要执行的 SQL 查询语句,可以包含命名参数。

$params (array): 参数数组,包含命名参数和对应的值。

$operation (string): 操作类型,可选值为 'select'、'insert'、'update' 或 'delete'。默认为 'select'。

返回值

如果操作为 'select',则返回包含查询结果和记录数量的关联数组 ['result' => $result, 'count' => $count]。

如果操作为 'insert',则返回插入记录的主键 ID(如果有),否则返回受影响的行数。

如果操作为 'update' 或 'delete',则返回受影响的行数。

如果操作类型不合法,则返回 false。

注意事项

此函数使用 PDO 预处理语句执行查询,并绑定参数,可以有效防止 SQL 注入攻击。

函数内部根据操作类型返回不同的结果。

如果操作为 'insert',且成功插入记录,则返回插入的记录的主键 ID;如果未插入记录,则返回受影响的行数。

如果提供的操作不在支持范围内,则返回 false。

使用示例

<?php

// 示例1:执行 SELECT 查询并返回结果和记录数量

$sqlSelect = "SELECT * FROM users WHERE id = :id";

$paramsSelect = array('id' => 1);

$resultSelect = safeSqlQuery($sqlSelect, $paramsSelect, 'select');

// 示例2:执行 INSERT 查询并返回插入记录的主键 ID 或受影响的行数

$sqlInsert = "INSERT INTO users (username, email) VALUES (:username, :email)";

$paramsInsert = array('username' => 'john_doe', 'email' => 'john@example.com');

$primaryKeyOrRowCount = safeSqlQuery($sqlInsert, $paramsInsert, 'insert');

// 示例3:执行 DELETE 或 UPDATE 查询并返回受影响的行数

$sqlUpdate = "UPDATE users SET email = :email WHERE id = :id";

$paramsUpdate = array('email' => 'new_email@example.com', 'id' => 1);

$affectedRows = safeSqlQuery($sqlUpdate, $paramsUpdate, 'update');

// 示例4:未指定操作类型,默认为 SELECT 查询

$sqlDefaultSelect = "SELECT * FROM products";

$paramsDefaultSelect = array();

$resultDefaultSelect = safeSqlQuery($sqlDefaultSelect, $paramsDefaultSelect);

?>

7.createLog() 函数使用说明

功能

createLog() 函数用于创建日志记录,并将其插入到数据库中。

参数说明

$uid (string|int): 用户ID或标识符。默认为 '0'。如果传入 'admin',则将其替换为 0。

$type (string): 日志类型,用于描述日志的内容或操作。

$ip (string): IP地址,表示发起日志记录的客户端IP地址。

返回值

如果日志记录成功插入数据库,则返回 true。

如果插入过程中出现异常或失败,则返回 false。

注意事项

此函数用于创建日志记录,并将其插入到数据库中。

函数内部使用 PDO 预处理语句执行 SQL 查询,可以有效防止 SQL 注入攻击。

如果传入的 $uid 参数为 'admin',则会将其替换为 0。

如果插入过程中出现异常,则会捕获异常并返回 false。

需传入pid 做为$uid 参数 其 传入 admin 默认为 0

使用示例

<?php

// 示例1:创建日志记录

$uid = '123';

$type = 'login';

$ip = '192.168.1.100';

$success = createLog($uid, $type, $ip);

if ($success) {

    echo '日志记录创建成功!';

} else {

    echo '日志记录创建失败!';

}

?>

8.http_ip() 函数使用说明

功能

http_ip() 函数用于获取客户端的IP地址。

返回值

返回客户端的IP地址。

注意事项

此函数用于获取客户端的IP地址,以便在服务器端进行处理。

函数会优先从 HTTP_CLIENT_IP、HTTP_X_FORWARDED_FOR、REMOTE_ADDR 变量中获取IP地址。

如果无法从上述变量中获取IP地址,则会尝试从 $HTTP_SERVER_VARS['REMOTE_ADDR'] 变量中获取。

如果仍然无法获取IP地址,则返回空字符串。

使用示例

<?php

// 获取客户端IP地址

$clientIP = http_ip();

echo '客户端IP地址是:' . $clientIP;

?>

9.insertIntoInsideOrder() 函数使用说明
功能
insertIntoInsideOrder() 函数用于向内部订单表中插入订单信息。

参数说明
$order (string): 订单号。
$pid (int): 用户ID或标识符。
$money (float): 订单金额。
$beizhu (string): 备注信息,可选参数。默认为空字符串。
返回值
如果插入成功,则返回插入记录的主键 ID(如果有);否则返回受影响的行数。
注意事项
此函数用于将订单信息插入到内部订单表中。
内部订单表结构包含订单号、用户ID、金额和备注信息。
如果插入过程中出现异常,则返回 false。
函数内部调用了 safeSqlQuery() 函数来执行 SQL 插入操作,确保了插入过程的安全性。
使用示例

// 示例:向内部订单表插入订单信息

$order = '20240422-001';

$pid = 12345;

$money = 100.00;

$beizhu = 'VIP会员充值';

$result = insertIntoInsideOrder($order, $pid, $money, $beizhu);

if ($result !== false) {

    echo '订单插入成功!插入记录的主键 ID 为:' . $result;

} else {

    echo '订单插入失败!';

}

六、常用常量和变量解析

  1. 常量

DEC: 系统分隔符

SYSTEM_ROOT: 引入目录

ROOT: 根目录

admintem: 后台模板文件

adminassets: 后台样式文件

usertem: 用户模板文件

  1. 变量

$islogin_user: 用于判断用户是否登录,值为 1 表示已登录

$islogin_admin: 用于判断管理员是否登录,值为 1 表示已登录

$userrow: 用户中心表,在登录后有效

$user_pid: 用户的 PID,在登录后有效

$date: 当前时间

$conf: 全局 config 表内容

$httphost: 当前站点链接,包含协议头和 host

以上是常量和变量的基本解析,你可以根据需要在代码中使用它们