在codeigniter中调用此函数时发送两次消息

时间:2015-04-17 06:41:40

标签: php codeigniter

当我调用下面的函数时,我的数据库中的字段将响应作为发送(仅一次),但是当我检查移动设备时,它一次发送了两条相同的消息。

public function sendverifymsg($phone, $verifycode) {

            $user = "xx";
            $password = "xx";
            $api_id = "xx";
            $baseurl = "http://promo.blastsms.in/sendsms.jsp?";
            $text = urlencode("Thank you for registering with CARE MY KIDEE..  VERIFY CODE =" . $verifycode . "Please verify your mobile number immedi`enter code here`ately for our value added services.... ");
            $version = "3";

             //Define header array for cURL requestes
            $header = array('Contect-Type:application/xml', 'Accept:application/xml');
            // auth call
            $url = "$baseurl/&user=$user&password=$password&mobiles=$phone&sms=$text&senderid=$api_id&version=$version";
            //Define http request nouns
            $ls = $url . "landscapes";
            //Initialise cURL object
            $ch = curl_init();
            //Set cURL options
            curl_setopt_array($ch, array(
                CURLOPT_HTTPHEADER => $header, //Set http header options
                CURLOPT_URL => $ls, //URL sent as part of the request 
                CURLOPT_NOBODY => 1,
                CURLOPT_FAILONERROR => TRUE,
                CURLOPT_RETURNTRANSFER => 1,
                CURLOPT_HTTPAUTH => CURLAUTH_BASIC, //Set Authentication to BASIC
                CURLOPT_USERPWD => $user . ":" . $password, //Set username and password options
                CURLOPT_HTTPGET => TRUE //Set cURL to GET method
            ));
            //Define variable to hold the returned data from the cURL request
            $data = curl_exec($ch);
            if (curl_exec($ch) !== FALSE) {
                $matches = array();
                // we use ? because we want to stop at first </error-description>
                // we use preg_match because we want only one error-description text
                preg_match('/<error-description>(.+?)<\/error-description>/', $data, $matches);
                $errorDescription = isset($matches[1]) ? $matches[1] : '';
                if ($errorDescription) {
                    $sess_id = $this->session->userdata('id');
                    $this->generatedate_model->sendsmsdetails($errorDescription, $phone, $sess_id);
                } else {
                    $errorDescription = 'verify';
                    $sess_id = $this->session->userdata('id');
                    $this->generatedate_model->sendsmsdetails($errorDescription, $phone, $sess_id);
                }
                return true;
            } else {  
                $matches = array();
    // we use ? because we want to stop at first </error-description>
    // we use preg_match because we want only one error-description text
                preg_match('/<error-description>(.+?)<\/error-description>/', $data, $matches);
                $errorDescription = isset($matches[1]) ? $matches[1] : '';
    //            $errorDescription = "failed";
                $sess_id = $this->session->userdata('id');
                $this->generatedate_model->sendsmsdetails($errorDescription, $phone, $sess_id);
                return false;
            }
            //Close cURL connection
            curl_close($ch);
}

1 个答案:

答案 0 :(得分:1)

试试吧

$data = curl_exec($ch);
 if (curl_exec($ch) !== FALSE) {

修改

$data = curl_exec($ch);
 if ($data !== FALSE) {

您执行拖车时间 CURL