SMS von MySQL auf Ihrer Website senden
Sie können Datenbanken mit SQL-Anweisungen verwalten. Sie können SQL-Anweisungen über PHP senden. Dadurch können Sie Datenbanktabellen manipulieren. Zum Beispiel kann PHP Tabelleneinträge von SMS-Nachrichten zum Versenden hinzufügen, aber es kann auch Einträge von eingehenden Nachrichten lesen.
Download: MySQL_PHP_Example.zip
Die PHP-Lösung richtet sich an Webentwickler mit Grundkenntnissen in PHP und SQL. Sie können den PHP-Quellcode herunterladen, um dieses Schritt-für-Schritt-Tutorial mit grundlegenden Anweisungen zur Implementierung der Lösung durchzuführen.
Warum ist eine SMS-Gateway mit einer Datenbank und PHP eine nützliche Kombination
Dies ist eine nützliche PHP-Lösung für
- das Hinzufügen von SMS-Funktionen zu Ihrer Website.
- das Hinzufügen von SMS-Funktionen zu Ihrem Unternehmensintranet.
- die Erstellung automatisierter SMS-Benachrichtigungen.
- die Erhöhung der Website-Sicherheit durch SMS-Login.
Anforderungen
Sie benötigen einen Ozeki SMS Gateway, einen Webserver und einen MySQL-Server. Sie können diese Funktion vom selben Computer oder von zwei verschiedenen Maschinen aus hosten, wie in der folgenden Tabelle dargestellt:
PHP-Host: |
Betriebssystem: Linux oder Windows Webserver (Apache oder IIS) PHP MySQL-Server |
Ozeki SMS Gateway-Host: |
Betriebssystem: Windows oder Linux .NET Framework (bei Windows) oder Mono (bei Linux) Ozeki SMS Gateway |
![]() | Ozeki SMS Gateway kann durch Öffnen der Download-Seite bezogen werden: Ozeki SMS Gateway herunterladen! |
Wie funktioniert es
Bevor Sie diese PHP-Anwendung verwenden, sollten Sie IP-SMS-Dienstanbieter über das Internet nutzen.
Das PHP-Beispiel in diesem Tutorial kann Datensätze lesen oder neue Tabelleneinträge einfügen. Dies ist sehr nützlich, um eingehende Nachrichten zu lesen oder ausgehende Nachrichten zu schreiben. Wenn Sie sehen möchten, wie die Lösung funktioniert, schauen Sie sich Abbildung 1 an.
Im Diagramm sehen Sie den "Internetnutzer", der tatsächlich SMS-Nachrichten über einen Browser sendet und empfängt. Der Internetnutzer ist mit einem PHP-fähigen Webserver verbunden, der Datenbanken auf dem SQL-Server verwalten kann, und diese Datenbanken gehören zu Ozeki SMS Gateway. Im letzten Schritt sendet Ozeki SMS Gateway die Nachricht über das GSM-Netzwerk an ein Mobiltelefon.
Der Internetnutzer kann von überall auf das Internet zugreifen. Das Einzige, was zählt, ist, ob er die IP-Adresse oder die URL des Computers kennt, auf dem der PHP-Server läuft, und ob er berechtigt ist, sich in die MySQL-Datenbank einzuloggen, um den gewünschten SMS-Nachrichteneintrag einzufügen, der später von Ozeki SMS Gateway ausgewählt wird, um über das GSM-Netzwerk an das Mobiltelefon des Empfängers gesendet zu werden.
Dieser Workflow funktioniert auch in umgekehrter Richtung. Hier empfängt Ozeki SMS Gateway die SMS-Nachricht aus dem GSM-Netzwerk und speichert sie in der MySQL-Datenbank, damit der PHP-Server sie lesen und auf dem Bildschirm des Internetnutzers anzeigen kann.
Wie man eine MySQL-Datenbank erstellt
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';
Abbildung 2 - Erstellen von Tabellen in der von Ozeki SMS Gateway benötigten Struktur
Wie man einen Datenbankbenutzer in Ozeki SMS Gateway erstellt
Schritt 1: Bitte öffnen Sie Ozeki 10 in einem Webbrowser
Schritt 2: Wählen Sie die SMS Gateway-Anwendung aus dem integrierten Desktop von Ozeki 10 aus
Schritt 3: Erstellen Sie den Datenbankbenutzer in SMS Gateway indem Sie den Anweisungen folgen.
Schritt 1: | Entpacken Sie zuerst die heruntergeladene ZIP-Datei. |
Schritt 2: | Kopieren Sie sqlsmshandling.php, sqlsmshandling_inoutmessages.php und sqlsmshandling_functions.php in das Hauptverzeichnis des Webservers. |
Schritt 3: | Passen Sie die IP-Adresse des SQL-Servers, den Benutzernamen und das Passwort in sqlsmshandling_functions.php an. |
Schritt 4: | Falls Ozeki SMS Gateway nicht läuft, starten Sie es bitte. |
Schritt 5: | Geben Sie die IP-Adresse Ihres PHP-Servers in Ihrem Webbrowser ein: http://127.0.0.1/sqlsmshandling.php (Sie sollten die IP des PHP-Servers ändern oder auf 127.0.0.1 belassen, falls der PHP-Server und Ihr Webbrowser auf demselben Gerät laufen.) |
Schritt 6: | Füllen Sie das HTML-Formular aus und drücken Sie auf 'Senden'. |
Schritt 7: | Wenn alles korrekt verlaufen ist, zeigt Ozeki SMS Gateway den Nachrichtenstatus im Log des Datenbankbenutzers an. |
Hier können Sie weitere Details zum herunterladbaren Beispielskript erfahren.
Das Skript muss die Benutzeranmeldedaten für Ihre MySQL-Datenbank kennen. Die Hauptaufgabe des Skripts besteht darin, die neue Nachricht in Ihre ausgehende Nachrichtentabelle einzufügen. Diese Tabelle wird im aktuellen Beispiel 'ozekimessageout' genannt.
Der Datenbankbenutzer des Ozeki SMS Gateway überprüft die Tabelle regelmäßig auf neue Einträge und wenn der Status der Nachricht 'Send' ist, wird versucht, sie zu senden. Im Erfolgsfall ändert der Datenbankbenutzer den Status der Nachricht in 'Sent'.
Dies ist die Struktur des Quellcodes:
sqlsmshandling.php:
Es enthält ASP-Elemente zum Erstellen von Nachrichten. Zum Beispiel Beschriftungen, Textfelder und die Schaltfläche 'Senden'. Die Schaltfläche 'Senden' ruft die Funktionen 'connectToDatabase()', 'insertMessage(...)' und 'closeConnection()' aus sqlsmshandling_functions.php auf. sqlsmshandling.php verarbeitet nicht nur SMS-Nachrichten, sondern auch Ausnahmen. Zum Beispiel leere Felder.
sqlsmshandling_functions.php:
Diese PHP-Datei enthält alle internen Funktionen, die von den 3 Dateien verwendet werden.
- connectToDatabase(): Stellt eine Verbindung zu einer Datenbank des MySQL-Servers her.
- closeConnection(): Schließt die Verbindung, die in connectToDatabase() erstellt wurde.
- insertMessage(recipient, messageType, messageText):
Führt eine INSERT-Anweisung in der Datenbank aus. Diese Anweisung fügt den Nachrichteneintrag in die ausgehende Nachrichtentabelle ein.
- showOutgoingMessagesInTable():
Wählt Nachrichten aus der SQL-Tabelle der ausgehenden Nachrichten aus und erstellt eine HTML-Tabelle
daraus in Ihrem Webbrowser.
- showIncomingMessagesInTable():
Wählt Nachrichten aus der SQL-Tabelle der eingehenden Nachrichten aus und erstellt eine HTML-Tabelle
daraus in Ihrem Webbrowser.
sqlsmshandling_inoutmessages.php:
Es erstellt HTML-Tabellen. Es verwendet die Funktionen connectToDatabase(), showOutgoingMessagesInTable(), showIncomingMessagesInTable() und closeConnection() zum erneuten Generieren der Tabellen. Diese Funktionen sind in sqlsmshandling_functions.php verfügbar.
Die detaillierte Beschreibung des Prozesses in Abbildung 1 oben:
Schritt 1: Eingabeformular erstellen
sqlsmshandling.php erstellt ein Formular (Abbildung 3), um SMS-Daten vom Benutzer anzufordern. Das Formular besteht aus Beschriftungen und Textfeldern sowie einer Schaltfläche 'Senden'. Der Internetbenutzer füllt die Felder für Empfänger und Nachricht aus und klickt auf 'Senden'.
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;">Nachricht verfassen</font> <br /><br /> </td> </tr> <tr> <td valign="top">Empfänger: </td> <td> <textarea name="textAreaRecipient" cols="40" rows="2">...</textarea> </td> </tr> <tr> <td valign="top">Nachrichtentext: </td> <td> <textarea name="textAreaMessage" cols="40" rows="10">...</textarea> </td> </tr> <tr> <td colspan="2" align="centre"> <input type="submit" value="Senden"> </td> </tr> <tr><td colspan='2' align='centre'> ... </td></tr> </table> </form> ...
Abbildung 3 - Erstellt HTML-Formular
Wenn der Internetbenutzer auf 'Senden' klickt, wird das folgende Skript ausgeführt:
... <?php if (isset($_POST["textAreaRecipient"]) && $_POST["textAreaRecipient"] == "") { echo "Das Empfängerfeld darf nicht leer sein!"; } else if (isset($_POST["textAreaRecipient"]) && $_POST["textAreaRecipient"] != "") { try { connectToDatabase(); if (insertMessage($_POST["textAreaRecipient"],"SMS:TEXT",$_POST["textAreaMessage"])) { echo "Die Einfügung war erfolgreich!"; } closeConnection(); } catch (Exception $exc) { echo "Fehler: " . $exc->getMessage(); } } ?> ...
Abbildung 4 - Es meldet sich an und fügt die Nachricht in die Datenbanktabelle ein, indem es die Funktion insertMessage(...) aufruft
Schritt 2: Verarbeitung der Daten in den HTML-Textfeldern
Wenn beide Textfelder ausgefüllt sind, werden die Daten verarbeitet und in die ausgehende Nachrichtentabelle der SQL-Datenbank eingefügt. Die insertMessage(…) Funktion (Abbildung 5) kann dies erreichen.
Beachten Sie, dass der Nachrichteneintrag in die MySQL-Datenbank durch das Skript eingefügt wird, das sich zuvor angemeldet hat (Abbildung 4 oben).
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; } ...
Abbildung 5 - insertMessage(...) Funktion
Schritt 3: Erstellen von Tabellen für ausgehende und eingehende Nachrichten
Wenn Sie F5 drücken oder im Browser auf Aktualisieren klicken, werden die Tabellen für ausgehende und eingehende Nachrichten durch das Auslesen von Informationen aus der MySQL-Datenbank aktualisiert. Als Beispiel können Sie showOutgoingMessagesInTable() unten sehen (Abbildung 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>Absender</td><td>Empfänger</td> <td>Sendezeit</td><td>Empfangszeit</td><td>Betreiber</td>"; echo "<td>Status</td><td> Nachrichtentyp</td><td>Nachrichtentext</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; } ...
Abbildung 6 - showOutgoingMessagesInTable() Funktion: Es generiert eine HTML-Tabelle aus ausgehenden Nachrichten
Häufig gestellte Fragen
Frage: Kann ich einen anderen Nachrichtentyp als 'SMS:TEXT' senden?
Antwort: Ja. Zum Beispiel eine Wap-Push-Nachricht beim Aufruf der insertMessage(...)-Funktion (Abbildung 7).
insertMessage ($_POST["textAreaRecipient"], "SMS:WAPPUSH", $_POST["textAreaMessage"])
Im Formular sollte folgendes in das 'Nachrichtentext'-Textfeld geschrieben werden:
<si> <indication href="http://target_address" action="signal-high"> Beschreibungstext </indication> </si>
Abbildung 7 - SMS:TEXT zu SMS:WAPPUSH geändert
Der 'action'-Parameter des 'indication'-Tags kann einer der folgenden sein:
signal-high, signal-medium, signal-low, signal-none, signal-delete.
Frage: Kann der PHP-fähige HTTP-Server auf einem anderen Computer laufen als der MySQL-Server und das Ozeki SMS Gateway?
Antwort: Ja, das ist möglich. Im PHP-Skript müssen Sie die IP-Adresse und die aktuellen Anmeldedaten für Ihre MySQL-Datenbank festlegen.
Frage: Kann ich dem Empfänger die Telefonnummer des Absenders anzeigen?
Antwort: Ja, das können Sie. Bitte erstellen Sie ein Textfeld für die Telefonnummer des Absenders oder ändern Sie die insertMessage(...)-Funktion (Abbildung 8).
Beachten Sie, dass dies nur funktioniert, wenn Sie eine IP-SMS-Dienstanbieter-Verbindung haben.
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); ... }
Zusammenfassung
Dieser Artikel handelt von einer Lösung zur Verwaltung von SMS-Nachrichten mit MySQL unter Verwendung des Ozeki SMS Gateways und wie man dieses System einrichtet. Wenn Sie diese Lösung durch Befolgen des Schritt-für-Schritt-Tutorials implementieren, können Sie Ihr Nachrichtensystem über SQL-Anweisungen durch Ihre PHP-Anwendung steuern. Neben der organisierten und einfachen SMS-Kommunikation, die diese Ergänzung bietet, gibt es noch einen weiteren großen Vorteil: die erweiterte Website-Sicherheit, die Sie durch die Hinzufügung einer SMS-Anmeldung erreichen können.
Die Ozeki-Website ist voller Artikel, die ich zum Lesen empfehle. Nutzen Sie die Gelegenheit und besuchen Sie diese Seiten. Nehmen wir zuerst den Leitfaden, wie Sie Ihre Website zum Versenden von SMS-Nachrichten nutzen können.
Laden Sie jetzt das Ozeki SMS Gateway herunter und lassen Sie uns Ihnen helfen, Ihre Ziele zu erreichen!
More information
- SMS von MySQL mit PHP senden
- SMS von einer Website mit PHP und MySQL senden
- SMS von einer Website mit PHP und HTTP API senden
- PHP Einmalpasswort