verifycode.ctrl.php 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. /**
  3. * [WeEngine System] Copyright (c) 2014 WE7.CC
  4. * WeEngine is NOT a free software, it under the license terms, visited http://www.we7.cc/ for more details.
  5. */
  6. defined('IN_IA') or exit('Access Denied');
  7. load()->model('setting');
  8. $custom_sign = safe_gpc_string($_GPC['custom_sign']);
  9. $_W['uniacid'] = intval($_GPC['uniacid']);
  10. if (empty($_W['uniacid'])) {
  11. $uniacid_arr = array(
  12. 'name' => '短信验证码',
  13. );
  14. } else {
  15. $uniacid_arr = pdo_fetch('SELECT * FROM ' . tablename('uni_account') . ' WHERE uniacid = :uniacid', array(':uniacid' => $_W['uniacid']));
  16. if(empty($uniacid_arr)) {
  17. exit('非法访问');
  18. }
  19. }
  20. $receiver = trim($_GPC['receiver']);
  21. if(empty($receiver)){
  22. exit('请输入邮箱或手机号');
  23. } elseif(preg_match(REGULAR_MOBILE, $receiver)){
  24. $receiver_type = 'mobile';
  25. } elseif(preg_match("/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/", $receiver)) {
  26. $receiver_type = 'email';
  27. } else {
  28. exit('您输入的邮箱或手机号格式错误');
  29. }
  30. $sql = 'DELETE FROM ' . tablename('uni_verifycode') . ' WHERE `createtime`<' . (TIMESTAMP - 1800);
  31. pdo_query($sql);
  32. $sql = 'SELECT * FROM ' . tablename('uni_verifycode') . ' WHERE `receiver`=:receiver AND `uniacid`=:uniacid';
  33. $pars = array();
  34. $pars[':receiver'] = $receiver;
  35. $pars[':uniacid'] = $_W['uniacid'];
  36. $row = pdo_fetch($sql, $pars);
  37. $record = array();
  38. $code = random(6, true);
  39. if(!empty($row)) {
  40. if($row['total'] >= 5) {
  41. exit('您的操作过于频繁,请稍后再试');
  42. }
  43. $record['total'] = $row['total'] + 1;
  44. $record['verifycode'] = $code;
  45. $record['createtime'] = TIMESTAMP;
  46. } else {
  47. $record['uniacid'] = $_W['uniacid'];
  48. $record['receiver'] = $receiver;
  49. $record['verifycode'] = $code;
  50. $record['total'] = 1;
  51. $record['createtime'] = TIMESTAMP;
  52. }
  53. if(!empty($row)) {
  54. pdo_update('uni_verifycode', $record, array('id' => $row['id']));
  55. } else {
  56. pdo_insert('uni_verifycode', $record);
  57. }
  58. if($receiver_type == 'email') {
  59. load()->func('communication');
  60. $content = "您的邮箱验证码为: {$code} 您正在使用{$uniacid_arr['name']}相关功能, 需要你进行身份确认.";
  61. $result = ihttp_email($receiver, "{$uniacid_arr['name']}身份确认验证码", $content);
  62. } else {
  63. load()->model('cloud');
  64. $r = cloud_prepare();
  65. if(is_error($r)) {
  66. exit($r['message']);
  67. }
  68. $setting = uni_setting($_W['uniacid'], 'notify');
  69. $content = "您的短信验证码为: {$code} 您正在使用{$uniacid_arr['name']}相关功能, 需要你进行身份确认. ".random(3);
  70. $result = cloud_sms_send($receiver, $content, array(), $custom_sign);
  71. }
  72. if(is_error($result)) {
  73. header('error: ' . urlencode($result['message']));
  74. exit($result['message']);
  75. }
  76. exit('success');