/** * Отправить пользователю код для подтверждения телефона */ public function actionSendSms($echo = true, $fields_are_set = false) { if ($_SESSION['send_sms_time'] > time()) { return; } require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/captcha.php"; session_start(); $this->setFieldInfo('captchanum', __paramInit('string', null, 'captchanum')); $num = __paramInit('string', null, 'rndnum'); $_SESSION['reg_captcha_num'] = $this->captchanum; $captcha = new captcha($this->captchanum); if (!$captcha->checkNumber($num)) { unset($_SESSION['reg_captcha_num']); unset($_SESSION["regform_captcha_entered"]); echo json_encode(array("err_msg" => iconv("WINDOWS-1251", "UTF-8//IGNORE", "Вы ввели неверный код."), "target" => "captchanum")); exit; } else { $_SESSION["regform_captcha_entered"] = true; } $code = rand(1000, 9999); require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/sms_gate_a1.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/sbr_meta.php"; $phone = $fields_are_set ? $this->phone : trim(__paramInit('string', null, 'phone')); $phone = $_SESSION["reg_phone"] = preg_replace("#[\\D]#", "", $phone); $sms = new sms_gate_a1($phone); $sRole = $fields_are_set ? $this->role == 2 ? 'emp' : 'frl' : __paramInit('string', null, 'role'); if ((is_release() || $phone != 71111112222) && sbr_meta::findSafetyPhone($phone, $sRole)) { if ($echo) { echo json_encode(array("err_msg" => iconv("WINDOWS-1251", "UTF-8//IGNORE", "Пользователь с таким номером уже зарегистрирован"))); exit; } else { $this->error['phone'] = 'Пользователь с таким номером уже зарегистрирован'; $this->errno['phone'] = 3; } } $msg = "Ваш код активации на free-lance.ru \n{$code}"; $count = "5"; if (is_release() || $phone != 71111112222) { $id = $sms->sendSMS($msg, "text", null, true); //$code = 7777; // !! $message = $sms->getLimitMessage($count); } else { $code = 7777; $id = 123; } if ((int) $id > 0) { $_SESSION['send_sms_time'] = strtotime('+1 min'); $_SESSION["reg_sms_isnn"] = $sms->getISNN(); $_SESSION["reg_sms_data"] = $msg; $_SESSION["reg_sms_date_send"] = date('Y-m-d H:i:s'); $_SESSION['smsIsRequested'] = 1; $_SESSION['smsCode'] = $code; if ($echo) { echo json_encode(array("mid" => $id, "count" => $count, "message" => iconv("WINDOWS-1251", "UTF-8//IGNORE", $message), "LIMIT" => sms_gate::SMS_ON_NUMBER_PER_24_HOURS)); exit; } } else { $error_text = "Не удалось отправить сообщение. Попробуйте через несколько минут."; $target = ""; if ($sms->limitIsExceed()) { $error_text = sms_gate::LIMIT_EXCEED_LINK_TEXT; $target = "limit_exceed"; } if ($echo) { echo json_encode(array("err_msg" => iconv("WINDOWS-1251", "UTF-8//IGNORE", $error_text), "target" => $target)); exit; } else { $this->error['actionSendSms'] = $error_text; } } return $id; }
function getsms($phone) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/sms_gate_a1.php"; if ($_SESSION['send_sms_time'] > time()) { return; } $_SESSION['send_sms_time'] = strtotime("+" . sms_gate::TIMEOUT_SEND); // таймаут до следующей отсылки СМС if (!preg_match("/^\\+[0-9]{10,15}/mi", $phone)) { $sms = new sms_gate_a1($phone); $msg = $sms->getTextMessage(sms_gate::TYPE_ACTIVATE, $sms->generateCode()); $success = $sms->sendSMS($msg); if ($success) { $message = $sms->getLimitMessage($count); } else { $message = sms_gate::LIMIT_EXCEED_LINK_TEXT; $count = sms_gate::SMS_ON_NUMBER_PER_24_HOURS; } $_SESSION['send_sms_phone'] = $phone; $_SESSION['send_sms_code'] = $sms->getAuthCode(); $result = array('success' => true, 'message' => iconv("Windows-1251", "UTF-8//IGNORE", $message), 'count' => $count); if (SMS_GATE_DEBUG) { $result['c'] = $sms->getAuthCode(); } echo json_encode($result); return; } return; }