/** * 产生验证码 * */ public function makecodeOp() { $refererhost = parse_url($_SERVER['HTTP_REFERER']); $refererhost['host'] .= !empty($refererhost['port']) ? ':' . $refererhost['port'] : ''; $seccode = makeSeccode($_GET['nchash']); @header("Expires: -1"); @header("Cache-Control: no-store, private, post-check=0, pre-check=0, max-age=0", FALSE); @header("Pragma: no-cache"); echo \Shopnc\Lib::imager()->createCaptcha($seccode, 90, 34); }
/** * 绑定邮箱 * @return [type] [description] */ public function modify_emailOp() { $model_member = Model('member'); $obj_validate = new Validate(); $obj_validate->validateparam = array(array("input" => $_POST["email"], "require" => "true", 'validator' => 'email', "message" => '请正确填写邮箱地址')); $error = $obj_validate->validate(); if ($error != '') { output_error($error); } if ($this->member_info['member_email_bind'] == 1) { if (empty($_POST['captcha'])) { output_error("请正确填写手机验证码"); } $result_checkcode = self::checkCode(intval($_POST['captcha'])); if ($result_checkcode['result'] != 'succ') { output_error($result_checkcode['message']); } } //发送频率验证 $member_common_info = $model_member->getMemberCommonInfo(array('member_id' => $this->member_info['member_id'])); if (!empty($member_common_info['send_email_time']) && TIMESTAMP - $member_common_info['send_email_time'] < 58) { output_error('请60秒以后再次发送邮件'); } $condition = array(); $condition['member_email'] = $_POST['email']; $condition['member_id'] = array('neq', $this->member_info['member_id']); $member_info = $model_member->getMemberInfo($condition, 'member_id'); if ($member_info) { output_error('该邮箱已被使用'); } $data = array(); $data['member_email'] = $_POST['email']; $data['member_email_bind'] = 0; $update = $model_member->editMember(array('member_id' => $this->member_info['member_id']), $data); if (!$update) { output_error('系统发生错误,如有疑问请与管理员联系'); } $seed = random(6); $data = array(); $data['auth_code'] = $seed; $data['send_acode_time'] = TIMESTAMP; $data['send_email_time'] = TIMESTAMP; $data['send_acode_times'] = array('exp', 'send_acode_times+1'); $update = $model_member->editMemberCommon($data, array('member_id' => $this->member_info['member_id'])); if (!$update) { output_error('系统发生错误,如有疑问请与管理员联系'); } $uid = base64_encode(encrypt($this->member_info['member_id'] . ' ' . $_POST["email"])); $verify_url = SHOP_SITE_URL . '/index.php?act=login&op=bind_email&uid=' . $uid . '&hash=' . md5($seed); $model_tpl = Model('mail_templates'); $tpl_info = $model_tpl->getTplInfo(array('code' => 'bind_email')); $param = array(); $param['site_name'] = C('site_name'); $param['user_name'] = $this->member_info['member_name']; $param['verify_url'] = $verify_url; $subject = ncReplaceText($tpl_info['title'], $param); $message = ncReplaceText($tpl_info['content'], $param); \Shopnc\Lib::messager()->send($_POST["email"], $subject, $message); output_data("验证邮件已经发送至您的邮箱,请于24小时内登录邮箱并完成验证!如果您始终未收到邮件,请于60秒后重新发送" . $verify_url); }
/** * 找回密码的发邮件处理 */ public function send_emailOp() { $email = $_POST['email']; if (empty($email)) { output_error('邮箱不能为空'); } $model_member = Model('member'); $member = $model_member->getMemberInfo(array('member_email' => $email)); if (empty($member) or !is_array($member)) { output_error('该邮箱未被注册'); } //发送频率验证 $member_common_info = $model_member->getMemberCommonInfo(array('member_id' => $member['member_id'])); if (!empty($member_common_info['send_email_time']) && TIMESTAMP - $member_common_info['send_email_time'] < 58) { output_error('请60秒以后再次发送邮件'); } $seed = random(6); $data = array(); $data['auth_code'] = $seed; $data['send_acode_time'] = TIMESTAMP; $data['send_email_time'] = TIMESTAMP; $data['send_acode_times'] = array('exp', 'send_acode_times+1'); $update = $model_member->editMemberCommon($data, array('member_id' => $member['member_id'])); if (!$update) { output_error('系统发生错误,如有疑问请与管理员联系'); } $model_tpl = Model('mail_templates'); $tpl_info = $model_tpl->getTplInfo(array('code' => 'reset_pwd')); $param = array(); $param['site_name'] = C('site_name'); $param['user_name'] = $member['member_name']; $param['site_url'] = $_POST['site_url']; $param['verify_url'] = $param['site_url'] . '/login/find_password_email.html?uid=' . base64_encode(encrypt($member['member_id'] . ' ' . $email)) . '&hash=' . md5($seed); $subject = ncReplaceText($tpl_info['title'], $param); $message = ncReplaceText($tpl_info['content'], $param); \Shopnc\Lib::messager()->send($email, $subject, $message); output_data('成功发送找回密码邮件,请登录邮箱及时查收', true); }