共计 1310 个字符,预计需要花费 4 分钟才能阅读完成。
结尾的话
最近在开发 PHP 验证码我的项目,须要应用到不同的语言包和及时的预警短信告诉。上面我就好好的总结一下。
语言包
默认应用浏览器语言,选项别离有主动(辨认浏览器语言)、简体中文、繁体英文、英文。
self.lang = self.get_lang() # 当前页语言包 | |
def get_lang(self): | |
"""获取语言包""" | |
try: | |
dLang = self.data.get("lang", "auto") # 获取利用配置 | |
if dLang == "auto": # 主动 | |
dLang = self.kg.get("HTTP_ACCEPT_LANGUAGE", "zh-cn").split(',')[0].lower() # 获取浏览器语言,取逗号前字符且转成小写 | |
if dLang == "zh-hk": dLang = "zh-tw" | |
if dLang in ("en-us", "en-gb"): dLang = "en" | |
if not exists(url_absolute(f"config/language/{dLang}.py")): dLang = "zh-cn" | |
r = import_module(f'config.language.{dLang}').lang.get(self.kg["PY_SELF"], {}) # 加载页面对象 | |
except Exception: | |
r = {} | |
return r |
预警信息
预警信息启用
开启预警信息告诉,填写告诉的接管邮箱和接管手机号,并设置验证码的每小时预警数量。当超过预警数量,零碎将发送告诉。
def excess(self, between=0): | |
""" | |
申请 / 验证次数检测 | |
:param between: [int] 0 检测申请次数是否超额,1 检测验签次数是否超额,2 检测验签次数是否超额 | |
:return [int]: 0 失常,未超标,1 小时超标、2 日限超标、3 月限超标 | |
""" | |
# 统计的字段名及会员组限度字段名 | |
field = ["request", "verify", "sign"][between] | |
# 时 / 天 / 月工夫戳 | |
ceiling = date(format="%Y%m%d%H") | |
t = [numeric(ceiling), numeric(ceiling[:-2] + "00"), numeric(ceiling[:-4] + "0000")] | |
# 以后用户组限度额 [-1, -1, 9000] | |
group_limit = json2dict(self.data[field]) | |
for i in range(0, 3): | |
if group_limit[i] != -1: | |
count = self.db.list( | |
table="statistics", | |
field=f'SUM(`{field}`) as rSUM', | |
where=f'`uid` = {self.data["uid"]} && `time` >= {t[i]}', | |
limit=1, shift=1, | |
)["rSUM"] | |
if count > group_limit[i]: | |
return i + 1 | |
return 0 |
总结
最初,我大家做了个示例体验:https://www.kgcaptcha.com/demo/, 同时也把相干代码上传到 GitHub,https://github.com/KgCaptcha。
正文完