2011-09-09 78 views
7

请指导我通过网站发送短信的示例代码。如何包含短信网关。请告诉我,我可以使用way2sms.com作为网关吗?通过免费网关发送短信

是否正确使用?请仅向我推荐这么多代码作品?

<?php 
error_reporting(E_ALL); 
ob_implicit_flush(true); 


include_once "class.curl.php"; 
include_once "class.sms.php"; 

$smsapp=new sms(); 
$smsapp->setGateway('way2sms'); 


echo "Logging in ... "; 
$smsapp->login('10 digit number','way2sms password'); 

echo "Sending SMS ... "; 
$result=$smsapp->send('receipient number','text message'); 

if($result=='true') 
{ 
    echo "Message sent"; 
} 
else 
{ 
    echo "Error encountered : ".$smsapp->getLastError(); 
} 

?> 

这里是我的class.curl.php

<?php 
class sms 
{ 
    var $username; 
    var $password; 
    var $curl; 
    var $server; 
    var $loginDone; 
    var $debugMode; 
    var $data; 
    var $error; 
    public function __construct() 
    { 
     $this->curl=new cURL(); 
    // $this->curl->setProxy(""); 
     $this->loginDone=false; 
     $this->debugMode=false; 
     $this->data=array(); 
    } 
    public function setGateway($serverName) 
    { 
     switch($serverName) 
     { 
      case '160by2': 
      $this->server='160by2'; 
      break; 

      case 'way2sms': 
      $this->server='way2sms'; 
      break; 

      case 'airtel': 
      $this->server='airtel'; 
      break; 

      default : 
      $this->server='way2sms'; 

     } 
    } 
    public function login($username,$password) 
    { 
     $server=$this->server; 

     call_user_func(array($this,"login_$server"),$username,$password); 
     $this->loginDone=true; 

    } 
    public function send($number,$msg) 
    { 
     $server=$this->server; 
     if($this->loginDone) 
     return call_user_func(array($this,"send_$server"),$number,$msg); 
     else 
     { 
      echo "<h2>Please login first before sending SMS</h2>"; 
     } 

    } 
    private function login_way2sms($username,$password) 
    { 
     $out=($this->curl->post("http://www.way2sms.com","1=1")); 
     $pattern="/Location:(.+?)\n/"; 
     preg_match($pattern,$out,$matches); 
     $domain=trim($matches[1]); 

     $this->data['domain']=$domain; 

     $out= $this->curl->post("{$domain}auth.cl","username=$username&password=$password&Submit=Sign+in"); 

     $pattern="/Location:(.+?)\n/"; 
     preg_match($pattern,$out,$matches); 
     $referer=trim($matches[1]); 
     $this->data['referer']=$referer; 


    } 


    private function send_way2sms($number,$msg) 
    { 
     $domain=$this->data['domain']; 
     $html=$this->curl->post("{$domain}jsp/InstantSMS.jsp?val=0","1=1",$this->data['referer']); 
     if($this->debugMode) 
     { 
     echo "<h2>After logging in, the HTML returned by server is</h2>"; 
     echo $html; 
     } 

     $pattern = '/name="Action".+?value="(.*)"/'; 
     preg_match($pattern, $html, $matches); 

     $custfrom=$matches[1]; 
     $msg=urlencode($msg); 
     $html=$this->curl->post("{$domain}FirstServletsms?custid=","custid=undefined&HiddenAction=instantsms&Action={$custfrom}&login=&pass=&MobNo=$number&textArea=$msg"); 
     $pattern = '/class="style1">(.+?)<\/span>/'; 
     preg_match($pattern, $html, $matches); 
     $out=($matches[1]); 

     if(!preg_match("/successfully/",$out)) 
     { 
     $this->setError($out); 
     return false; 
     } 
     else 
     { 
     return true; 
     $this->setError("No errors"); 
     } 

    } 
    public function getLastError() 
    { 
     return $this->error; 

    } 
    private function setError($error) 
    { 
     $this->error=$error; 
    } 
    private function login_160by2($username,$password) 
    { 
    // $out2=$this->curl->get("http://m.160by2.com"); 
     $out=$this->curl->post("http://m.160by2.com/LoginCheck.asp?l=1&txt_msg=&mno=","txtUserName=$username&txtPasswd=$password&RememberMe=Yes&cmdSubmit=Login"); 
     $pattern="/MyMenu.asp\?Msg=(.+?)&/"; 

     preg_match($pattern,$out,$matches); 
     $id=trim($matches[1]); 
     $this->data['id']=$id; 

    } 

    private function send_160by2($number,$msg) 
    { 
     $msg=urlencode($msg); 
     $id=$this->data['id']; 
     $out1=$this->curl->post("http://m.160by2.com/SaveCompose.asp?l=1","txt_mobileno=$number&txt_msg=$msg&cmdSend=Send+SMS&TID=&T_MsgId=&Msg=$id"); 
     //echo $out1; 
     $pattern = '/\<table.+?\>(.+)\<\/table/s'; 
     preg_match($pattern, $out1, $matches); 

     $out=strip_tags(@$matches[1]); 
     if(count($matches)<1) 
     { 
     $pattern="/\<div.+?background:.+?yellow.+?\>(.+?)\<\/div\>/s"; 

     preg_match($pattern,$out1,$matches); 

     $out=strip_tags($matches[1]); 
     } 

// 
    // echo "out is $out"; 

     if(!preg_match("/successfully/i",$out)) 
     { 

     $this->setError($out); 

     return false; 
     } 
     else 
     { 
     return true; 
     $this->setError("No errors"); 
     } 

    } 

    private function login_airtel($username,$password) 
    { 
     $this->data['username']=$username; 
     $this->data['password']=$password; 

    } 


    private function send_airtel($number,$msg) 
    { 

    } 
} 

?> 
的用户名和密码,我应该使用哪一个用户名和密码的地方

+2

您可能需要问他们,而不是我们 –

回答

16

呀,或者你可以使用网关由无线运营商自己提供的,因为那是作为发送他们PHP's mail function电子邮件一样简单。

其中(数字)是,您必须包括他们的10位数电话号码。这意味着你必须包括他们的区号。

AT &Ť (数目) @ txt.att.net

的T-Mobile (数目) @ tmomail.net

冲刺 (号码) @ messaging.sprintpcs.com

Verizon的 (数字) @ vtext.com OR (数字) @ vzwpix.com

+0

非常感谢你。我会试试 – priya

+0

不要忘记最后的投票。 :) –

+0

请建议我,我需要联系way2sms.com支持使短信网关或获取详细信息?抱歉。我对此一无所知。所以我从头开始问。 – priya

1

这似乎很好,除了一行 改变这种

if($result=='true') 
to 
if($result == true) 
+0

@ JapanPro,谢谢。请指导我如何在我的网站中使用它?以及如何设置短信网关?如果我使用这个代码是足以通过网站发送短信? – priya

+0

我已编辑代码请建议我 – priya

+0

有人可以帮我吗? – priya