Ejemplo n.º 1
0
 /**
  * отправляет письмо на почту для проверки
  * @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);
     }
 }