PHP Development
 
Forums: » Register « |  User CP |  Games |  Calendar |  Members |  FAQs |  Sitemap |  Support | 
User Name:
Password:
Remember me

The Shed is going Social! Join us on FaceBook and Twitter and chime in on the conversation.

Go Back   Dev Shed ForumsProgramming LanguagesPHP Development

Reply
Add This Thread To:
  Del.icio.us   Digg   Google   Spurl   Blink   Furl   Simpy   Y! MyWeb 
Thread Tools Search this Thread Rate Thread Display Modes
 
Unread Dev Shed Forums Sponsor:
  #1  
Old January 29th, 2013, 07:00 AM
SalientAnimal SalientAnimal is offline
Registered User
Dev Shed Newbie (0 - 499 posts)
 
Join Date: Feb 2011
Posts: 11 SalientAnimal User rank is Just a Lowly Private (1 - 20 Reputation Level) 
Time spent in forums: 4 h 8 m
Reputation Power: 0
Angry PHP-Programs - SMS using PHP and WSDL

Hi All,

I'm not 100% sure if this is the place to be posting for help with this. I have managed to get some source code for a SMS PHP page. However I am having some problems getting it to work, mainly because I'm not 1005 sure how to configure it, and if I need to make any toher changes to the code in order to incorporate my SMS gateway.

The error message I am getting is: "SMS Sending Failed Message:Network error unable to send the message", this mesage is however coded into the code.

Below is the code of the 4 different pages:

HTML Page where message is created
Code:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"><head>        <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />        <title>SMS Sending Service</title>        <style type="text/css">                body { font-family:Verdana,Arial,sans-serif; font-size:100%; }                td { vertical-align:top; }                input[type=submit] { padding:5px 10px; }        </style><script type="text/javascript" src="send.js"></script></head><body>        <h1>SMS Sending Service</h1>        <form action="send.php" method="post">                <table border="0" cellpadding="5" style="background:#F7F7F7;border:1px solid #CCC;border-radius:5px;-moz-border-radius:5px;">                        <tr>                                <td><label for="method">Tipo di SMS:</label></td>                                <td>                                        <select name="method" id="method">                                                <option value="classic">Classic</option>                                                <option value="report">Classic con notifica</option>                                                <option value="basic">Basic</option>                                        </select>                                </td>                        </tr>                        <tr>                                <td><label for="recipients">Your Valentine's Number: </label></td>                                <td>                                        <span id="recipients">                                                <div><input type="text" name="recipients[]" value="27" /></div>                                        </span>                                        <a href="javascript:;" onclick="addRecipient();"><small>Add Another Valentine</small></a>                                </td>                        </tr>                        <tr>                                <td><label for="text">Message: </label></td>                                <td><textarea name="text" id="text" cols="30" rows="10"></textarea></td>                        </tr>   <tr>        <td></td>        <td>         <small>         Characters Remaining: <span id="leftChars" style="color:#F00;">0</span> /         <b id="messageMaxLength">765</b>         (<span id="numberOfSMS" style="color:#39b54a;">1</span>)         </small>        </td>   </tr>                        <tr>                                <td><label for="sender_number">Sender's Number: </label></td>                                <td><input type="text" name="sender_number" id="sender_number" /> <small>Eg 27741123456</small></td>                        </tr>                        <tr>                                <td><label for="sender_string">Alphanumeric Sender: </label></td>                                <td><input type="text" name="sender_string" id="sender_string" maxlength="11" /> <small>Max 11 Characters</small></td>                        </tr>                        <tr>                                <td><label for="charset">Charset</label></td>                                <td>                                        <select name="charset" id="charset">                                                <option value="ISO-8859-1">ISO-8859-1</option>                                                <option value="UTF-8">UTF-8</option>                                        </select>                                </td>                        </tr>                        <tr>                                <td colspan="2" align="right">                                        <input type="submit" value="Send Message" name="submit" />                                </td>                        </tr>                </table>        </form></body></html>


PHP Send page
Code:
<?php// IMPORTANT:// ENTER YOUR CREDENTIALS HERE VMini_set('soap.wsdl_cache_enabled',0);ini_set('soap.wsdl_cache_ttl',0);define('VM_WSDL', 'https://myhostserver/WebsiteData/WebsiteDataEndpoint?wsdl');define('VM_USERNAME','MyGateWayUsername');define('VM_PASSWORD','MyGateWay  Password');require('validate.php');// Collect post data from form$method = $_POST['method'];$recipients = $_POST['recipients'];$text = $_POST['text'];$sender_number = $_POST['sender_number'];$sender_string = $_POST['sender_string'];$charset = $_POST['charset'];$result = VMGatewaySendSMS(VM_USERNAME, VM_PASSWORD, $recipients, $text, $method, $sender_number, $sender_string, $charset);if($result['status']=='success') {  echo '<b style="color:#8dc63f;">SMS Sent Successfully</b><br/>';  echo '<b>SMS rimanenti:</b>'.$result['remaining_sms'];}if($result['status']=='failed') {  echo '<b style="color:#ed1c24;">SMS Sending Failed</b><br/>';  if(isset($result['code'])) {   echo '<b>Codice:</b>'.$result['code'].'<br/>';  }  echo '<b>Message:</b>'.urldecode($result['message']);}?>


Send.js file
Code:
var SMS_CLASSIC_MAX_LENGTH = 765,SMS_BASIC_MAX_LENGTH = 1404,CURRENT_SMS_LENGTH = 765;var translations = Array();translations['ErrorTextMoreThan']='Attenzione! Il testo non puo\' essere piu\' lungo di ';translations['ErrorChars']=' caratteri!\n';function addRecipient() {var newRecipient = document.createElement('div');newRecipient.innerHTML = '<input type="text" name="recipients[]" value="27" /> <a href="javascript:;" onclick="removeRecipient(this.parentNode);"><small>Remove</small></a>';document.getElementById("recipients").appendChild(newRecipient);}function removeRecipient(obj) {document.getElementById("recipients").removeChild(obj);}window.onload = function() {var msgMaxLen = document.getElementById("messageMaxLength");document.getElementById("method").onchange = function(){  switch(this.value) {   case "classic":   case "report":        msgMaxLen.innerHTML = SMS_CLASSIC_MAX_LENGTH;        CURRENT_SMS_LENGTH = SMS_CLASSIC_MAX_LENGTH;        charLeft();        break;   case "basic":        msgMaxLen.innerHTML = SMS_BASIC_MAX_LENGTH;        CURRENT_SMS_LENGTH = SMS_BASIC_MAX_LENGTH;        charLeft();        break;  }};document.getElementById("text").onkeyup = function(){  charLeft();};};function charLeft(){var max = CURRENT_SMS_LENGTH;var smsText = document.getElementById("text").value;var doubleChars = 0;if(smsText==="") {  var length = 0;} else {  var length = getRealLengthFor(smsText,false);  doubleChars = getRealLengthFor(smsText,true);}if (length > max){  document.getElementById("text").value = smsText.substring(0, max-doubleChars);  alert(translations['ErrorTextMoreThan'] + max + translations['ErrorChars']);}var leftChars = length;if (leftChars < 0){  leftChars = 0;}document.getElementById("leftChars").innerHTML = leftChars;var numberOfSMS = document.getElementById("numberOfSMS");var actualNumberOfSMS = 0;switch(max) {  case SMS_CLASSIC_MAX_LENGTH:   if(length<=160) {        numberOfSMS.innerHTML = '1';   }   if(length>160) {        actualNumberOfSMS = Math.floor((length-1) / 153) + 1;        numberOfSMS.innerHTML = actualNumberOfSMS;   }   break;  case SMS_BASIC_MAX_LENGTH:   numberOfSMS.innerHTML = getNumberOfSegmentForBasic(smsText.length, smsText);   break;}}//from JAVA://var SPECIAL_CHARS = Array('[', '\\', ']', '^', '{', '|', '}', '~', '¬', 8364);var SPECIAL_CHARS = Array("\x5B", "\x5C", "\x5D", "\x5E", "\x7B", "\x7C", "\x7D", "\x7E", 8364, 49792, 14844588);var CHAR_TO_CUT_BASIC = Array(' ', '.', ',', '?', '!');// Fa il check se una variabile e' null o vuotafunction isEmpty( inputStr ) { if ( null == inputStr || "" == inputStr ) { return true; } return false; }// Aggiungo un metodo alla classe string// toCharArray esistente in javaString.prototype.toCharArray = function() {var charArr=new Array();for(var i=0;i<this.length;i++) charArr[i]=this.charAt(i);return charArr;};// isIntInTheArray// Cerca nell'array chars se e' presente il carattere c// Parametri:// char c, char[] charsfunction isIntInTheArray(c, chars) {for(var i=0;i<chars.length;i++) {  if(chars[i] == c || chars[i] == c.charCodeAt(0)) return true;}return false;}// getRealLengthFor// Parametri:// String s// Return intfunction getRealLengthFor(s,getDoubleChars) {if (isEmpty(s)) return 0;var chars = s.toCharArray();var numberOfSpecialChars = 0;for (var k=0; k<chars.length; k++) {  if (isIntInTheArray(chars[k], SPECIAL_CHARS)) {   numberOfSpecialChars++;  }}if(getDoubleChars === true) return numberOfSpecialChars;return s.length + numberOfSpecialChars;}// Conteggio SMS Basic - Mirko Mariani// Traduzione dall'algoritmo JAVA// Return Int// Parametri:// Integer len, String sfunction getNumberOfSegmentForBasic(len, s) {if (len <= 160) return 1;var leftStringToSplit = s;var segmentNumber = 0, cycle = 0, segmentLength = 0;var c = 'c';var charForLeftString = null;while (!isEmpty(leftStringToSplit)) {  var indexOfEndSegment = -1;  var numberOfSpecialChars = 0;  if ( cycle == 0 ) {   segmentLength = 156;  }  else {   segmentLength = 156;  }  // Check if we reached the last segment  if ( getRealLengthFor( leftStringToSplit , false) > segmentLength ) {   charForLeftString = leftStringToSplit.toCharArray();   for ( var k = 0; k < charForLeftString.length; k++ ) {        if ( isIntInTheArray( charForLeftString[k], SPECIAL_CHARS ) ) {         numberOfSpecialChars++;        }   }   indexOfEndSegment = segmentLength - numberOfSpecialChars;   // go to the point where cut the text   var charChecked = 0;   var charForCuttingFound = false;   // search till the 15 char back   while ( charChecked < 15 && !charForCuttingFound ) {        c = leftStringToSplit.charAt( indexOfEndSegment - charChecked  );        if ( isIntInTheArray( c, CHAR_TO_CUT_BASIC ) ) {         segmentNumber++;         charForCuttingFound = true;        }        else {         charChecked++;        }   }   // if no char has been found the string will be cut at the end of the segment length -> put the charChecked to 0 to   // use the substring method below to determine the left string still to split   if (!charForCuttingFound ) {        segmentNumber++;        charChecked = 0;   }   // change the left string still to split   leftStringToSplit = leftStringToSplit.substring( indexOfEndSegment - charChecked, leftStringToSplit.length );  }  else {   // reset to end the cycle   leftStringToSplit = "";   segmentNumber++;  }  cycle++;}return segmentNumber;}


Validate.php
Code:
<?phpdefine("NET_ERROR", "Network+error+unable+to+send+the+message");define("SENDER_ERROR", "You+can+specify+just+one+type+of+sender%2C+numeric+or+alphanumberic");function do_post_request($url, $data, $optional_headers = null){if(!function_exists('curl_init')) {  $params = array(   'http' => array(        'method' => 'POST',        'content' => $data   )  );  if ($optional_headers !== null) {   $params['http']['header'] = $optional_headers;  }  $ctx = stream_context_create($params);  $fp = @fopen($url, 'rb', false, $ctx);  if (!$fp) {   return 'status=failed&message='.NET_ERROR;  }  $response = @stream_get_contents($fp);  if ($response === false) {   return 'status=failed&message='.NET_ERROR;  }  return $response;} else {  $ch = curl_init();  curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,10);  curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);  curl_setopt($ch,CURLOPT_TIMEOUT,60);  curl_setopt($ch,CURLOPT_USERAGENT,'Generic Client');  curl_setopt($ch,CURLOPT_POSTFIELDS,$data);  curl_setopt($ch,CURLOPT_URL,$url);  if ($optional_headers !== null) {   curl_setopt($ch,CURLOPT_HTTPHEADER,$optional_headers);  }  $response = curl_exec($ch);  curl_close($ch);  if(!$response){   return 'status=failed&message='.NET_ERROR;  }  return $response;}}function VMGatewaySendSMS($username,$password,$recipients,$text,$sms_type='basic',$sender_number='',$sender_s  tring='',$charset='',$optional_headers=null) {$url = 'https://Myhostserver/WebsiteData/WebsiteDataEndpoint?wsdl';switch($sms_type) {  case 'classic':   $method='send_sms_classic';   break;  case 'report':   $method='send_sms_classic_report';   break;  case 'basic':  default:   $method='send_sms_basic';}$parameters = 'method='          .urlencode($method).'&'          .'username='          .urlencode($username).'&'          .'password='          .urlencode($password).'&'          .'text='          .urlencode($text).'&'          .'recipients[]='.implode('&recipients[]=',$recipients)          ;if($sender_number != '' && $sender_string != '') {  parse_str('status=failed&message='.SENDER_ERROR,$result);  return $result;}$parameters .= $sender_number != '' ? '&sender_number='.urlencode($sender_number) : '';$parameters .= $sender_string != '' ? '&sender_string='.urlencode($sender_string) : '';switch($charset) {  case 'UTF-8':   $parameters .= '&charset='.urlencode('UTF-8');   break;  case '':  case 'ISO-8859-1':  default:}parse_str(do_post_request($url,$parameters,$optional_headers),$result);return $result;}?>


Thanks, any help will be greatly appreciated.

Reply With Quote
Reply

Viewing: Dev Shed ForumsProgramming LanguagesPHP Development > PHP-Programs - SMS using PHP and WSDL

Developer Shed Advertisers and Affiliates



Thread Tools  Search this Thread 
Search this Thread:

Advanced Search
Display Modes  Rate This Thread 
Rate This Thread:


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
View Your Warnings | New Posts | Latest News | Latest Threads | Shoutbox
Forum Jump

Forums: » Register « |  User CP |  Games |  Calendar |  Members |  FAQs |  Sitemap |  Support | 
  
 


Powered by: vBulletin Version 3.0.5
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.

© 2003-2013 by Developer Shed. All rights reserved. DS Cluster - Follow our Sitemap