180 lines
5.2 KiB
PHP
180 lines
5.2 KiB
PHP
<?php
|
||
header('Access-Control-Allow-Origin: *');
|
||
header('Access-Control-Allow-Methods: POST');
|
||
header('Access-Control-Allow-Headers: Content-Type');
|
||
session_start();
|
||
// 自动将 JSON 请求体转为 $_POST
|
||
if ($_SERVER['CONTENT_TYPE'] === 'application/json') {
|
||
$input = file_get_contents('php://input');
|
||
$data = json_decode($input, true);
|
||
if ($data) {
|
||
$_POST = array_merge($_POST, $data);
|
||
}
|
||
}
|
||
|
||
|
||
//祖传适配CDN
|
||
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
|
||
// 获取 'X-Forwarded-For' 中的第一个 IP 地址
|
||
$ipArray = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
|
||
$_SERVER['REMOTE_ADDR'] = trim($ipArray[0]); // 更新 REMOTE_ADDR
|
||
} elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
|
||
// 如果 'X-Forwarded-For' 不存在,则尝试使用 'HTTP_CLIENT_IP'
|
||
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CLIENT_IP'];
|
||
}
|
||
|
||
|
||
|
||
//祖传输出
|
||
$Out = "{}";
|
||
function 定义输出($key,$value) {
|
||
global $Out;
|
||
$Out = json_decode($Out, true);
|
||
$Out[$key] = $value;
|
||
$Out = json_encode($Out, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
|
||
}
|
||
|
||
function 终止并输出() {
|
||
global $Out;
|
||
die($Out);
|
||
}
|
||
|
||
//祖传数据库函数
|
||
function 数据库运行($sql) {
|
||
// 数据库连接参数
|
||
$servername = "110.40.52.75";
|
||
$username = "fuxstohostv4";
|
||
$password = "yxh20080130";
|
||
$dbname = "fuxstohostv4";
|
||
|
||
// 创建数据库连接
|
||
$conn = new mysqli($servername, $username, $password, $dbname);
|
||
|
||
// 检查连接是否成功
|
||
if ($conn->connect_error) {
|
||
return "连接失败: " . $conn->connect_error;
|
||
}
|
||
|
||
// 执行 SQL 查询
|
||
$result = $conn->query($sql);
|
||
|
||
// 查询失败,返回错误信息
|
||
if ($result === FALSE) {
|
||
$conn->close();
|
||
return "查询失败: " . $conn->error;
|
||
}
|
||
|
||
// 如果是 SELECT 查询,自动处理并返回结果
|
||
if (stripos($sql, 'SELECT') === 0) {
|
||
// 创建一个数组存储所有的查询结果
|
||
$data = [];
|
||
while ($row = $result->fetch_assoc()) {
|
||
$data[] = $row; // 将每一行的数据加入结果数组
|
||
}
|
||
$conn->close();
|
||
return $data; // 返回查询结果
|
||
}
|
||
|
||
// 对于非 SELECT 查询(INSERT, UPDATE, DELETE)直接返回 true
|
||
$conn->close();
|
||
return true;
|
||
}
|
||
|
||
|
||
|
||
// 生成随机字符串的函数
|
||
function 生成随机字符串($长度, $字符集, $字符集长度) {
|
||
$随机字符串 = '';
|
||
for ($i = 0; $i < $长度; $i++) {
|
||
$随机字符串 .= $字符集[rand(0, $字符集长度 - 1)];
|
||
}
|
||
return $随机字符串;
|
||
}
|
||
|
||
function 唯一随机字符串($长度) {
|
||
// 定义字符集
|
||
$字符集 = 'abcdefghijklmnopqrstuvwxyz0123456789';
|
||
$字符集长度 = strlen($字符集);
|
||
|
||
// 文件路径,用来存储已生成的字符串
|
||
$文件路径 = 'generated_strings.txt';
|
||
|
||
// 检查文件是否存在,如果不存在则创建
|
||
if (!file_exists($文件路径)) {
|
||
file_put_contents($文件路径, ''); // 创建一个空文件
|
||
}
|
||
|
||
// 生成唯一字符串
|
||
do {
|
||
$随机字符串 = 生成随机字符串($长度, $字符集, $字符集长度);
|
||
$已生成的字符串 = file($文件路径, FILE_IGNORE_NEW_LINES);
|
||
} while (in_array($随机字符串, $已生成的字符串));
|
||
|
||
// 将新生成的字符串保存到文件
|
||
file_put_contents($文件路径, $随机字符串 . PHP_EOL, FILE_APPEND);
|
||
|
||
return $随机字符串;
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
function JSON解析($json) {
|
||
return @json_decode($json,true);
|
||
}
|
||
|
||
function 转JSON($json) {
|
||
return @json_encode($json, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
|
||
}
|
||
|
||
|
||
|
||
|
||
/**
|
||
* 生成高颜值不重复产品编号
|
||
* 特点:排除易混淆字符、智能查重、自动保存记录、美观格式化
|
||
*/
|
||
function 唯一字符串() {
|
||
// 配置参数(可自行调整)
|
||
$charSet = [
|
||
'letters' => 'ABCDEFGHJKLMNPQRSTUVWXYZ', // 24个大写字母(排除I/O)
|
||
'digits' => '23456789', // 8个数字(排除0/1)
|
||
];
|
||
$pattern = 'AAA-111-AAA'; // 定义编号格式:3字母 + 3数字 + 3字母
|
||
$storageFile = 'product_codes.txt'; // 存储文件
|
||
|
||
do {
|
||
// 根据格式生成各部分
|
||
$codeParts = [];
|
||
foreach (explode('-', $pattern) as $segment) {
|
||
$type = preg_match('/^A+$/', $segment) ? 'letters' : 'digits';
|
||
$codeParts[] = generateSegment($charSet[$type], strlen($segment));
|
||
}
|
||
|
||
// 组合完整编码(去掉分隔符后确保10位)
|
||
$fullCode = str_replace('-', '', implode('', $codeParts));
|
||
|
||
// 检查是否已存在(使用内存加速查询)
|
||
$existingCodes = file_exists($storageFile)
|
||
? array_flip(file($storageFile, FILE_IGNORE_NEW_LINES))
|
||
: [];
|
||
} while (isset($existingCodes[$fullCode]));
|
||
|
||
// 保存新编码并返回格式化版本
|
||
file_put_contents($storageFile, $fullCode.PHP_EOL, FILE_APPEND);
|
||
return implode('-', $codeParts);
|
||
}
|
||
|
||
/**
|
||
* 生成指定长度的字符段
|
||
*/
|
||
function generateSegment($characters, $length) {
|
||
$segment = '';
|
||
$maxIndex = strlen($characters) - 1;
|
||
for ($i = 0; $i < $length; $i++) {
|
||
$segment .= $characters[random_int(0, $maxIndex)];
|
||
}
|
||
return $segment;
|
||
}
|