在PHP中集成SMS网关时出现问题

时间:2015-09-06 07:35:15

标签: php

在我的PHP项目中,我想集成SMS网关。

我已经集成了HSPSMS短信网关。

他们为此提供了一个API,但遗憾的是我无法以正确的方式调用它。用户成功注册到网站后,我已经调用了API,用于向用户发送有关相同的信息,以通知他已成功注册。目前我正在发送相同的短信,但API可以发送回复短信发送(成功发送或不发送JSON格式的短信)。

这是一个问题 - 我无法捕获到SMS网关的返回响应,因此导致响应显示在用户/网页上。

这对用户来说是个问题。

对于调用SMS网关,我使用了PHP Header函数,如:

header("Location:URL of SMS Gateway");

我的代码为贝娄,

<?php
include("otherpages/connection.php");

if(isset($_POST['submit1'])) {
    $mname=$_POST['mname'];
    $cdate=$_POST['cdate'];
    $maddress1=$_POST['maddress'];
    $mschool=$_POST['mschool'];
    $mkendra=$_POST['centrename'];
    $mmobile=$_POST['mmobile'];
    $user=$_POST['user'];
    $pass=$_POST['pass'];
    $approved="0";

    $qr="insert into tempregistration values('','$cdate','$mname','$maddress1','$mschool','$mschool','$mkendra','$mmobile','$user','$pass','$approved')";

    // Code for Registration SMS

     $url = 'http://sms.hspsms.com/sendSMS?username=#USERNAME#&message=Dear User,You Have Succeffully Registered to ABC.com ,Thanks&sendername=HSPSMS&smstype=PROMO&numbers=9503808004&apikey=#APIKey#';

    header("Location:$url");
?>

请帮助我或指导我做对或错的地方?

任何帮助都会很明显。

1 个答案:

答案 0 :(得分:0)

您正在将用户的浏览器发送到API,您要做的是让PHP发出请求,然后告诉用户它是否成功。

您可以使用get_file_contents,但curl会为您提供更多控制权。

您应该有一个函数将请求发送到API并返回成功/失败,然后向用户显示消息。

像这样(未经测试):

if(isset($_POST['submit1'])) {
    $mname=$_POST['mname'];
    $cdate=$_POST['cdate'];
    $maddress1=$_POST['maddress'];
    $mschool=$_POST['mschool'];
    $mkendra=$_POST['centrename'];
    $mmobile=$_POST['mmobile'];
    $user=$_POST['user'];
    $pass=$_POST['pass'];
    $approved="0";

    $qr="insert into tempregistration values('',
        '$cdate','$mname','$maddress1','$mschool',
        '$mschool','$mkendra','$mmobile','$user','$pass','$approved')";
    //update to encode parameters which contain spaces
    $message = urlencode('Dear User, You have successfully registered ...');
    // other parametes might also contain spaces ...
    $username = urlencode('#USERNAME');
    $sendername = urlencode('HSPSMS');
    //etc

    $url = 'http://sms.hspsms.com/sendSMS?username='.$username
           .'&message='.$message
           .'&sendername='.$sendername
           .'&smstype=PROMO&numbers=9503808004&apikey=#APIKey#';


    if ($result = do_api_call($url)){
        echo "SMS API returned:<br>";
        echo $result;//for debugging
    }else {
        echo "Failure"
    }
}

...

function do_api_call($url){
    //this is very simplistic code to get you going ...
    //use curl instead for more control
    return file_get_contents($url); 
}