SMS küldése MySQL-ből a weboldaladról
Az adatbázisokat SQL utasításokkal kezelheted. Az SQL utasításokat PHP-n keresztül küldheted el. Ez lehetővé teszi az adatbázistáblák manipulálását. Például a PHP hozzáadhat SMS üzeneteket küldésre, de beolvashatja a beérkező üzenetek rekordjait is.
Letöltés: MySQL_PHP_Example.zip
A PHP megoldás alapvető PHP és SQL ismerettel rendelkező webfejlesztőknek szól. Letöltheted a PHP forráskódot, így követheted ezt a lépésről lépésre haladó oktatóanyagot, amely alapvető útmutatást ad a megoldás implementálásához.
Miért hasznos kombináció az SMS Gateway egy adatbázissal és PHP-val
Ez egy hasznos PHP megoldás a következőkre:
- SMS funkciók hozzáadásához a weboldaladhoz.
- SMS funkciók hozzáadásához a vállalati intranet-edhez.
- Automatizált SMS értesítések létrehozásához.
- Weboldal biztonság növeléséhez SMS bejelentkezés hozzáadásával.
Követelmények
Szükséged lesz egy Ozeki SMS Gateway, egy webszerver és egy MySQL szerver hosztolására. Ezt a funkciót ugyanarról a számítógépről vagy két külön gépről is hosztolhatod, ahogy az az alábbi táblázatban látható:
PHP hoszt: |
Operációs rendszer: Linux vagy Windows Webszerver (Apache vagy IIS) PHP MySQL Szerver |
Ozeki SMS Gateway hoszt: |
Operációs rendszer: Windows vagy Linux .NET keretrendszer (ha Windows-t használsz) vagy Mono (ha Linux-ot használsz) Ozeki SMS Gateway |
![]() | Az Ozeki SMS Gateway letölthető a következő oldalról: Töltsd le az Ozeki SMS Gateway-t! |
Hogyan működik
Mielőtt elkezdenéd használni ezt a PHP alkalmazást, telepítened kell az Ozeki SMS Gateway-t és egy MySQL Szervert a számítógépedre. Használhatsz Windows-t vagy Linux-ot. Fontos, hogy válassz egy hardveres vagy szoftveres megoldást az SMS küldéshez. Hardveres megoldásként egy mobiltelefon vagy GSM modem ajánlott, szoftveres megoldásként pedig használhatod az IP SMS szolgáltatód az interneten keresztül.
A jelen oktatóanyagban található PHP példa képes rekordokat olvasni és új rekordokat beszúrni. Ez nagyon hasznos a beérkező üzenetek olvasásakor vagy a kimenő üzenetek írásakor. Ha szeretnéd látni, hogyan működik a megoldás, nézd meg az 1. ábrát.
Az ábrán látható az 'Internetes felhasználó', aki valójában SMS üzeneteket küld és fogad egy böngészőn keresztül. Az internetes felhasználó egy PHP-t támogató webszerverhez kapcsolódik, amely képes az SQL Szerveren lévő adatbázisok kezelésére, és ezek az adatbázisok az Ozeki SMS Gateway-hez tartoznak. Az utolsó lépésben az Ozeki SMS Gateway elküldi az üzenetet egy mobiltelefonra a GSM hálózaton keresztül.
Az internetes felhasználó bárhonnan elérheti az internetet. Csak az számít, hogy ismeri-e a PHP szervert futtató számítógép IP címét vagy URL-jét, és hogy jogosult-e bejelentkezni a MySQL adatbázisba, így beszúrhatja a kívánt SMS üzenet rekordot, amelyet később az Ozeki SMS Gateway kiválaszt és elküld a címzett mobiltelefonjára a GSM hálózat segítségével.
Ez a munkafolyamat fordítva is működik. Amikor az Ozeki SMS Gateway fogad egy SMS üzenetet a GSM hálózatról és elmenti a MySQL adatbázisba, a PHP szerver beolvashatja és megjelenítheti az internetes felhasználó képernyőjén.
Hogyan hozz létre egy MySQL adatbázist
CREATE DATABASE ozekisms; USE ozekisms; CREATE TABLE ozekimessagein ( id int(11) NOT NULL auto_increment, sender varchar(30) default NULL, receiver varchar(30) default NULL, msg varchar(1024) default NULL, senttime varchar(100) default NULL, receivedtime varchar(100) default NULL, operator varchar(100), msgtype varchar(160) default NULL, PRIMARY KEY (id) ); CREATE TABLE ozekimessageout ( id int(11) NOT NULL auto_increment, sender varchar(30) default NULL, receiver varchar(30) default NULL, msg varchar(1024) default NULL, senttime varchar(100) default NULL, receivedtime varchar(100) default NULL, status varchar(20) default NULL, msgtype varchar(160) default NULL, operator varchar(100), PRIMARY KEY (id) ); GRANT insert,update,select,delete on ozekisms.* to sqluser@localhost IDENTIFIED BY 'abc123';
2. ábra - Táblák létrehozása az Ozeki SMS Gateway által megkövetelt szerkezetben
Hogyan hozz létre egy adatbázis felhasználót az Ozeki SMS Gateway-ben
1. lépés: Nyisd meg az Ozeki 10-et egy böngészőben
2. lépés: Válaszd ki az SMS Gateway alkalmazást az Ozeki 10 integrált asztaláról
3. lépés: Hozd létre az adatbázis felhasználót az SMS Gateway-ben az útmutatót követve.
Hogyan használd a kódot
Használd a letöltött PHP kódot és kövesd ezeket a lépéseket:1. lépés: | Először csomagold ki a letöltött zip fájlt. |
2. lépés: | Másold a sqlsmshandling.php, sqlsmshandling_inoutmessages.php és sqlsmshandling_functions.php fájlokat a webszerver fő könyvtárába. |
3. lépés: | Írd át az SQL szerver IP címét, felhasználónevét és jelszavát a sqlsmshandling_functions.php fájlban. |
4. lépés: | Ha az Ozeki SMS Gateway nem fut, indítsd el. |
5. lépés: | Írd be a PHP szerver IP címét a böngésződbe: http://127.0.0.1/sqlsmshandling.php (Megváltoztathatod a PHP szerver IP címét, vagy hagyd 127.0.0.1-en, ha a PHP szerver és a böngésződ ugyanazon a gépen fut.) |
6. lépés: | Töltsd ki az HTML űrlapot és nyomd meg a 'Küldés' gombot. |
7. lépés: | Ha minden rendben ment, az Ozeki SMS Gateway megjeleníti az üzenet állapotát az adatbázis felhasználó naplójában. |
A PHP szkript
Itt további részleteket találsz a letölthető példa szkriptről.
A szkriptnek ismernie kell a MySQL adatbázisodhoz tartozó felhasználói hitelesítő adatokat. A szkript fő feladata az új üzenet beszúrása a kimenő üzenetek táblájába. Ez a tábla a jelen példában 'ozekimessageout' néven szerepel.
Az Ozeki SMS Gateway adatbázis felhasználója periodikusan ellenőrzi a táblát új rekordokért, és ha az üzenet állapota 'Küldés', megpróbálja elküldeni. Sikeres küldés esetén az adatbázis felhasználó az üzenet állapotát 'Elküldve'-re változtatja.
Ez a forráskód szerkezete:
sqlsmshandling.php:
Tartalmazza az üzenetépítő ASP elemeket. Például címkéket, szövegmezőket és a 'Küldés' gombot. A 'Küldés' gomb meghívja a 'connectToDatabase()', 'insertMessage(...)' és 'closeConnection()' függvényeket a sqlsmshandling_functions.php fájlból. A sqlsmshandling.php nem csak SMS üzeneteket kezel, hanem kivételeket is. Például üres mezőket.
sqlsmshandling_functions.php:
Ez a PHP fájl tartalmazza az összes belső függvényt, amelyet a 3 fájl használ.
- connectToDatabase(): Kapcsolódik a MySQL szerver egy adatbázisához.
- closeConnection(): Lezárja a kapcsolatot, amelyet a connectToDatabase() hozott létre.
- insertMessage(címzett, üzenettípus, üzenetszöveg):
INSERT utasítást futtat az adatbázison. Ez az utasítás beszúrja az üzenet rekordot a kimenő üzenetek táblájába.
- showOutgoingMessagesInTable():
Kiválasztja az üzeneteket a kimenő üzenetek SQL táblájából és HTML táblát épít belőlük a böngésződben.
- showIncomingMessagesInTable():
Kiválasztja az üzeneteket a bejövő üzenetek SQL táblájából és HTML táblát épít belőlük a böngésződben.
sqlsmshandling_inoutmessages.php:
HTML táblákat épít. A connectToDatabase(), showOutgoingMessagesInTable(), showIncomingMessagesInTable() és closeConnection() függvényeket használja a táblák újragenerálásához. Ezek a függvények a sqlsmshandling_functions.php fájlban érhetők el.
A folyamat részletes leírása az 1. ábrán látható módon:
1. lépés: Bemeneti űrlap létrehozása
A sqlsmshandling.php létrehoz egy űrlapot (3. ábra) az SMS adatok felkéréséhez a felhasználótól. Az űrlap címkéket és szövegmezőket tartalmaz, plusz egy 'Küldés' gombot. Az internetes felhasználó kitölti a címzett és üzenet mezőket, majd megnyomja a 'Küldés' gombot.
sqlsmshandling.php
... <form action="" method="post"> <table border="0" align="centre"> <tr> <td colspan="2" align="centre"> <font style="font-weight: bold; font-size: 16px;">Üzenet összeállítása</font> <br /><br /> </td> </tr> <tr> <td valign="top">Címzett: </td> <td> <textarea name="textAreaRecipient" cols="40" rows="2">...</textarea> </td> </tr> <tr> <td valign="top">Üzenet szövege: </td> <td> <textarea name="textAreaMessage" cols="40" rows="10">...</textarea> </td> </tr> <tr> <td colspan="2" align="centre"> <input type="submit" value="Küldés"> </td> </tr> <tr><td colspan='2' align='centre'> ... </td></tr> </table> </form> ...
3. ábra - HTML űrlap létrehozása
Ha az internetes felhasználó megnyomja a 'Küldés' gombot, a következő szkript fut le:
... <?php if (isset($_POST["textAreaRecipient"]) && $_POST["textAreaRecipient"] == "") { echo "A címzett mező nem lehet üres!"; } else if (isset($_POST["textAreaRecipient"]) && $_POST["textAreaRecipient"] != "") { try { connectToDatabase(); if (insertMessage($_POST["textAreaRecipient"],"SMS:TEXT",$_POST["textAreaMessage"])) { echo "A beszúrás sikeres volt!"; } closeConnection(); } catch (Exception $exc) { echo "Hiba: " . $exc->getMessage(); } } ?> ...
4. ábra - Bejelentkezik és beszúrja az üzenetet az adatbázis táblába az insertMessage(...) függvény meghívásával
2. lépés: Az HTML szövegmezők adatainak feldolgozása
Ha mindkét szövegmező ki van töltve, az adatokat feldolgozzuk és beszúrjuk az SQL adatbázis kimenő üzenetek táblájába. Az insertMessage(…) függvény (5. ábra) képes ezt elérni.
Ne feledd, hogy az üzenet rekordot a szkript szúrja be a MySQL adatbázisba, amely korábban bejelentkezett (lásd a 4. ábrát).
sqlsmshandling_functions.php
... function insertMessage ($recipient, $messageType, $messageText) { $query = "insert into ozekimessageout (receiver,msgtype,msg,status) "; $query .= "values ('" . $recipient . "', '" . $messageType . "', '" . $messageText . "', 'send');"; $result = mysql_query($query); if (!$result) { echo (mysql_error() . "
"); return false; } return true; } ...
5. ábra - insertMessage(...) függvény
3. lépés: Kimenő és bejövő üzenet táblák létrehozása
Ha megnyomod az F5-öt vagy a frissítés gombot a böngésződben, a kimenő és bejövő táblák frissülnek az MySQL adatbázisból beolvasott információkkal. Példaként láthatod a showOutgoingMessagesInTable() függvényt alább (6. ábra).
sqlsmshandling_functions.php
function showOutgoingMessagesInTable() { $query = "select id,sender,receiver,senttime,receivedtime,operator,status,msgtype, msg from ozekimessageout;"; $result = mysql_query($query); if (!$result) { echo (mysql_error() . "<br>"); return false; } try { echo "<table border='1'>"; echo "<tr><td>ID</td><td>Feladó</td><td>Címzett</td> <td>Küldés ideje</td><td>Fogadás ideje</td><td>Szolgáltató</td>"; echo "<td>Állapot</td><td> Üzenet típusa</td><td>Üzenet szövege</td></tr>"; while ($row = mysql_fetch_assoc($result)) { echo "<tr>"; echo "<td>" . $row["id"] . "</td>"; echo "<td>" . $row["sender"] . "</td>"; echo "<td>" . $row["receiver"] . "</td>"; echo "<td>" . $row["senttime"] . "</td>"; echo "<td>" . $row["receivedtime"] . "</td>"; echo "<td>" . $row["operator"] . "</td>"; echo "<td>" . $row["status"] . "</td>"; echo "<td>" . $row["msgtype"] . "</td>"; echo "<td>" . $row["msg"] . "</td>"; echo "</tr>"; } echo "</table>"; mysql_free_result($result); } catch (Exception $exc) { echo (mysql_error() . "<br>"); return false; } return true; } ...
6. ábra - showOutgoingMessagesInTable() függvény: HTML táblát generál a kimenő üzenetekből
Gyakran ismételt kérdések
Kérdés: Küldhetek más típusú üzenetet, mint 'SMS:TEXT'?
Válasz: Igen. Például egy Wap push üzenetet, amikor meghívod az insertMessage(...) függvényt (7. ábra).
insertMessage ($_POST["textAreaRecipient"], "SMS:WAPPUSH", $_POST["textAreaMessage"])
Az űrlapon a következőt kell írni az 'Üzenet szövege' szövegmezőbe:
<si> <indication href="http://target_address" action="signal-high"> leírás szövege </indication> </si>
7. ábra - SMS:TEXT módosítva SMS:WAPPUSH-ra
Az 'indication' tag 'action' paramétere a következő lehet:
signal-high, signal-medium, signal-low, signal-none, signal-delete.
Kérdés: Futtatható a PHP-t támogató HTTP szerver egy másik számítógépen, mint a MySQL szerver és az Ozeki SMS Gateway?
Válasz: Igen, futtatható. A PHP szkriptben állítsd be a MySQL adatbázisod IP címét és a tényleges bejelentkezési adatokat.
Kérdés: Megjeleníthetem a címzettnek a feladó telefonszámát?
Válasz: Igen, megteheted. Készíts egy szövegmezőt a feladó telefonszámához, vagy módosítsd az insertMessage(...) függvényt (8. ábra).
Ne feledd, hogy ez csak akkor működik, ha IP SMS szolgáltatói kapcsolatod van.
function insertMessage($sender, $recipient, $messageType, $messageText) { ... $query = "insert into ozekimessageout (sender,receiver,msgtype,msg,status) "; $query .= "values ('".$sender."','".$recipient."',". "'".$messageType."','".$messageText."','send');"; $result = mysql_query($query); ... }
Összefoglalás
Ez a cikk egy megoldásról szól az SMS üzenetkezeléshez MySQL használatával az Ozeki SMS Gateway segítségével, és arról, hogyan állítsd be ezt a rendszert. Ha követed a lépésről lépésre haladó oktatóanyagot, és implementálod ezt a megoldást, képes leszel az üzenetküldő rendszeredet SQL utasításokkal kezelni a PHP alkalmazásodon keresztül. Az SMS bejelentkezés hozzáadásával nemcsak szervezett és egyszerű SMS üzenetküldést biztosít ez a kiegészítés, hanem fejlett weboldal biztonságot is nyújt.
Az Ozeki weboldala tele van cikkekkel, amelyeket érdemes elolvasnod, használd ki a lehetőséget, és látogass el ezekre az oldalakra. Először is nézd meg az útmutatót arról, hogyan küldj SMS üzeneteket a weboldaladról PHP és HTTP API használatával.
Töltsd le az Ozeki SMS Gateway-t most, és hagyd, hogy segítsünk céljaid elérésében!
More information
- SMS küldése MySQL-ből PHP-val
- SMS küldése weboldalról PHP és MySQL használatával
- SMS küldése weboldalról PHP és HTTP API használatával
- PHP Egyszeri jelszó