/** * отправляет письмо на почту для проверки * @param string $mode * @return bool */ public function verification($mode) { $site = URL; $mail_url = 'http://jurasikt.u-host.in/welcom/mail'; //секретный ключ для подписи транзакций $sign = 'dQjfu3'; $salt = STD::rand(); $token = $this->hash_data($this->_uid, $this->_salt . $salt); $token = json_encode(array('uid' => $this->_uid, 'salt' => $salt, 'hash' => $token['hash'])); $token = base64_encode($token); $message = 'Для потверждения почты перейдите по ссылке ' . $site . "user/email?token={$token}"; $subject = 'Потверждение email'; // отправка почты через удаленный хост if ($mode == 'remote') { //произвольное не уменьшающиеся число для включения в транцакцию $nonce = preg_replace('/0\\.(\\d+) (\\d+)/', '${2}${1}', microtime()); $ch = curl_init(); $form = http_build_query(array('nonce' => $nonce, 'to' => $this->_email, 'subject' => $subject, 'message' => $message)); $headers = array('sign: ' . hash_hmac('sha512', $form, $sign)); curl_setopt_array($ch, array(CURLOPT_URL => $mail_url, CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => $headers, CURLOPT_POSTFIELDS => $form)); $ans = json_decode(curl_exec($ch)); return !$ans->error; } else { return mail($this->_email, $subject, $message); } }