Скручивание к провайдеру смс через базу данных - PullRequest
0 голосов
/ 08 февраля 2012

У меня есть база данных номеров, которые я хочу отправить смс с помощью провайдера смс. Мой код находится здесь вместе с приложением sms api, проблема, с которой я сталкиваюсь как новичок, заключается в том, что их код предназначен для одной смс, и я хочу пройтись по своей базе данных и опубликовать через curl для каждого номера в моей базе данных.

Любая помощь действительно ценится.

$result = mysql_query($stremail);
$emails = array();
while ($row = mysql_fetch_array($result)) {
$recipient =  $row['mobilenumber1'];

class SendSMS
{
private $url = 'http://'; // url of the service
private $username = ''; // 
private $password = ''; // 

private $message_id,$credits_used;

function __construct()
{

}

public function getMessageID()
{
    return $this->message_id;
}

public function getCreditsUsed()
{
    return $this->credits_used;
}


// public function to commit the send
public function send($message,$recipient,$originator)
{
    $url_array= array('message'=>$message,'mobile_number'=>$recipient,'originator'=>$originator,'username'=>$this->username, 'password'=>$this->password);
    $url_string = $data = http_build_query($url_array, '', '&');

    // we're using the curl library to make the request
    $curlHandle = curl_init();
    curl_setopt($curlHandle, CURLOPT_URL, $this->url);
    curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curlHandle, CURLOPT_POSTFIELDS, $url_string);
    curl_setopt($curlHandle, CURLOPT_POST, 1);
    $responseBody = curl_exec($curlHandle);
    $responseInfo  = curl_getinfo($curlHandle);
    curl_close($curlHandle);

    return $this->handleResponse($responseBody,$responseInfo);
}


private function handleResponse($body,$info)
{
    if ($info['http_code']==200){ // successful submission
        $xml_obj = simplexml_load_string($body);
        // extract message id and credit usuage
        $this->message_id = (int) $xml_obj->message_id;
        $this->credits_used = (int) $xml_obj->credits_used;
        return true;
    }
    else{

        $this->message_id = null;
        $this->credits_used = null;

        // error handling
        return false;
    }

}

}
$sms = new SendSMS();
$sms->send($message1,$recipient,"header");
echo "sent!";


}

Ответы [ 2 ]

1 голос
/ 08 февраля 2012
class SendSMS
{
    private $url = 'http://'; // url of the service
    private $username = ''; // 
    private $password = ''; // 

    private $message_id,$credits_used;

    function __construct()
    {

    }

    public function getMessageID()
    {
        return $this->message_id;
    }

    public function getCreditsUsed()
    {
        return $this->credits_used;
    }


    // public function to commit the send
    public function send($message,$recipient,$originator)
    {
        $url_array= array('message'=>$message,'mobile_number'=>$recipient,'originator'=>$originator,'username'=>$this->username, 'password'=>$this->password);
        $url_string = $data = http_build_query($url_array, '', '&');

        // we're using the curl library to make the request
        $curlHandle = curl_init();
        curl_setopt($curlHandle, CURLOPT_URL, $this->url);
        curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curlHandle, CURLOPT_POSTFIELDS, $url_string);
        curl_setopt($curlHandle, CURLOPT_POST, 1);
        $responseBody = curl_exec($curlHandle);
        $responseInfo  = curl_getinfo($curlHandle);
        curl_close($curlHandle);

        return $this->handleResponse($responseBody,$responseInfo);
    }


    private function handleResponse($body,$info)
    {
        if ($info['http_code']==200){ // successful submission
            $xml_obj = simplexml_load_string($body);
            // extract message id and credit usuage
            $this->message_id = (int) $xml_obj->message_id;
            $this->credits_used = (int) $xml_obj->credits_used;
            return true;
        }
        else{

            $this->message_id = null;
            $this->credits_used = null;

            // error handling
            return false;
        }

    }

}

$sms = new SendSMS();

$result = mysql_query($stremail);

while ($row = mysql_fetch_array($result)) {

    $recipient = $row['mobilenumber1'];
    $sms->send($message1,$recipient,"header");

}
0 голосов
/ 09 февраля 2012

Если ваш провайдер SMS не разрешает вам отправлять большие объемы SMS через интерфейс API, я рекомендую вам услуги HQSMS.com SMS.В коде HQSMS вы просто назначаете переменной $ большее число, разделенное запятой.В одном запросе POST может быть до 10000 номеров.Более подробную информацию и примеры вы можете найти на http://www.hqsms.com/help-api/https-api-interface/https-specification. HQSMS.com - поставщик высококачественных SMS, который предлагает вам пигменты с неограниченным сроком действия и глобальным охватом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...