diff --git a/README.md b/README.md
index 5923a948..d12c58bf 100644
--- a/README.md
+++ b/README.md
@@ -28,22 +28,19 @@ define('Password', '请在这里填写密码啦!ヾ(≧▽≦*)o');
- [PNL 下载方式](https://www.lanzous.com/u/pnl "PNL 下载方式")
## New Changes
-- 当前版本:`1.2.2`
-- 更新日期:2020-8-14
+- 当前版本:`1.2.3`
+- 更新日期:2020-8-15
- 以下修改由 [LC](https://github.com/lc6464 "LC") 完成
- - 配置、函数与程序分离(`后端`)
- - 修复 POST 方法访问 `?download` 参数不齐全出错的问题
- - 修复未配置或配置了普通用户的 `BDUSS` 和 `STOKEN` 时显示空链接的问题
- - 样式、JavaScript 与页面分离(`前端`)
- - 优化数据传输
- - 优化打开文件夹的表现(原来直接提示不可用,现在跳转到百度网盘官方的分享页面)
- - 使用函数减少重复工作的代码量
- - 增加注释
- - 优化前端代码
+ - 此版本可能不稳定,谨慎升级!
- 优化后端逻辑和效率
- - 优化用户体验
- - 优化发生错误时的用户体验
+ - 优化文件加载
+ - 将一些可能会丢失的远程文件复制到本地
+ - 减少访问百度 API 的次数
+ - 优化代码
+ - 正在支持文件夹中(仍在实现中)
+ - 此版本可能不稳定,谨慎升级!
## 坑或不确定
- `static/functions.js`
- - 36 行
\ No newline at end of file
+ - 36 行
+- 此版本可能不稳定,谨慎升级!
\ No newline at end of file
diff --git a/config.php b/config.php
index 27efa0b8..c3410b63 100644
--- a/config.php
+++ b/config.php
@@ -1,6 +1,6 @@
* @link https://imwcr.cn/
@@ -22,7 +22,7 @@
* @link https://lcwebsite.cn/
* @link https://space.bilibili.com/52618445
*/
-if (!defined('init')){ http_response_code(403); header('Content-Type: text/plain; charset=utf-8'); header('Refresh: 3;url=./'); die('想啥呢?直接访问这个文件?'); } // 直接访问处理程序
+if (!defined('init')){ http_response_code(403); header('Content-Type: text/plain; charset=utf-8'); header('Refresh: 3;url=./'); die("想啥呢?\r\n直接访问这个文件?"); } // 直接访问处理程序
define('BDUSS', ''); // 你的 SVIP BDUSS
define('STOKEN', ''); // 你的 SVIP STOKEN
diff --git a/functions.php b/functions.php
index 90b8704d..648c3f63 100644
--- a/functions.php
+++ b/functions.php
@@ -1,12 +1,12 @@
* @link https://imwcr.cn/
@@ -16,63 +16,59 @@
* @link https://lcwebsite.cn/
* @link https://space.bilibili.com/52618445
*/
-if (!defined('init')){ http_response_code(403); header('Content-Type: text/plain; charset=utf-8'); header('Refresh: 3;url=./'); die('想啥呢?直接访问这个文件?'); } // 直接访问处理程序
+if (!defined('init')){ http_response_code(403); header('Content-Type: text/plain; charset=utf-8'); header('Refresh: 3;url=./'); die("想啥呢?\r\n直接访问这个文件?"); } // 直接访问处理程序
// main
-function post($url, $data, array $headerArray) {
- $curl = curl_init();
- curl_setopt($curl, CURLOPT_URL, $url);
- curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); // 忽略ssl
- curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
- curl_setopt($curl, CURLOPT_POST, 1);
- curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
- curl_setopt($curl, CURLOPT_HTTPHEADER, $headerArray);
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
- $output = curl_exec($curl);
- curl_close($curl);
- return $output;
+function setCurl(&$ch, array $header) { // 批处理 curl
+ $a = curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 忽略证书
+ $b = curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // 不检查证书与域名是否匹配(2为检查)
+ $c = curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 以字符串返回结果而非输出
+ $d = curl_setopt($ch, CURLOPT_HTTPHEADER, $header); // 请求头
+ return($a&&$b&&$c&&$d);
}
-function get($url, array $headerArray) {
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, $url);
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // 忽略ssl
- curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($ch, CURLOPT_HTTPHEADER, $headerArray);
- $output = curl_exec($ch);
+function post(string $url, $data, array $header) { // POST 发送数据
+ $ch = curl_init($url);
+ setCurl($ch, $header);
+ curl_setopt($ch, CURLOPT_POST, true); // POST 方法
+ curl_setopt($ch, CURLOPT_POSTFIELDS, $data); // POST 的数据
+ $result = curl_exec($ch);
curl_close($ch);
- return $output;
+ return $result;
}
-function head($url, array $headerArray) { // curl 获取响应头
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, $url);
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // 忽略ssl
- curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); // TRUE 将 curl_exec() 获取的信息以字符串返回,而不是直接输出
- curl_setopt($ch, CURLOPT_HEADER, true); // 返回 response header
- curl_setopt($ch, CURLOPT_NOBODY, true); // 为了节省带宽及时间,只需要响应头
- curl_setopt($ch, CURLOPT_HTTPHEADER, $headerArray);
+function get(string $url, array $header) { // GET 请求数据
+ $ch = curl_init($url);
+ setCurl($ch, $header);
+ $result = curl_exec($ch);
+ curl_close($ch);
+ return $result;
+}
+function head(string $url, array $header) { // 获取响应头
+ $ch = curl_init($url);
+ setCurl($ch, $header);
+ curl_setopt($ch, CURLOPT_HEADER, true); // 返回响应头
+ curl_setopt($ch, CURLOPT_NOBODY, true); // 只要响应头
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
$response = curl_exec($ch);
$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE); // 获得响应头大小
- $header = substr($response, 0, $header_size); // 根据头大小获取头信息
+ $result = substr($response, 0, $header_size); // 根据头大小获取头信息
curl_close($ch);
- return $header;
+ return $result;
}
-function getSubstr($str, $leftStr, $rightStr) {
+function getSubstr(string $str, string $leftStr, string $rightStr) {
$left = strpos($str, $leftStr); // echo '左边:'.$left;
$right = strpos($str, $rightStr, $left); // echo '
右边:'.$right;
if ($left < 0 or $right < $left) return '';
- return substr($str, $left + strlen($leftStr), $right - $left - strlen($leftStr));
+ $left += strlen($leftStr);
+ return substr($str, $left, $right - $left);
}
-function formatSize($b, $times = 0) { // 格式化size显示
- if ($b > 1024) {
- $temp = $b / 1024;
- return formatSize($temp, $times + 1); // 递归处理
+function formatSize(float $size, int $times = 0) { // 格式化size显示
+ if ($size > 1024) {
+ $size /= 1024;
+ return formatSize($size, $times + 1); // 递归处理
} else {
switch ($times) {
case '0':
- $unit = 'B'; break;
+ $unit = ($size == 1) ? 'Byte' : 'Bytes'; break;
case '1':
$unit = 'KB'; break;
case '2':
@@ -90,76 +86,62 @@ function formatSize($b, $times = 0) { // 格式化size显示
default:
$unit = '单位未知';
}
- return sprintf('%.2f', $b) . $unit;
+ return sprintf('%.3f', $size) . $unit;
}
}
-function CheckPassword() { // 检查密码
+function CheckPassword() { // 校验密码
if (IsCheckPassword) {
- if ((!isset($_POST["password"])) || $_POST["password"] != Password) die('
密码错误!