<?php
header('Content-Type: application/json');
/**
* 生成密码
*
* @param int $length 密码长度
* @param bool $lowercase 包含小写字母
* @param bool $uppercase 包含大写字母
* @param bool $numbers 包含数字
* @param bool $symbols 包含特殊字符
* @return string 生成的密码
*/
function generatePassword($length = 12, $lowercase = true, $uppercase = true, $numbers = true, $symbols = true) {
// 字符集合
$characterSets = [];
if ($lowercase) {
$characterSets[] = 'abcdefghijklmnopqrstuvwxyz';
}
if ($uppercase) {
$characterSets[] = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
}
if ($numbers) {
$characterSets[] = '0123456789';
}
if ($symbols) {
$characterSets[] = '!@#$%^&*()_+[]{}|;:,.<>?';
}
// 至少选择一个字符集
if (empty($characterSets)) {
$characterSets[] = 'abcdefghijklmnopqrstuvwxyz';
}
// 将字符集合合并为一个字符串
$characters = implode('', $characterSets);
// 生成密码
$password = '';
$charactersLength = strlen($characters);
for ($i = 0; $i < $length; $i++) {
$password .= $characters[rand(0, $charactersLength - 1)];
}
return $password;
}
// 获取请求中的参数
$passwordLength = isset($_GET['length']) ? max(8, min(128, (int)$_GET['length'])) : 12; // 密码长度范围在8到128之间
$lowercase = isset($_GET['lowercase']) ? filter_var($_GET['lowercase'], FILTER_VALIDATE_BOOLEAN) : true;
$uppercase = isset($_GET['uppercase']) ? filter_var($_GET['uppercase'], FILTER_VALIDATE_BOOLEAN) : true;
$numbers = isset($_GET['numbers']) ? filter_var($_GET['numbers'], FILTER_VALIDATE_BOOLEAN) : true;
$symbols = isset($_GET['symbols']) ? filter_var($_GET['symbols'], FILTER_VALIDATE_BOOLEAN) : true;
// 生成密码
$password = generatePassword($passwordLength, $lowercase, $uppercase, $numbers, $symbols);
// 返回 JSON 格式的响应
echo json_encode(['code' => 0, 'password' => $password]);
?>
端点
/generate-password.php
请求参数
请求方法: GET
length
(可选): 密码长度,默认为 12。lowercase
(可选): 包含小写字母,值为true
或false
,默认为true
。uppercase
(可选): 包含大写字母,值为true
或false
,默认为true
。numbers
(可选): 包含数字,值为true
或false
,默认为true
。symbols
(可选): 包含特殊字符,值为true
或false
,默认为true
。
示例请求
/generate-password.php?length=16&lowercase=true&uppercase=true&numbers=true&symbols=true
示例响应
{ "password": "A5b#vE!9rP2uQ@Kt" }
© 版权声明
本文为原创作品,版权归春枫博客所有。未经允许,禁止一切形式的盗用,违者将依法追究。谢谢您的合作!
THE END
暂无评论内容