一、插件可开发目录
插件可开发目录即是已载入过插件的文件列表,目前包括以下三个文件:
- 根目录下的 api.php
- user 目录下的 index.php 和 ajax.php
- 关于api.php调用静态 使用 api/xxxx
二、创建项目
- 创建项目目录
在项目根目录中创建项目目录,例如 xfcs。
- 创建控制器
在项目目录 xfcs 中创建 controller 目录,并在其中创建 Index.php 控制器文件。
- 编写控制器代码
<?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 对应 二维码管理
}
}
三、开发教程
- 调用插件
在根目录下的 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() {
// 控制器方法内容
}
}
?>
- 在 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 '订单插入失败!';
}
六、常用常量和变量解析
- 常量
DEC: 系统分隔符
SYSTEM_ROOT: 引入目录
ROOT: 根目录
admintem: 后台模板文件
adminassets: 后台样式文件
usertem: 用户模板文件
- 变量
$islogin_user: 用于判断用户是否登录,值为 1 表示已登录
$islogin_admin: 用于判断管理员是否登录,值为 1 表示已登录
$userrow: 用户中心表,在登录后有效
$user_pid: 用户的 PID,在登录后有效
$date: 当前时间
$conf: 全局 config 表内容
$httphost: 当前站点链接,包含协议头和 host
以上是常量和变量的基本解析,你可以根据需要在代码中使用它们
推荐阅读: