更新最新版本

修复主题跳转和footer跳转链接
This commit is contained in:
liyukun 2022-02-08 22:42:08 +08:00
parent aff980a792
commit dbf7c86510
30 changed files with 323 additions and 141 deletions

106
README.md Normal file
View File

@ -0,0 +1,106 @@
ape_blog源码云博客
===============
> 运行环境要求PHP7.1+。
## 主要特性
### 开源无加密
源码开源无加密
### TP6框架
使用最新的 ThinkPHP 6.0框架开发
### 标准接口
标准接口、优越性能、强大兼容性、二次开发更方便
### 无缝事件机制
行为扩展更方便,方便二次开发
### 后台快速生成表单
后台应用form-builder 无需写页面快速增删改查
### 强大的后台权限管理
后台多种角色、多重身份权限管理,权限可以控制到每一步操作
## 特别感谢
[笔下光年 / Light Year Admin 一个基于Bootstrap v3.3.7的后台HTML模板。](https://gitee.com/yinqi/Light-Year-Admin-Template)
[xaboy / form-builder PHP表单生成器使用PHP快速生成现代化的form表单。](https://gitee.com/xaboy/form-builder)
[cfn / PaiAdmin 前后端开发框架](https://gitee.com/leapy/pai)
## 自动安装
1. 上传文件到网站根目录
2. 修改目录权限linux系统777
/public
/runtime
3. 安装好拓展
4. 配置好域名,在浏览器里打开域名,根据安装向导进行安装
5. 后台登录 http://域名/admin
## 手动安装
1.创建数据库,倒入数据库文件
数据库文件目录/public/install/learn.sql
2.修改数据库连接文件
配置文件路径/.env
~~~
APP_DEBUG = true
[APP]
DEFAULT_TIMEZONE = Asia/Shanghai
[DATABASE]
TYPE = mysql
HOSTNAME = 127.0.0.1 #数据库连接地址
DATABASE = test #数据库名称
USERNAME = username #数据库登录账号
PASSWORD = password #数据库登录密码
HOSTPORT = 3306 #数据库端口
CHARSET = utf8
DEBUG = true
[LANG]
default_lang = zh-cn
~~~
3.安装php拓展
~~~
redis
~~~
4.创建目录并修改目录权限linux系统777
~~~
mkdir public/upload
mkdir runtime
chmod -R 777 public/upload
chmod -R 777 runtime
~~~
5.后台登录:
http://域名/admin
默认账号admin 密码123456
## 文档
[TP6开发手册](https://www.kancloud.cn/manual/thinkphp6_0/content)
[FormBuilder](http://php.form-create.com/)
[Light Year Admin](http://www.itshubao.com/doc-lyear/lyear.html)
## 官网体验
[源码云博客](https://blog.apecloud.cn/)
## 联系我
邮箱1099438829@qq.com
QQ1099438829
## 版权信息
Pai-admin遵循Apache2开源协议发布并提供免费使用。
本项目包含的第三方源码和二进制文件之版权信息另行标注。
版权所有Copyright © 2019-2025 by 木子的忧伤 (https://www.apecloud.cn)
All rights reserved。

View File

@ -114,14 +114,13 @@ class Article extends Base
*/
public function detail()
{
$id = input('id/d');
$id = input('id');
if (!$id) {
$this->error('参数错误!');
}
//获取该文章
$documentModel = new Document();
$article = $documentModel->where('status', 1)->where('id', $id)->find();
$article = $documentModel->where('status', 1)->where('id|alias', $id)->find();
if (!$article) {
$this->error('文章不存在或已删除!');
}

View File

@ -11,7 +11,7 @@
Target Server Version : 50726
File Encoding : 65001
Date: 23/01/2022 22:22:06
Date: 08/02/2022 22:31:04
*/
SET NAMES utf8mb4;
@ -125,15 +125,11 @@ CREATE TABLE `ape_admin_log` (
`user_agent` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT 'User-Agent',
`create_time` int(10) NOT NULL DEFAULT 0 COMMENT '操作时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '操作日志表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '操作日志表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of ape_admin_log
-- ----------------------------
INSERT INTO `ape_admin_log` VALUES (1, 1, 'admin', 'admin', 'index', 'main', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36 Edg/97.0.1072.69', 1642947456);
INSERT INTO `ape_admin_log` VALUES (2, 1, 'admin', 'admin', 'friendlink', 'index', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36 Edg/97.0.1072.69', 1642947458);
INSERT INTO `ape_admin_log` VALUES (3, 1, 'admin', 'admin', 'admin_auth', 'index', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36 Edg/97.0.1072.69', 1642947612);
INSERT INTO `ape_admin_log` VALUES (4, 1, 'admin', 'admin', 'admin_auth', 'index', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36 Edg/97.0.1072.69', 1642947645);
-- ----------------------------
-- Table structure for ape_admin_notify
@ -271,14 +267,11 @@ CREATE TABLE `ape_comment` (
`create_time` int(11) NOT NULL DEFAULT 0 COMMENT '评论时间',
`update_time` int(11) NOT NULL DEFAULT 0 COMMENT '评论时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '评论表' ROW_FORMAT = COMPACT;
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '评论表' ROW_FORMAT = COMPACT;
-- ----------------------------
-- Records of ape_comment
-- ----------------------------
INSERT INTO `ape_comment` VALUES (1, '看看', '123@qq.com', 'www.baidu.com', '123213', 0, '', 0, 1, 0, 1642931109, 1642931109);
INSERT INTO `ape_comment` VALUES (2, '看看', '123@qq.com', 'www.baidu.com', '驱蚊驱蚊[f=youling]', 0, '', 0, 1, 1, 1642931129, 1642931129);
INSERT INTO `ape_comment` VALUES (3, '看看', '123@qq.com', 'www.baidu.com', '[f=yiwen][f=yinxian]', 0, '', 2, 1, 1, 1642945595, 1642945595);
-- ----------------------------
-- Table structure for ape_document
@ -286,6 +279,7 @@ INSERT INTO `ape_comment` VALUES (3, '看看', '123@qq.com', 'www.baidu.com', '[
DROP TABLE IF EXISTS `ape_document`;
CREATE TABLE `ape_document` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`alias` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '别名',
`uid` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '用户ID',
`author` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '作者',
`title` char(80) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '标题',
@ -310,13 +304,14 @@ CREATE TABLE `ape_document` (
`password` varchar(40) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '文章密码',
PRIMARY KEY (`id`) USING BTREE,
INDEX `idx_category_status`(`category_id`, `status`) USING BTREE,
INDEX `idx_status_type_pid`(`status`, `uid`) USING BTREE
INDEX `idx_status_type_pid`(`status`, `uid`) USING BTREE,
UNIQUE INDEX `alias`(`alias`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '文档模型基础表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of ape_document
-- ----------------------------
INSERT INTO `ape_document` VALUES (1, 1, '超级管理员', '关于源码云博客', 1, '/uploads/images/20220113/0114fc5ff6a1f9c541dcbc8b99b1c5f2.png', 'article', '', 1, 1, 1, '', 1, 41, '源码云,博客,源码云博客', '关于源码云博客', '源码云博客,源码云,博客,关于', '源码云博客最好用的博客程序', 99, 1642089660, 1642089660, 1, '');
INSERT INTO `ape_document` VALUES (1, 'about', 1, '超级管理员', '关于源码云博客', 1, '/uploads/images/20220113/0114fc5ff6a1f9c541dcbc8b99b1c5f2.png', 'article', '', 1, 1, 1, '', 1, 61, '源码云,博客,源码云博客', '关于源码云博客', '源码云博客,源码云,博客,关于', '源码云博客最好用的博客程序', 99, 1642089660, 1642089660, 1, '');
-- ----------------------------
-- Table structure for ape_document_article
@ -360,7 +355,7 @@ CREATE TABLE `ape_document_category` (
-- ----------------------------
-- Records of ape_document_category
-- ----------------------------
INSERT INTO `ape_document_category` VALUES (1, '关于小站', '', '', 0, 0, 99, '关于小站', '关于小站,源码云,源码云博客,关于源码云博客', '源码云博客,源码云博客网站', 1, 'list_default.html', '', 1, 0, 1642089484);
INSERT INTO `ape_document_category` VALUES (1, '关于小站', '', '', 0, 0, 99, '关于小站', '关于小站,源码云,源码云博客,关于源码云博客', '源码云博客,源码云博客网站', 1, 'list_default.html', '', 11, 0, 1642089484);
-- ----------------------------
-- Table structure for ape_document_category_content
@ -500,7 +495,7 @@ CREATE TABLE `ape_system_config` (
`create_time` int(10) NOT NULL DEFAULT 0 COMMENT '添加时间',
`update_time` int(10) NOT NULL DEFAULT 0 COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 34 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统配置表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 36 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统配置表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of ape_system_config

View File

@ -306,7 +306,7 @@
<div class="hot-post-widget-item-meta">
<div>{$field['create_time']}</div>
<div>
<a href="#">{:cn_substr($field['category_title'],5)}</a>
<a href="{:url('article/lists')}?id={$field['category_id']}">{:cn_substr($field['category_title'],5)}</a>
</div>
</div>
</div>

View File

@ -96,7 +96,7 @@
<div class="hot-post-widget-item-meta">
<div>{$field['create_time']}</div>
<div>
<a href="#">{:cn_substr($field['category_title'],5)}</a>
<a href="{:url('article/lists')}?id={$field['category_id']}">{:cn_substr($field['category_title'],5)}</a>
</div>
</div>
</div>

View File

@ -96,7 +96,7 @@
<div class="hot-post-widget-item-meta">
<div>{$field['create_time']}</div>
<div>
<a href="#">{:cn_substr($field['category_title'],5)}</a>
<a href="{:url('article/lists')}?id={$field['category_id']}">{:cn_substr($field['category_title'],5)}</a>
</div>
</div>
</div>

View File

@ -96,7 +96,7 @@
<div class="hot-post-widget-item-meta">
<div>{$field['create_time']}</div>
<div>
<a href="#">{:cn_substr($field['category_title'],5)}</a>
<a href="{:url('article/lists')}?id={$field['category_id']}">{:cn_substr($field['category_title'],5)}</a>
</div>
</div>
</div>

View File

@ -97,7 +97,7 @@
<div class="hot-post-widget-item-meta">
<div>{$field['create_time']}</div>
<div>
<a href="#">{:cn_substr($field['category_title'],5)}</a>
<a href="{:url('article/lists')}?id={$field['category_id']}">{:cn_substr($field['category_title'],5)}</a>
</div>
</div>
</div>

View File

@ -164,7 +164,7 @@
<div class="hot-post-widget-item-meta">
<div>{$field['create_time']}</div>
<div>
<a href="#">{:cn_substr($field['category_title'],5)}</a>
<a href="{:url('article/lists')}?id={$field['category_id']}">{:cn_substr($field['category_title'],5)}</a>
</div>
</div>
</div>

View File

@ -173,7 +173,7 @@
<div class="hot-post-widget-item-meta">
<div>{$field['create_time']}</div>
<div>
<a href="#">{:cn_substr($field['category_title'],5)}</a>
<a href="{:url('article/lists')}?id={$field['category_id']}">{:cn_substr($field['category_title'],5)}</a>
</div>
</div>
</div>

View File

@ -157,7 +157,7 @@
<div class="hot-post-widget-item-meta">
<div>{$field['create_time']}</div>
<div>
<a href="#">{:cn_substr($field['category_title'],5)}</a>
<a href="{:url('article/lists')}?id={$field['category_id']}">{:cn_substr($field['category_title'],5)}</a>
</div>
</div>
</div>

View File

@ -23,12 +23,12 @@
</div>
</div>
<nav class="menu-footer-plane">
<ul id="menu-%e5%ba%95%e9%83%a8%e8%8f%9c%e5%8d%95" class="menu-footer-list">
<ul id="menu-list-footer" class="menu-footer-list">
<li id="menu-item-306" class="menu-item menu-item-306">
<a href="about.html">关于本站</a>
<a href="{:url('/index/article/detail?id=1')}">关于本站</a>
</li>
<li id="menu-item-307" class="menu-item menu-item-307">
<a href="{:url('msg')}">留言建议</a>
<a href="{:url('/index/index/msg')}">留言建议</a>
</li>
</ul>
</nav>

View File

@ -4,21 +4,114 @@
/**
* Proxy PHP file generated by Composer
*
* This file includes the referenced bin path (../symfony/var-dumper/Resources/bin/var-dump-server) using eval to remove the shebang if present
* This file includes the referenced bin path (../symfony/var-dumper/Resources/bin/var-dump-server)
* using a stream wrapper to prevent the shebang from being output on PHP<8
*
* @generated
*/
$binPath = realpath(__DIR__ . "/" . '../symfony/var-dumper/Resources/bin/var-dump-server');
$contents = file_get_contents($binPath);
$contents = preg_replace('{^#!/.+\r?\n<\?(php)?}', '', $contents, 1, $replaced);
if ($replaced) {
$contents = strtr($contents, array(
'__FILE__' => var_export($binPath, true),
'__DIR__' => var_export(dirname($binPath), true),
));
namespace Composer;
eval($contents);
exit(0);
$GLOBALS['_composer_bin_dir'] = __DIR__;
$GLOBALS['_composer_autoload_path'] = __DIR__ . '/..'.'/autoload.php';
if (PHP_VERSION_ID < 80000) {
if (!class_exists('Composer\BinProxyWrapper')) {
/**
* @internal
*/
final class BinProxyWrapper
{
private $handle;
private $position;
private $realpath;
public function stream_open($path, $mode, $options, &$opened_path)
{
// get rid of phpvfscomposer:// prefix for __FILE__ & __DIR__ resolution
$opened_path = substr($path, 17);
$this->realpath = realpath($opened_path) ?: $opened_path;
$opened_path = $this->realpath;
$this->handle = fopen($this->realpath, $mode);
$this->position = 0;
return (bool) $this->handle;
}
public function stream_read($count)
{
$data = fread($this->handle, $count);
if ($this->position === 0) {
$data = preg_replace('{^#!.*\r?\n}', '', $data);
}
$this->position += strlen($data);
return $data;
}
public function stream_cast($castAs)
{
return $this->handle;
}
public function stream_close()
{
fclose($this->handle);
}
public function stream_lock($operation)
{
return $operation ? flock($this->handle, $operation) : true;
}
public function stream_seek($offset, $whence)
{
if (0 === fseek($this->handle, $offset, $whence)) {
$this->position = ftell($this->handle);
return true;
}
return false;
}
public function stream_tell()
{
return $this->position;
}
public function stream_eof()
{
return feof($this->handle);
}
public function stream_stat()
{
return array();
}
public function stream_set_option($option, $arg1, $arg2)
{
return true;
}
public function url_stat($path, $flags)
{
$path = substr($path, 17);
if (file_exists($path)) {
return stat($path);
}
return false;
}
}
}
if (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper')) {
include("phpvfscomposer://" . __DIR__ . '/..'.'/symfony/var-dumper/Resources/bin/var-dump-server');
exit(0);
}
}
include $binPath;
include __DIR__ . '/..'.'/symfony/var-dumper/Resources/bin/var-dump-server';

View File

@ -1,4 +1,5 @@
@ECHO OFF
setlocal DISABLEDELAYEDEXPANSION
SET BIN_TARGET=%~dp0/../symfony/var-dumper/Resources/bin/var-dump-server
SET BIN_TARGET=%~dp0/var-dump-server
SET COMPOSER_BIN_DIR=%~dp0
php "%BIN_TARGET%" %*

View File

@ -149,7 +149,7 @@ class ClassLoader
/**
* @return string[] Array of classname => path
* @psalm-var array<string, string>
* @psalm-return array<string, string>
*/
public function getClassMap()
{

View File

@ -24,8 +24,21 @@ use Composer\Semver\VersionParser;
*/
class InstalledVersions
{
/**
* @var mixed[]|null
* @psalm-var array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}|array{}|null
*/
private static $installed;
/**
* @var bool|null
*/
private static $canGetVendors;
/**
* @var array[]
* @psalm-var array<string, array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
*/
private static $installedByVendor = array();
/**

View File

@ -7,8 +7,8 @@ $baseDir = dirname($vendorDir);
return array(
'9b552a3cc426e3287cc811caefa3cf53' => $vendorDir . '/topthink/think-helper/src/helper.php',
'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php',
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php',
'35fab96057f1bf5e7aba31a8a6d5fdde' => $vendorDir . '/topthink/think-orm/stubs/load_stubs.php',
'6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '/symfony/deprecation-contracts/function.php',
'25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php',

View File

@ -9,7 +9,7 @@ return array(
'think\\view\\driver\\' => array($vendorDir . '/topthink/think-view/src'),
'think\\captcha\\' => array($vendorDir . '/topthink/think-captcha/src'),
'think\\app\\' => array($vendorDir . '/topthink/think-multi-app/src'),
'think\\' => array($vendorDir . '/topthink/think-helper/src', $vendorDir . '/topthink/think-template/src', $vendorDir . '/topthink/think-orm/src', $vendorDir . '/topthink/framework/src/think'),
'think\\' => array($vendorDir . '/topthink/framework/src/think', $vendorDir . '/topthink/think-helper/src', $vendorDir . '/topthink/think-orm/src', $vendorDir . '/topthink/think-template/src'),
'app\\' => array($baseDir . '/app'),
'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'),
'Symfony\\Polyfill\\Php72\\' => array($vendorDir . '/symfony/polyfill-php72'),

View File

@ -22,8 +22,6 @@ class ComposerAutoloaderInit4b57298e8d0e895486f3307a354a7e1a
return self::$loader;
}
require __DIR__ . '/platform_check.php';
spl_autoload_register(array('ComposerAutoloaderInit4b57298e8d0e895486f3307a354a7e1a', 'loadClassLoader'), true, true);
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
spl_autoload_unregister(array('ComposerAutoloaderInit4b57298e8d0e895486f3307a354a7e1a', 'loadClassLoader'));
@ -65,11 +63,16 @@ class ComposerAutoloaderInit4b57298e8d0e895486f3307a354a7e1a
}
}
/**
* @param string $fileIdentifier
* @param string $file
* @return void
*/
function composerRequire4b57298e8d0e895486f3307a354a7e1a($fileIdentifier, $file)
{
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
require $file;
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
require $file;
}
}

View File

@ -8,8 +8,8 @@ class ComposerStaticInit4b57298e8d0e895486f3307a354a7e1a
{
public static $files = array (
'9b552a3cc426e3287cc811caefa3cf53' => __DIR__ . '/..' . '/topthink/think-helper/src/helper.php',
'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
'35fab96057f1bf5e7aba31a8a6d5fdde' => __DIR__ . '/..' . '/topthink/think-orm/stubs/load_stubs.php',
'6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php',
'25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php',
@ -79,10 +79,10 @@ class ComposerStaticInit4b57298e8d0e895486f3307a354a7e1a
),
'think\\' =>
array (
0 => __DIR__ . '/..' . '/topthink/think-helper/src',
1 => __DIR__ . '/..' . '/topthink/think-template/src',
0 => __DIR__ . '/..' . '/topthink/framework/src/think',
1 => __DIR__ . '/..' . '/topthink/think-helper/src',
2 => __DIR__ . '/..' . '/topthink/think-orm/src',
3 => __DIR__ . '/..' . '/topthink/framework/src/think',
3 => __DIR__ . '/..' . '/topthink/think-template/src',
),
'app\\' =>
array (

View File

@ -541,17 +541,17 @@
},
{
"name": "psr/container",
"version": "1.1.1",
"version_normalized": "1.1.1.0",
"version": "1.1.2",
"version_normalized": "1.1.2.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/container.git",
"reference": "8622567409010282b7aeebe4bb841fe98b58dcaf"
"reference": "513e0666f7216c7459170d56df27dfcefe1689ea"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf",
"reference": "8622567409010282b7aeebe4bb841fe98b58dcaf",
"url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea",
"reference": "513e0666f7216c7459170d56df27dfcefe1689ea",
"shasum": "",
"mirrors": [
{
@ -561,9 +561,9 @@
]
},
"require": {
"php": ">=7.2.0"
"php": ">=7.4.0"
},
"time": "2021-03-05T17:36:06+00:00",
"time": "2021-11-05T16:50:12+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@ -592,7 +592,7 @@
],
"support": {
"issues": "https://github.com/php-fig/container/issues",
"source": "https://github.com/php-fig/container/tree/1.1.1"
"source": "https://github.com/php-fig/container/tree/1.1.2"
},
"install-path": "../psr/container"
},
@ -914,17 +914,17 @@
},
{
"name": "symfony/http-foundation",
"version": "v5.4.2",
"version_normalized": "5.4.2.0",
"version": "v5.4.3",
"version_normalized": "5.4.3.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
"reference": "ce952af52877eaf3eab5d0c08cc0ea865ed37313"
"reference": "ef409ff341a565a3663157d4324536746d49a0c7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/ce952af52877eaf3eab5d0c08cc0ea865ed37313",
"reference": "ce952af52877eaf3eab5d0c08cc0ea865ed37313",
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/ef409ff341a565a3663157d4324536746d49a0c7",
"reference": "ef409ff341a565a3663157d4324536746d49a0c7",
"shasum": "",
"mirrors": [
{
@ -948,7 +948,7 @@
"suggest": {
"symfony/mime": "To use the file extension guesser"
},
"time": "2021-12-28T17:15:56+00:00",
"time": "2022-01-02T09:53:40+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@ -976,7 +976,7 @@
"description": "Defines an object-oriented layer for the HTTP specification",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/http-foundation/tree/v5.4.2"
"source": "https://github.com/symfony/http-foundation/tree/v5.4.3"
},
"funding": [
{
@ -1265,17 +1265,17 @@
},
{
"name": "symfony/var-dumper",
"version": "v4.4.36",
"version_normalized": "4.4.36.0",
"version": "v4.4.37",
"version_normalized": "4.4.37.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
"reference": "02685c62fcbc4262235cc72a54fbd45ab719ce3c"
"reference": "e74eee4ec02de71db3d60151aa5b203c990556df"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/02685c62fcbc4262235cc72a54fbd45ab719ce3c",
"reference": "02685c62fcbc4262235cc72a54fbd45ab719ce3c",
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/e74eee4ec02de71db3d60151aa5b203c990556df",
"reference": "e74eee4ec02de71db3d60151aa5b203c990556df",
"shasum": "",
"mirrors": [
{
@ -1305,7 +1305,7 @@
"ext-intl": "To show region name in time zone dump",
"symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script"
},
"time": "2021-12-29T09:28:53+00:00",
"time": "2022-01-02T09:41:36+00:00",
"bin": [
"Resources/bin/var-dump-server"
],
@ -1343,7 +1343,7 @@
"dump"
],
"support": {
"source": "https://github.com/symfony/var-dumper/tree/v4.4.36"
"source": "https://github.com/symfony/var-dumper/tree/v4.4.37"
},
"funding": [
{
@ -1439,17 +1439,17 @@
},
{
"name": "topthink/think-captcha",
"version": "v3.0.3",
"version_normalized": "3.0.3.0",
"version": "v3.0.4",
"version_normalized": "3.0.4.0",
"source": {
"type": "git",
"url": "https://github.com/top-think/think-captcha.git",
"reference": "1eef3717c1bcf4f5bbe2d1a1c704011d330a8b55"
"reference": "db5be361d3cd664d236fb95d5dffe93a117283ad"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/top-think/think-captcha/zipball/1eef3717c1bcf4f5bbe2d1a1c704011d330a8b55",
"reference": "1eef3717c1bcf4f5bbe2d1a1c704011d330a8b55",
"url": "https://api.github.com/repos/top-think/think-captcha/zipball/db5be361d3cd664d236fb95d5dffe93a117283ad",
"reference": "db5be361d3cd664d236fb95d5dffe93a117283ad",
"shasum": "",
"mirrors": [
{
@ -1461,7 +1461,7 @@
"require": {
"topthink/framework": "^6.0.0"
},
"time": "2020-05-19T10:55:45+00:00",
"time": "2022-01-07T06:34:19+00:00",
"type": "library",
"extra": {
"think": {
@ -1495,7 +1495,7 @@
"description": "captcha package for thinkphp",
"support": {
"issues": "https://github.com/top-think/think-captcha/issues",
"source": "https://github.com/top-think/think-captcha/tree/v3.0.3"
"source": "https://github.com/top-think/think-captcha/tree/v3.0.4"
},
"install-path": "../topthink/think-captcha"
},
@ -1613,17 +1613,17 @@
},
{
"name": "topthink/think-orm",
"version": "v2.0.51",
"version_normalized": "2.0.51.0",
"version": "v2.0.52",
"version_normalized": "2.0.52.0",
"source": {
"type": "git",
"url": "https://github.com/top-think/think-orm.git",
"reference": "149d266acdc4b2f07c6a94f1733b6b97d340e0e2"
"reference": "407a60658f37fc57422ab95a9922c6f69af90f46"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/top-think/think-orm/zipball/149d266acdc4b2f07c6a94f1733b6b97d340e0e2",
"reference": "149d266acdc4b2f07c6a94f1733b6b97d340e0e2",
"url": "https://api.github.com/repos/top-think/think-orm/zipball/407a60658f37fc57422ab95a9922c6f69af90f46",
"reference": "407a60658f37fc57422ab95a9922c6f69af90f46",
"shasum": "",
"mirrors": [
{
@ -1643,7 +1643,7 @@
"require-dev": {
"phpunit/phpunit": "^7|^8|^9.5"
},
"time": "2022-01-21T06:25:25+00:00",
"time": "2022-01-25T06:00:05+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@ -1671,7 +1671,7 @@
],
"support": {
"issues": "https://github.com/top-think/think-orm/issues",
"source": "https://github.com/top-think/think-orm/tree/v2.0.51"
"source": "https://github.com/top-think/think-orm/tree/v2.0.52"
},
"install-path": "../topthink/think-orm"
},

View File

@ -5,7 +5,7 @@
'type' => 'project',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
'reference' => '0c450018f0159a262d26966718fc8891dd645cf3',
'reference' => 'aff980a7927e1517e120f879d90e76f2867f02b6',
'name' => 'topthink/think',
'dev' => true,
),
@ -74,12 +74,12 @@
'dev_requirement' => false,
),
'psr/container' => array(
'pretty_version' => '1.1.1',
'version' => '1.1.1.0',
'pretty_version' => '1.1.2',
'version' => '1.1.2.0',
'type' => 'library',
'install_path' => __DIR__ . '/../psr/container',
'aliases' => array(),
'reference' => '8622567409010282b7aeebe4bb841fe98b58dcaf',
'reference' => '513e0666f7216c7459170d56df27dfcefe1689ea',
'dev_requirement' => false,
),
'psr/http-message' => array(
@ -128,12 +128,12 @@
'dev_requirement' => false,
),
'symfony/http-foundation' => array(
'pretty_version' => 'v5.4.2',
'version' => '5.4.2.0',
'pretty_version' => 'v5.4.3',
'version' => '5.4.3.0',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/http-foundation',
'aliases' => array(),
'reference' => 'ce952af52877eaf3eab5d0c08cc0ea865ed37313',
'reference' => 'ef409ff341a565a3663157d4324536746d49a0c7',
'dev_requirement' => false,
),
'symfony/polyfill-mbstring' => array(
@ -164,12 +164,12 @@
'dev_requirement' => false,
),
'symfony/var-dumper' => array(
'pretty_version' => 'v4.4.36',
'version' => '4.4.36.0',
'pretty_version' => 'v4.4.37',
'version' => '4.4.37.0',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/var-dumper',
'aliases' => array(),
'reference' => '02685c62fcbc4262235cc72a54fbd45ab719ce3c',
'reference' => 'e74eee4ec02de71db3d60151aa5b203c990556df',
'dev_requirement' => true,
),
'topthink/framework' => array(
@ -187,16 +187,16 @@
'type' => 'project',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
'reference' => '0c450018f0159a262d26966718fc8891dd645cf3',
'reference' => 'aff980a7927e1517e120f879d90e76f2867f02b6',
'dev_requirement' => false,
),
'topthink/think-captcha' => array(
'pretty_version' => 'v3.0.3',
'version' => '3.0.3.0',
'pretty_version' => 'v3.0.4',
'version' => '3.0.4.0',
'type' => 'library',
'install_path' => __DIR__ . '/../topthink/think-captcha',
'aliases' => array(),
'reference' => '1eef3717c1bcf4f5bbe2d1a1c704011d330a8b55',
'reference' => 'db5be361d3cd664d236fb95d5dffe93a117283ad',
'dev_requirement' => false,
),
'topthink/think-helper' => array(
@ -218,12 +218,12 @@
'dev_requirement' => false,
),
'topthink/think-orm' => array(
'pretty_version' => 'v2.0.51',
'version' => '2.0.51.0',
'pretty_version' => 'v2.0.52',
'version' => '2.0.52.0',
'type' => 'library',
'install_path' => __DIR__ . '/../topthink/think-orm',
'aliases' => array(),
'reference' => '149d266acdc4b2f07c6a94f1733b6b97d340e0e2',
'reference' => '407a60658f37fc57422ab95a9922c6f69af90f46',
'dev_requirement' => false,
),
'topthink/think-template' => array(

View File

@ -1,26 +0,0 @@
<?php
// platform_check.php @generated by Composer
$issues = array();
if (!(PHP_VERSION_ID >= 70205)) {
$issues[] = 'Your Composer dependencies require a PHP version ">= 7.2.5". You are running ' . PHP_VERSION . '.';
}
if ($issues) {
if (!headers_sent()) {
header('HTTP/1.1 500 Internal Server Error');
}
if (!ini_get('display_errors')) {
if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL);
} elseif (!headers_sent()) {
echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL;
}
}
trigger_error(
'Composer detected issues in your platform: ' . implode(' ', $issues),
E_USER_ERROR
);
}

View File

@ -12,7 +12,7 @@
}
],
"require": {
"php": ">=7.2.0"
"php": ">=7.4.0"
},
"autoload": {
"psr-4": {

View File

@ -2,9 +2,11 @@
namespace Psr\Container;
use Throwable;
/**
* Base interface representing a generic exception in a container.
*/
interface ContainerExceptionInterface
interface ContainerExceptionInterface extends Throwable
{
}

2
vendor/services.php vendored
View File

@ -1,5 +1,5 @@
<?php
// This file is automatically generated at:2022-01-22 01:25:41
// This file is automatically generated at:2022-02-08 22:41:09
declare (strict_types = 1);
return array (
0 => 'think\\captcha\\CaptchaService',

View File

@ -1,4 +1,4 @@
Copyright (c) 2004-2021 Fabien Potencier
Copyright (c) 2004-2022 Fabien Potencier
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@ -1,4 +1,4 @@
Copyright (c) 2014-2021 Fabien Potencier
Copyright (c) 2014-2022 Fabien Potencier
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@ -178,7 +178,7 @@ class Captcha
// 图片高(px)
$this->imageH || $this->imageH = $this->fontSize * 2.5;
// 建立一幅 $this->imageW x $this->imageH 的图像
$this->im = imagecreate($this->imageW, $this->imageH);
$this->im = imagecreate((int) $this->imageW, (int) $this->imageH);
// 设置背景
imagecolorallocate($this->im, $this->bg[0], $this->bg[1], $this->bg[2]);

View File

@ -64,8 +64,4 @@ class Raw
return $this->bind;
}
public function __toString()
{
return (string) $this->value;
}
}