Odesílejte SMS z MySQL na vašem webu
Databáze můžete spravovat pomocí SQL příkazů. SQL příkazy můžete odesílat přes PHP. To vám umožňuje manipulovat s tabulkami v databázi. Například PHP může přidávat záznamy SMS zpráv k odeslání, ale také může číst záznamy příchozích zpráv.
Stáhnout: MySQL_PHP_Example.zip
Toto PHP řešení je určeno pro webové vývojáře se základními znalostmi PHP a SQL. Můžete stáhnout zdrojový kód v PHP, abyste mohli postupovat podle tohoto návodu, který obsahuje základní instrukce k implementaci řešení.
Proč je kombinace SMS Gateway s databází a PHP užitečná
Toto je užitečné PHP řešení pro:
- přidání SMS funkcí na váš web.
- přidání SMS funkcí do vaší firemní intranetové sítě.
- vytváření automatizovaných SMS notifikací.
- zvýšení bezpečnosti webu přidáním SMS přihlášení.
Požadavky
Budete potřebovat hostovat Ozeki SMS Gateway, webový server a MySQL server. Tuto funkci můžete hostovat na stejném počítači nebo na dvou různých strojích, jak vidíte v tabulce níže:
Hostitel PHP: |
Operační systém: Linux nebo Windows Webový server (Apache nebo IIS) PHP MySQL Server |
Hostitel Ozeki SMS Gateway: |
Operační systém: Windows nebo Linux .NET framework (pokud používáte Windows) nebo Mono (pokud používáte Linux) Ozeki SMS Gateway |
![]() | Ozeki SMS Gateway můžete získat otevřením stránky ke stažení: Stáhnout Ozeki SMS Gateway! |
Jak to funguje
Než začnete používat tuto PHP aplikaci, měli byste poskytovatele SMS služeb přes IP přes internet.
PHP příklad, který najdete v tomto návodu, umí číst záznamy nebo vkládat nové záznamy do tabulky. To je velmi užitečné při čtení příchozích zpráv nebo psaní odchozích zpráv. Pokud chcete vidět, jak řešení funguje, podívejte se na Obrázek 1.
V diagramu vidíte "Internetového uživatele", který bude skutečně odesílat a přijímat SMS zprávy přes prohlížeč. Internetový uživatel je připojen k webovému serveru s podporou PHP, který umí spravovat databáze na SQL serveru a tyto databáze patří Ozeki SMS Gateway. V posledním kroku Ozeki SMS Gateway odešle zprávu na mobilní telefon přes GSM síť.
Internetový uživatel může přistupovat k internetu odkudkoli. Jediné, na čem záleží, je, zda zná IP adresu nebo URL počítače, na kterém běží PHP server, a zda je oprávněn přihlásit se do MySQL databáze, aby mohl vložit požadovaný záznam SMS zprávy, který bude později vybrán Ozeki SMS Gateway k odeslání na mobilní telefon příjemce pomocí GSM sítě.
Tento pracovní postup funguje i v opačném směru. Když Ozeki SMS Gateway přijme SMS zprávu z GSM sítě a uloží ji do MySQL databáze, PHP server ji může přečíst a zobrazit na obrazovce internetového uživatele.
Jak vytvořit MySQL databázi
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';
Obrázek 2 - Vytváření tabulek ve struktuře požadované Ozeki SMS Gateway
Jak vytvořit databázového uživatele v Ozeki SMS Gateway
Krok 1: Otevřete Ozeki 10 v prohlížeči
Krok 2: Vyberte aplikaci SMS Gateway z integrované plochy Ozeki 10
Krok 3: Vytvořte databázového uživatele v SMS Gateway podle pokynů.
Krok 1: | Nejprve rozbalte stažený zip soubor. |
Krok 2: | Zkopírujte soubory sqlsmshandling.php, sqlsmshandling_inoutmessages.php a sqlsmshandling_functions.php do hlavního adresáře webového serveru. |
Krok 3: | Upravte IP adresu SQL serveru, uživatelské jméno a heslo v souboru sqlsmshandling_functions.php. |
Krok 4: | Pokud Ozeki SMS Gateway neběží, spusťte jej. |
Krok 5: | Zadejte IP adresu vašeho PHP serveru do webového prohlížeče: http://127.0.0.1/sqlsmshandling.php (IP adresu PHP serveru byste měli změnit nebo ponechat 127.0.0.1, pokud PHP server a webový prohlížeč běží na stejném počítači.) |
Krok 6: | Vyplňte HTML formulář a stiskněte 'Odeslat'. |
Krok 7: | Pokud vše proběhlo v pořádku, Ozeki SMS Gateway zobrazí stav zprávy v logu uživatele databáze. |
PHP skript
Zde můžete najít více podrobností o stahovatelném ukázkovém skriptu.
Skript musí znát přihlašovací údaje uživatele k vaší MySQL databázi. Hlavní rolí skriptu je vložit novou zprávu do vaší tabulky odchozích zpráv. V tomto příkladu se tato tabulka nazývá 'ozekimessageout'.
Databázový uživatel Ozeki SMS Gateway pravidelně kontroluje tuto tabulku pro nové záznamy a pokud je stav zprávy 'Send', pokusí se ji odeslat. V případě úspěchu databázový uživatel změní stav zprávy na 'Sent'.
Toto je struktura zdrojového kódu:
sqlsmshandling.php:
Obsahuje prvky pro vytváření zpráv v ASP. Například štítky, textová pole a tlačítko 'Odeslat'. Tlačítko 'Odeslat' volá funkce 'connectToDatabase()', 'insertMessage(...)' a 'closeConnection()' ze souboru sqlsmshandling_functions.php. sqlsmshandling.php zpracovává nejen SMS zprávy, ale také výjimky. Například prázdná pole.
sqlsmshandling_functions.php:
Tento PHP soubor obsahuje všechny interní funkce používané třemi soubory.
- connectToDatabase(): Připojí se k databázi na MySQL serveru.
- closeConnection(): Uzavře spojení, které bylo vytvořeno v connectToDatabase().
- insertMessage(recipient, messageType, messageText):
Spustí příkaz INSERT v databázi. Tento příkaz vloží záznam zprávy do tabulky odchozích zpráv.
- showOutgoingMessagesInTable():
Vybere zprávy z SQL tabulky odchozích zpráv a vytvoří z nich HTML tabulku
ve vašem webovém prohlížeči.
- showIncomingMessagesInTable():
Vybere zprávy z SQL tabulky příchozích zpráv a vytvoří z nich HTML tabulku
ve vašem webovém prohlížeči.
sqlsmshandling_inoutmessages.php:
Vytváří HTML tabulky. Používá funkce connectToDatabase(), showOutgoingMessagesInTable(), showIncomingMessagesInTable() a closeConnection() pro obnovení tabulek. Tyto funkce jsou dostupné v sqlsmshandling_functions.php.
Podrobný popis procesu na obrázku 1 výše:
Krok 1: Vytvoření vstupního formuláře
sqlsmshandling.php vytváří formulář (Obrázek 3) pro vyžádání dat SMS od uživatele. Formulář se skládá z popisků a textových polí plus tlačítka 'Odeslat'. Internetový uživatel vyplní pole příjemce a zprávy a klikne na 'Odeslat'.
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;">Napsat zprávu</font> <br /><br /> </td> </tr> <tr> <td valign="top">Příjemce: </td> <td> <textarea name="textAreaRecipient" cols="40" rows="2">...</textarea> </td> </tr> <tr> <td valign="top">Text zprávy: </td> <td> <textarea name="textAreaMessage" cols="40" rows="10">...</textarea> </td> </tr> <tr> <td colspan="2" align="centre"> <input type="submit" value="Odeslat"> </td> </tr> <tr><td colspan='2' align='centre'> ... </td></tr> </table> </form> ...
Obrázek 3 - Vytváří HTML formulář
Pokud internetový uživatel klikne na 'Odeslat', spustí se následující skript:
... <?php if (isset($_POST["textAreaRecipient"]) && $_POST["textAreaRecipient"] == "") { echo "Pole příjemce nesmí být prázdné!"; } else if (isset($_POST["textAreaRecipient"]) && $_POST["textAreaRecipient"] != "") { try { connectToDatabase(); if (insertMessage($_POST["textAreaRecipient"],"SMS:TEXT",$_POST["textAreaMessage"])) { echo "Vložení bylo úspěšné!"; } closeConnection(); } catch (Exception $exc) { echo "Chyba: " . $exc->getMessage(); } } ?> ...
Obrázek 4 - Přihlásí se a vloží zprávu do databázové tabulky voláním funkce insertMessage(...)
Krok 2: Zpracování dat v HTML textových polích
Pokud jsou obě textová pole vyplněna, data budou zpracována a vložena do tabulky odchozích zpráv SQL databáze. Toho lze dosáhnout pomocí funkce insertMessage(…) (Obrázek 5).
Mějte na paměti, že záznam zprávy bude vložen do MySQL databáze skriptem, který se předtím přihlásil (Obrázek 4 výše).
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; } ...
Obrázek 5 - funkce insertMessage(...)
Krok 3: Vytváření tabulek odchozích a příchozích zpráv
Pokud stisknete F5 nebo kliknete na obnovit ve svém prohlížeči, tabulky odchozích a příchozích zpráv budou aktualizovány čtením informací z MySQL databáze. Jako příklad můžete vidět showOutgoingMessagesInTable() níže (Obrázek 6).
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>Odesílatel</td><td>Příjemce</td> <td>Čas odeslání</td><td>Čas přijetí</td><td>Operátor</td>"; echo "<td>Stav</td><td> Typ zprávy</td><td>Text zprávy</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; } ...
Obrázek 6 - funkce showOutgoingMessagesInTable(): Generuje HTML tabulku z odchozích zpráv
Často kladené dotazy
Otázka: Mohu odeslat jiný typ zprávy než 'SMS:TEXT'?
Odpověď: Ano. Například Wap push zprávu při volání funkce insertMessage(...) (Obrázek 7).
insertMessage ($_POST["textAreaRecipient"], "SMS:WAPPUSH", $_POST["textAreaMessage"])
Ve formuláři by mělo být v textovém poli 'Text zprávy' napsáno:
<si> <indication href="http://target_address" action="signal-high"> text popisu </indication> </si>
Obrázek 7 - SMS:TEXT změněno na SMS:WAPPUSH
Parametr 'action' tagu 'indication' může být jeden z následujících:
signal-high, signal-medium, signal-low, signal-none, signal-delete.
Otázka: Může být HTTP server s PHP spuštěn na jiném počítači než MySQL server a Ozeki SMS Gateway?
Odpověď: Ano, může. V PHP skriptu nastavte IP adresu a aktuální přihlašovací údaje k vaší MySQL databázi.
Otázka: Mohu příjemci zobrazit telefonní číslo odesílatele?
Odpověď: Ano, můžete. Vytvořte textové pole pro telefonní číslo odesílatele nebo upravte funkci insertMessage(...) (Obrázek 8).
Mějte na paměti, že to funguje pouze v případě, že máte připojení k IP SMS poskytovateli.
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); ... }
Shrnutí
Tento článek pojednává o řešení pro správu SMS zpráv s MySQL pomocí Ozeki SMS Gateway a o tom, jak tento systém nastavit. Pokud toto řešení implementujete podle návodu krok za krokem, budete moci ovládat svůj systém zasílání zpráv pomocí SQL příkazů prostřednictvím vaší PHP aplikace. Kromě organizovaného a jednoduchého zasílání SMS zpráv, které toto řešení nabízí, je zde ještě jedna velká výhoda, kterou je pokročilá zabezpečení webových stránek, kterého můžete dosáhnout přidáním SMS přihlášení.
Webové stránky Ozeki jsou plné článků, které doporučuji přečíst, využijte příležitost a navštivte tyto stránky. Začněte průvodcem, jak používat váš web k odesílání SMS zpráv.
Stáhněte si Ozeki SMS Gateway nyní a nechte nás vám pomoci dosáhnout vašich cílů!
More information
- Odeslat SMS z MySQL pomocí PHP
- Odesílání SMS z webu pomocí PHP a MySQL
- Odesílání SMS z webu pomocí PHP a HTTP API
- PHP jednorázové heslo