Archive for the ‘Web Development’ Category

Send SMS Message Using Clickatell API - Part 7

Monday, October 1st, 2007 |

After going through the first 6 parts of this tutorial, I realized I could do more to check the status of an sms message so i decided to add this part of the tutorial.

What this does is to check the status and charge of a message by your self just in case the callback url doesn’t give you the required feedback on time. Meaning this tutorial will help you to manual query the clickatell gateway to check the status of your sms message.

All you have to do is to create a page “status.php” and use the code below.

status.php

<?php
//*********************************************** //
// Send SMS Message Using Clickatell API - Part 7
// 23rd September 2007
// www.mboateng.com
// Michael Ofori Amanfo Boateng
//
//********************************************

echo “loading……”;

require_once(’settings.php’);

// auth call
$url = “http://api.clickatell.com/http/auth?user=$user”;
$url = $url.”&password=$password&api_id=$api_id”;
$ret = file($url);

// split our response. return string is on first line of the data returned
$sess = split(”:”,$ret[0]);
$sess_id = trim($sess[1]);

mysql_select_db($database_conn, $conn);
$result1 = mysql_query(”select * from tbl_outbox where status <> ‘004′ and dayofyear(now()) - dayofyear(dated) < 1 limit 10″,$conn);
$result2 = mysql_num_rows($result1);

while ($mydata1 = mysql_fetch_array($result1)){
$messageid = $mydata1[’messageid’];
$api = trim($mydata1[’apimsgid’]);

//////////////////////////////////////////////
/////////////////////////////////////////////
// check charge
$charge_url = “$baseurl/http/getmsgcharge?session_id=$sess_id”;
$charge_url = $charge_url.”&apimsgid=$api”;
$charge_return = file($charge_url);

foreach($charge_return as $item){

$findapi = strpos($item, “apiMsgId:”);
$findcharge = strpos($item, “charge:”);
$findstatus = strpos($item, “status:”);

$length = strlen($item);

//Find the apimsgid
$part1 = substr($item, $findapi,$findstatus );
$part2no = strpos($item, $part1);

$api = trim(substr($item, $findapi,$findcharge ));
$status= trim(substr($item, $findstatus,$length ));
$charge= trim(substr($item, $findcharge, $findstatus - $findcharge ));

//find charge
$ret = $charge;
$sess = split(”:”,$ret);
$charge = trim($sess[1]);

//find status
$ret = $status;
$sess = split(”:”,$ret);
$status = trim($sess[1]);

mysql_select_db($database_conn, $conn);
$sql = “update tbl_outbox set status = ‘$status’ , charge = ‘$charge’ where messageid =$messageid”;
$result = mysql_query($sql, $conn) or die(mysql_error());
}
}
mysql_free_result($result1);

echo “Update Completed”;

?>

Download Tutorial >>

Part 1 | Part 2 | Part 3 | Part 4 | Part 5 | Part 6 | Part 7

Send SMS Message Using Clickatell API - Part 6

Saturday, September 29th, 2007 |

The last part of the tutorial is using the callback url feature of the clickatell api. This feature allows the Clickatell gateway to forward message status details of the sms message you sent back to your server, through the url you provided on your control panel. This is quite tricky but its simple.

All you have to do is to log on to clickatell’s control panel, and choose the api_id you want to set your callback url.
The insert the url, eg. www.mboateng.com/callback.php.

Create a file “callback.php” on your server and paste the code below.

What will happen is that, any time you send an SMS Message to Clickatell’s gateway, it will forward the response in a url form to which ever url you will provide as your callback url.

callback.php

<?php
//**************************************************
//
// Send SMS Message Using Clickatell API - Part 6
// 23rd September 2007
// www.mboateng.com
// Michael Ofori Amanfo Boateng
//
//**************************************************

require_once(’settings.php’);

// Declare variables for url string
$url = $_SERVER[’QUERY_STRING’];

$api_id = $_GET[’api_id’];
$from = $_GET[’from’];
$to = $_GET[’to’];
$text = $_GET[’text’];
$dated = $_GET[’timestamp’];
$apiMsgId = trim($_GET[’apiMsgId’]);
$status = $_GET[’status’];
$charge = $_GET[’charge’];

mysql_select_db($database_conn, $conn);
$sql = “update tbl_outbox set url=’$url’, status = ‘$status’, charge = ‘$charge’ where apimsgid = ‘$apiMsgId’”;
$result = mysql_query($sql, $conn) or die(mysql_error());

mysql_free_result($rsOutbox);
?>

Download Tutorial >>

Part 1 | Part 2 | Part 3 | Part 4 | Part 5 | Part 6 | Part 7

Send SMS Message Using Clickatell API - Part 5

Friday, September 28th, 2007 |

This part of the tutorial is probably the most important part of the whole tutorial in sending an sms message using the clickatell api. You will create a page “send.php”, then you copy and paste the php code in this page. The send.php does the following;

  1. Authenticates with the Clickatell Gateway
  2. Sends the SMS Message
  3. Retrieve the apimsgid of the corresponding Text Message
  4. Save the SMS Message and its Apimsgid into the Mysql Database

I have put comments at every step of the code so you can identify what is happening at every stage of the code.

send.php

<?php
//*******************************************
//
// Send SMS Message Using Clickatell API - Part 5
// 23rd September 2007
// www.mboateng.com
// Michael Ofori Amanfo Boateng
//
//**********************************************

require_once(’settings.php’);

//retrieve form details
$to = $_POST[’to’];
$from = $_POST[’from’];
$message = $_POST[’message’];

function GetSQLValueString($theValue)
{
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

return $theValue;
}

//get magic quotes
$message = GetSQLValueString($message);

//url encode message
$message = urlencode($message);

//authenticating user
$url = “$baseurl/http/auth?user=$user&password=$password&”;
$url = $url.”api_id=$api_id&from=$from&concat=2″;
$ret = file($url);

// split our response. return string is on first line of the data returned
$sess = split(”:”,$ret[0]);
if ($sess[0] == “OK”) {
$sess_id = trim($sess[1]); // remove any whitespace

// url for sending message
$url = “$baseurl/http/sendmsg?session_id=$sess_id&”;
$url = $url.”to=$to&text=$message&from=$from&”;
$url = $url.”callback=3&deliv_ack=1&concat=2″;

// send message
$ret = file($url);
$send = split(”:”,$ret[0]);
if ($send[0] == “ID”){

// apimsgid
$apimsgid = trim($send[1]);

// insert message with its corresponding apimsgid into the table
mysql_select_db($database_conn, $conn);
$sql = “insert into tbl_outbox (sender,recipient,message,dated,apimsgid ) values (’$from’,'$to’,'$message’,now(),’$apimsgid’) “;
$result = mysql_query($sql, $conn) or die(mysql_error());

// redirect to sent.php when message is correctly sent
echo “<script language=\”JavaScript\”>”;
echo ” location.href = ’sent.php’; “;
echo “</script>”;
}
else{

// this portion is for message sending failure
echo “<script language=\”JavaScript\”>”;
echo ” location.href = ‘failed.php’; “;
echo “</script>”;

}
} else {

// this portion checks for correct authentication
echo “<script language=\”JavaScript\”>”;
echo ” location.href = ‘badlogin.php’; “;
echo “</script>”;
}

?>

Download Tutorial >>

Part 1 | Part 2 | Part 3 | Part 4 | Part 5 | Part 6 | Part 7

Send SMS Message Using Clickatell API - Part 4

Wednesday, September 26th, 2007 |

The next thing to do is create a file “settings.php” which will store general settings for sending sms messages using clickatell’s api.

settings.php

<?php

$baseurl =”http://api.clickatell.com”;

//User details @ Clickatell
$user = “xxxx”;
$password = “xxxx”;
$api_id = “xxxxx”;

//mysql details
$hostname_conn = “xxxx”;
$database_conn = “xxxx”;
$username_conn = “xxxx”;
$password_conn = “xxxx”;
$conn = mysql_pconnect($hostname_conn, $username_conn, $password_conn) or trigger_error(mysql_error(),E_USER_ERROR);

?>

User Details @ Clickatell
//$user = This is the username assigned to you by clickatell
//$password = This your clickatell api password;
//$api_id = The api id can be generated on your clickatell control panel

User Details @ Clickatell
// $hostname_conn = This is your database hostname
//database_conn = Change this to the name of your database
// $username_conn = This is the user logon to ur database
// $password_conn = Change this to your database password

Download Tutorial >>

Part 1 | Part 2 | Part 3 | Part 4 | Part 5 | Part 6 | Part 7

Send SMS Message Using Clickatell API - Part 3

Monday, September 24th, 2007 |

The next part of the tutorial is the Interface to type your SMS Message. I have designed a simple interface that you can use. You can also design one yourself; and in designing one, just make sure you have the the following three fields

  1. “to”
  2. “from”
  3. “Message”

“to”
This is the field where you type in the RECIPIENT NUMBER. Make sure it is in an international format. eg. +233244232323 or +16364545555

“from”
This is the field where you type in the either YOUR NUMBER or YOUR NAME. If you type your name, make sure you dont leave spaces.

“message”
This is the field where you type your MESSAGE. Clickatell sets the default message length to 160 characters, but you can increase it to any number you want on your Clickatell Control Panel.

Compose.php

<?php
//**************************************
//
// Send SMS Message Using Clickatell API - Part 3
// 23rd September 2007
// www.mboateng.com
// Michael Ofori Amanfo Boateng
//
//***************************************

?>

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<title>Sending SMS Message with Clickatell API</title>
</head>
<body>
<table width=”100%” border=”0″ cellspacing=”0″ cellpadding=”0″>
<tr>
<td><form action=”send.php” method=”post” enctype=”application/x-www-form-urlencoded” name=”smssender” id=”smssender”>
<table width=”100%” border=”0″ cellpadding=”3″ cellspacing=”3″ class=”text”>
<tr>
<td>From :
<input name=”from” type=”text” id=”from” size=”20″ maxlength=”14″ />
</td>
</tr>
<tr>
<td><strong>Recipient</strong>:
<input name=”to” type=”text” id=”to” size=”20″ />
(Number in international format eg. +233244666666)</td>
</tr>
<tr>
<td><textarea name=”message” cols=”40″ rows=”7″ id=”message” ></textarea></td>
</tr>
<tr>
<td><input name=”SendMessage” type=”submit” class=”form_button” value=”Send Message” id=”SendMessage” /></td>
</tr>
</table>
</form></td>
</tr>
</table>
</body>
</html>

Download Tutorial >>

Part 1 | Part 2 | Part 3 | Part 4 | Part 5 | Part 6 | Part 7

Send SMS Message Using Clickatell API - Part 2

Monday, September 24th, 2007 |

The second part of the tutorial is actually optional for those who know their way around php coding. These pages will help you diagnose errors with ease.

Create these three pages

1. failed.php
2. sent.php
3. badlogin.php

On sending the sms message three things are likely to happen;

1. Login Failure, i.e. failure to authenticate with the Clickatell Gateway
2. SMS Sending Failure , i.e. failure to send the sms
3. Successful message sending

And in any of the listed conditions above, you will be redirected to a corresponding php page to know where the fault it came from.

failed.php

<?php
//********************************************
//
// Send SMS Message Using Clickatell API - Part 3
// 23rd September 2007
// www.mboateng.com
// Michael Ofori Amanfo Boateng
//
//***********************************************
?>

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<title>Untitled Document</title>
</head>
<body>
<table width=”100%” border=”0″ cellspacing=”0″ cellpadding=”0″>
<tr>
<td align=”center”><h1>Message Sending Failed</h1></td>
</tr>
</table>
</body>
</html>

Sent.php

<?php
//******************************************
//
// Send SMS Message Using Clickatell API - Part 3
// 23rd September 2007
// www.mboateng.com
// Michael Ofori Amanfo Boateng
//
//********************************************
?>

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<title>Untitled Document</title>
</head>
<body>
<table width=”100%” border=”0″ cellspacing=”0″ cellpadding=”0″>
<tr>
<td align=”center”><h1>Message Sent</h1></td>
</tr>
</table>
</body>
</html>

badlogin.php

<?php
//*******************************************
//
// Send SMS Message Using Clickatell API - Part 3
// 23rd September 2007
// www.mboateng.com
// Michael Ofori Amanfo Boateng
//
//********************************************
?>

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<title>Untitled Document</title>
</head>
<body>
<table width=”100%” border=”0″ cellspacing=”0″ cellpadding=”0″>
<tr>
<td align=”center”><h1>Login Failed</h1></td>
</tr>
</table>
</body>
</html>

Download Tutorial >>

Part 1 | Part 2 | Part 3 | Part 4 | Part 5 | Part 6 | Part 7

Send SMS Message Using Clickatell API - Part 1

Sunday, September 23rd, 2007 |

I have been receiving numerous emails on how to send SMS Messages using Clickatell’s HTTP API with a PHP script. I have therefore designed this tutorial to send a simple sms message using clickatell’s HTTP API.

This tutorial basically solves three things.

1. Send a simple sms message on clickatell’s sms gateway using HTTP
2. Retrieve the apimsgid of a message and stores it in a mysql table
3. Use the callback url to check the status of an sms message

Before you start, make sure the following have been done.

1. Register at Clickatell for your account.

2. Register for an HTTP API account at your clickatell control panel. Once you create and HTTP API account, you will be assigned the following. (username, password and api_id) wich you will insert in your script.

3. Whilst on the HTTP API control panel, assign the callback url. Eg. www.mysite.com/callback.php

Once all these are settle we will create our mysql table

Mysql Tables

CREATE TABLE `tbl_outbox` (
`messageid` bigint(10) NOT NULL auto_increment,
`sender` varchar(20) default NULL,
`recipient` varchar(20) default NULL,
`status` varchar(50) default ‘008′,
`apimsgid` varchar(50) default NULL,
`charge` decimal(5,2) default ‘0.00′,
`timesent` varchar(50) default NULL,
`message` tinytext,
`dated` varchar(30) default NULL,
PRIMARY KEY (`messageid`)
) TYPE=MyISAM;

Note:
//Sender: Stores the phone number of the sender
//Receipient : stores the number of the recipient
//Status: I use this to store the the status of the text message
//Apimsgid: this stores the apimsgid of the text message
//Timesent: this is the timestamp on of the message when its sent
//Message: stores the message you are sending
//Dated: its something I just use to show when I sent it from the site

Download Tutorial >>

Part 1 | Part 2 | Part 3 | Part 4 | Part 5 | Part 6 | Part 7

Send Emails in PHP - Beginner

Saturday, September 15th, 2007 |

This tutorial shows you how to send a simple email in PHP. The PHP function you will use is “mail()”.

The mail function is boolean, that is to say it returns either a true or a false. If the mail sending is successful, it returns True and if its is unsuccessful it returns a False.

How to initialize the function

bool mail (string $to, string $subject, string $message [, string $additional_headers [, string $additional_parameters]] )

// string $to - This is the first parameter of the mail() function, it represents the recipient of the email
// string $subject - This is the second parameter of the mail() function, it represents the subject of the email
// string $message - This is the third parameter of the mail() function, it represents the message or main content of the email
// string $additional_headers - This is the fourth parameter of the mail() function . It is an optional parameter which shows the email headers
// string $additional_parameters - This is the last parameter of the mail() function . It is an optional parameter which shows additional information about the email

The Code:

><?php
$email_sender = “recipient@email.com”;

$email_subject = “Sending Basic Emails in PHP”;

$email_content = “This a basic tutorial on www.mboateng.com which shows users how to send a simple email using the mail() function in PHP”;

if(mail($email_recipient, $email_subject, $email_content)){

echo “Email has been sent.”;

} else {

echo “Email sending failed.”;

}

?>

Output:

If the email is successfully sent the output print : “Email has been sent.”However on a failure the output prints: “Email sending failed.”

Counting the number of Upper-Case Letters in a String - PHP

Saturday, September 15th, 2007 |

The first lesson on this blog is a tutorial on how to count the number of Upper Case letters in a given string. Thanks to the number functions in PHP, it was done without much stress.

The PHP functions to use are “preg_match_all” and “count”.

preg_match_all

(This PHP Function searches all matches for the supplied pattern and stores them in the supplied array)

How to initialize the function

int preg_match_all(pattern, subject, matches[, order]);

count

This PHP function returns the number of elements in a variable or an array.

How to initialize the function

int count(variable);

The Code:

<?php

//$your_string - the variable which stores the main string you are going to do the search on

// $total_upper_case_count - the variable which stores the count of all upper case numbers

//$your_match - the variable (array) which stores all the matches

$your_string = “This Is Where Your Main String Goes”;

preg_match_all(’/[A-Z]/’, $your_string, $your_match) ;

$total_upper_case_count = count($your_match [0]);

echo “Total Upper Case Count = ” . $total_upper_case_count;

?>