tv/extend/api/afcrc.php
2025-11-28 14:28:58 +08:00

71 lines
4.3 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/*
Name:请求验证码
Version:1.0
Author:乐酷
Author QQ:3178156778
Author Url:shouq.sujie520.cn
*/
if (!isset($app_res) or !is_array($app_res)) out(100); //如果需要调用应用配置请先判断是否加载app配置
if ($app_res['smtp_state'] == 'n') out(121, $app_res); //判断邮箱是否可用
if ($app_res['logon_way'] == 1) out(164, $app_res); //不是账号登录方式不允许使用当前操作
$email = isset($data_arr['email']) && !empty($data_arr['email']) ? purge($data_arr['email']) : out(110, '邮箱账号为空', $app_res); //请输入账号
$type = isset($data_arr['type']) ? purge($data_arr['type']) : 'reg'; //验证码类型,reg=注册seek=找回密码
if (!check_email($email)) out(116, '邮箱不合法', $app_res); //账号长度5~11位不支持中文和特殊字符
$code = mt_rand(1000, 9999); //生成验证码
if ($type == '' or $type == 'reg') {
if ($app_res['reg_state'] == 'n') out(103, $app_res['reg_notice'], $app_res); //判断是否可注册
$res_user = Db::table('user')->where(['email' => $email, 'appid' => $appid])->find(); //false
if ($res_user) out(115, '您的邮箱已经注册过账号了', $app_res); //账号已存在
$title = $app_res['name'] . '注册账号';
$muban = "您注册账号的验证码是:" . $code . ",请不要把验证码泄露给其他人<br/>【" . $app_res['name'] . "";
} else if ($type == 'seek') {
$res_user = Db::table('user')->where(['email' => $email, 'appid' => $appid])->find(); //false
if (!$res_user) out(122, $app_res); //账号不存在
if ($res_user['ban'] > time() || $res_user['ban'] == 999999999) out(114, $res_user['ban_notice'], $app_res); //账号被禁用
if (defined('USER_LOG') && USER_LOG == 1) {
Db::table('log')->add(['uid' => $res_user['id'], 'type' => $act, 'time' => time(), 'ip' => getip(), 'appid' => $appid]); //记录日志
}
$title = $app_res['name'] . '找回密码';
$muban = "您找回密码的验证码是:" . $code . ",请不要把验证码泄露给其他人<br/>【" . $app_res['name'] . "";
} else if ($type == 'untie') {
$res_user = Db::table('user')->where(['email' => $email, 'appid' => $appid])->find(); //false
if (!$res_user) out(122, $app_res); //邮箱不存在
if ($res_user['ban'] > time() || $res_user['ban'] == 999999999) out(114, $res_user['ban_notice'], $app_res); //账号被禁用
if (defined('USER_LOG') && USER_LOG == 1) {
Db::table('log')->add(['uid' => $res_user['id'], 'type' => $act, 'time' => time(), 'ip' => getip(), 'appid' => $appid]); //记录日志
}
$title = $app_res['name'] . '解绑邮箱';
$muban = "您解绑邮箱的验证码是:" . $code . ",请不要把验证码泄露给其他人<br/>【" . $app_res['name'] . "";
} else if ($type == 'bind') {
$res_user = Db::table('user')->where(['email' => $email, 'appid' => $appid])->find(); //false
if ($res_user) out(115, '您的邮箱已经绑定过账号了', $app_res); //账号已存在
$title = $app_res['name'] . '绑定邮箱';
$muban = "您绑定邮箱的验证码是:" . $code . ",请不要把验证码泄露给其他人<br/>【" . $app_res['name'] . "";
}
$res_code = Db::table('captcha')->where(['email' => $email, 'appid' => $appid])->order('id DESC')->find(); //false
if ($res_code && $res_code['time'] > time() - 180) out(123, $app_res); //验证码频率过快
$config = array();
$config['from_email'] = $app_res['smtp_user']; //发信邮箱
$config['smtp_user'] = $app_res['smtp_user']; //发信邮箱
$config['smtp_port'] = $app_res['smtp_port']; //发信端口
$config['smtp_host'] = $app_res['smtp_host']; //发信服务器
$config['from_name'] = $app_res['name']; //发信标题
$config['smtp_pass'] = $app_res['smtp_pass']; //发信密码
$config['reply_email'] = $app_res['smtp_user']; //回复电子邮件
$config['reply_name'] = $app_res['name']; //回复名称
$config['email_to'] = $email; //收信人
if ($app_res['smtp_user'] == '' or $app_res['smtp_pass'] == '') json(201, '验证码不可用');
$rs = send_mail($config['email_to'], $app_res['name'], $title, $muban, '', $config);
if ($rs) {
$time = time();
$add_res = Db::table('captcha')->add(['email' => $email, 'code' => $code, 'time' => $time, 'appid' => $appid]);
if ($add_res) {
out(200, '发送成功', $app_res); //验证码发送成功
}
out(201, '验证码入库失败', $app_res); //验证码发送失败
} else {
out(201, '发送失败', $app_res); //验证码发送失败
}
?>