Példák SMS küldésre és fogadásra PHP programnyelvben
Ezen az oldalon elsősorban PHP fejlesztőknek
szánt hasznos információkat találhat arról, hogyan küldhet és fogadhat SMS
üzenetet vállalati rendszerében PHP programnyelvben az Ozeki NG SMS Gateway segítségével.
Az SMS szoftver az SMS üzeneteket a mobil hálózatba vagy GSM modem vagy IP SMS
kapcsolat segítségével juttatja el. Ez az áttekintő
oldal néhány példával szemlélteti a PHP SMS küldés lehetőségeit az Ozeki NG SMS
Gateway szoftver segítségével, hogy Ön megtalálhassa a legmegfelelőbb megoldást.
SMS küldés és fogadás PHP-ból adatbázist használva
A legtöbb PHP-t engedélyező weboldal adatbázis szervert (MySQL
or PostgreSQL) használ az adatok tárolására. Ez az adatbázis megoldás jól
egyeztethető a PHP fejlesztők igényeivel. Amennyiben adatbázis szervert használ a
weboldalához, akkor célszerű egy SQL SMS Gateway konfiguráció felépítése a
rendszerében az SMS funkcionalitás eléréséhez. Az Ozeki SQL SMS Gateway
konfigurációja a következő módon működik
(1. ábra): létre kell hozni két adatbázis táblát. Az egyiket a bejövő
üzenetek számára (ozekimessagein) a másikat a kimenő üzeneteknek
(ozekimessageout). Ha üzenete érkezik a rendszerébe, az Ozeki NG SMS Gateway egy
bejegyzést illeszt be az "ozekimessagin" táblába a bejövő üzenetről. A PHP
alkalmazás ezt a bejegyzést feldolgozza és ellenőrzi, van-e bejövő üzenet.
Ábra 1 - SMS küldés és fogadás PHP-ból adatbázison keresztül.
A megoldáshoz a forráskódot itt töltheti le: php_sms_api_php_sms_example.zip
Hogyan adhat SMS funkcionalitást egy weboldalnak PHP és MySQL
használatával:
Az SMS szoftver telepítése után már küldhet is SMS üzenetet a PHP-n
alapuló weboldaláról. Ezt úgy teheti meg, ha egyszerűen bejegyzéseket illeszt be
az "ozekimessageout" adatbázis táblába. Például létrehozhat egy HTML formátumot,
amelyet a weboldal látogatói kitölthetnek. Miután ez megtörtént
az SQL Insert paranccsal hozhat létre új bejegyzést az "ozekimessageout"
táblában:
<HTML>
<BODY>
<H1> Send an SMS </H1>
<?php
$phonenum = $_GET['phonenum'];
$messagetext = $_GET['messagetext'];
if ($phonenum<>'') {
$conn = mysql_connect("localhost", 'ozeki', 'abc123');
if (!$conn) {
die('Could not connect to database ' . mysql_error());
}
mysql_select_db('ozekisms');
$sql = "INSERT INTO ozekimessageout (receiver,msg,status) ".
"VALUES ('$phonenum','$messagetext','send')";
mysql_query($sql);
mysql_close($conn);
echo "The message has been submitted for sending <br><br>";
}
?>
<FORM action=send.php METHOD=GET>
Mobil phone number:
<INPUT TYPE="TEXT" SIZE="16" NAME="phonenum" VALUE="+44777888999">
<br>
<TEXTAREA NAME="messagetext" ROWS=5 COLS=40>Hello world</TEXTAREA>
<br>
<INPUT TYPE=SUBMIT VALUE=SEND>
</FORM>
</BODY>
</HTML>
|
Ahhoz, hogy az SMS üzenetet megkapja szelektálnia kell az "ozekimessagein"
tábla bejegyzéseit. Ezt egy SQL Select parancs segítségével teheti meg. Például:
<HTML>
<BODY>
<H1>List incoming messages</H1>
<?php
$conn = mysql_connect("localhost", 'ozeki', 'abc123');
mysql_select_db('ozekisms');
$sql = "SELECT sender,senttime,msg FROM ozekimessagein ORDER BY senttime desc";
$res = mysql_query($sql);
$cn = mysql_num_rows($res);
for ($x=0;$x<$cn;$x++) {
list ($sender,$senttime,$msg) = mysql_fetch_row($res);
echo "<li>$senttime, <b>$sender</b>, $msg";
}
mysql_close($conn);
?>
</BODY>
</HTML>
|
SMS küldés és fogadás PHP-ból HTTP-t használva
HTTP kérésekkel szintén lehet kommunikálni az Ozeki NG SMS
Gateway szoftverrel. Ennek a megoldásnak az a nagy előnye, hogy mivel közvetlen
kommunikációt biztosít az SMS szoftverrel, gyorsabb reakcióidőt tesz lehetővé.
Ha a HTTP SMS Gateway konfigurációt használja és SMS üzenetet kap, azonnal
válaszolhat egy válasz SMS-sel. A 2. ábra ezt a megoldást mutatja be.
Ábra 2 - SMS küldés és fogadás PHP-ból HTTP-n keresztül.
Ahhoz hogy ezt a megoldást alkalmazza vállalati rendszerében
először installálnia kell az Ozeki NG SMS Gateway szoftvert. Miután ezt
megtette szüksége lesz a sendsms.html
fájlra. Ezt el kell mentenie a webserver WWW directory mappájába. Ez a fájl
tartalmazza a HTML formátumot, amelyet a weboldal látogatói kitölthetnek. A
sendsms.html fájl forráskódja a következő:
C:\www\sendsms.html
<html>
<body>
<h1>My SMS form</h1>
<form method=post action='sendsms.php'>
<table border=0>
<tr>
<td>Recipient</td>
<td><input type='text' name='recipient'></td>
</tr>
<tr>
<td>Message</td>
<td><textarea rows=4 cols=40 name='message'></textarea></td>
</tr>
<tr>
<td> </td>
<td><input type=submit name=submit value=Send></td>
</tr>
</table>
</form>
</body>
</html>
|
Ezután a web böngésző segítségével nyithatja meg ezt a fájlt.
A megjelenő formátumban a weboldal látogatóinak meg kell adniuk a címzett
telefonszámát és az üzenet szövegét az SMS sikeres továbbításához. Ez az
üzenet a sendsms.php fájlba fog
érkezni. A sendsms.php forráskódja a következő:
C:\www\sendsms.php
<?php
########################################################
# Login information for the SMS Gateway
########################################################
$ozeki_user = "admin";
$ozeki_password = "abc123";
$ozeki_url = "http://127.0.0.1:9501/api?";
########################################################
# Functions used to send the SMS message
########################################################
function httpRequest($url){
$pattern = "/http...([0-9a-zA-Z-.]*).([0-9]*).(.*)/";
preg_match($pattern,$url,$args);
$in = "";
$fp = fsockopen("$args[1]", $args[2], $errno, $errstr, 30);
if (!$fp) {
return("$errstr ($errno)");
} else {
$out = "GET /$args[3] HTTP/1.1\r\n";
$out .= "Host: $args[1]:$args[2]\r\n";
$out .= "User-agent: Ozeki PHP client\r\n";
$out .= "Accept: */*\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp)) {
$in.=fgets($fp, 128);
}
}
fclose($fp);
return($in);
}
function ozekiSend($phone, $msg, $debug=false){
global $ozeki_user,$ozeki_password,$ozeki_url;
$url = 'username='.$ozeki_user;
$url.= '&password='.$ozeki_password;
$url.= '&action=sendmessage';
$url.= '&messagetype=SMS:TEXT';
$url.= '&recipient='.urlencode($phone);
$url.= '&messagedata='.urlencode($msg);
$urltouse = $ozeki_url.$url;
if ($debug) { echo "Request: <br>$urltouse<br><br>"; }
//Open the URL to send the message
$response = httpRequest($urltouse);
if ($debug) {
echo "Response: <br><pre>".
str_replace(array("<",">"),array("<",">"),$response).
"</pre><br>"; }
return($response);
}
########################################################
# GET data from sendsms.html
########################################################
$phonenum = $_POST['recipient'];
$message = $_POST['message'];
$debug = true;
ozekiSend($phonenum,$message,$debug);
?>
|
Amennyiben szeretné alkalmazni ezt a megoldást
vállalati rendszerében, látogassa meg termékoldalunkat,
ahol letöltheti az Ozeki NG SMS Gateway szoftvert.
|