Envoyer des SMS depuis MySQL sur votre site Web

Vous pouvez gérer les bases de données avec des instructions SQL. Vous pouvez envoyer des instructions SQL via PHP. Cela vous permet de manipuler les tables de la base de données. Par exemple, PHP peut ajouter des enregistrements de table de messages SMS à envoyer, mais il peut aussi lire les enregistrements des messages entrants.

Télécharger : MySQL_PHP_Example.zip

Vidéo 1 - Comment envoyer des SMS depuis MySQL sur votre site Web (Tutoriel vidéo)

La solution PHP est destinée aux développeurs web ayant des connaissances de base en PHP et SQL. Vous pouvez télécharger le code source PHP, afin de suivre ce tutoriel étape par étape contenant les instructions de base pour implémenter la solution.

Pourquoi une passerelle SMS avec une base de données et PHP est une combinaison utile

Il s'agit d'une solution PHP utile pour

  • ajouter des fonctions SMS à votre site web.
  • ajouter des fonctions SMS à votre intranet d'entreprise.
  • créer des notifications SMS automatisées.
  • améliorer la sécurité du site web en ajoutant une connexion par SMS.

Prérequis

Vous aurez besoin d'héberger une passerelle SMS Ozeki, un serveur web et un serveur MySQL. Vous pouvez héberger cette fonction sur le même ordinateur ou sur deux machines comme vous pouvez le voir dans le tableau ci-dessous :

Hôte PHP : Système d'exploitation : Linux ou Windows
Serveur web (Apache ou IIS)
PHP
Serveur MySQL
Hôte de la passerelle SMS Ozeki : Système d'exploitation : Windows ou Linux
Framework .NET (si vous utilisez Windows) ou Mono (si vous utilisez Linux)
Passerelle SMS Ozeki

La passerelle SMS Ozeki peut être obtenue en
ouvrant la page de téléchargement :
Télécharger la passerelle SMS Ozeki !

Comment ça marche

Avant de commencer à utiliser cette application PHP, vous devez fournisseur de services SMS IP via internet.

L'exemple PHP que vous pouvez trouver dans ce tutoriel est capable de lire des enregistrements ou d'insérer de nouveaux enregistrements dans une table. Ceci est très utile pour lire les messages entrants ou écrire les messages sortants. Si vous souhaitez voir comment la solution fonctionne, veuillez consulter Figure 1.

messagerie sms entre la passerelle sms ozeki, une base de données mysql et php
Figure 1 - Messagerie SMS entre la passerelle SMS Ozeki, une base de données MySQL et PHP

Vous pouvez voir l'« Utilisateur Internet » dans le diagramme, qui enverra et recevra réellement des messages SMS via un navigateur. L'utilisateur internet est connecté à un serveur web compatible PHP, capable de gérer les bases de données sur le serveur SQL, et ces bases de données appartiennent à la passerelle SMS Ozeki. Dans l'étape finale, la passerelle SMS Ozeki envoie le message à un téléphone portable via le réseau GSM.

L'utilisateur internet peut accéder à internet depuis n'importe où. La seule chose qui compte est de savoir s'il connaît l'adresse IP ou l'URL de l'ordinateur exécutant le serveur PHP et s'il est autorisé à se connecter à la base de données MySQL, afin qu'il puisse insérer l'enregistrement de message SMS souhaité, qui sera ensuite sélectionné par la passerelle SMS Ozeki pour être envoyé au téléphone portable du destinataire en utilisant le réseau GSM.

Ce flux de travail fonctionne également dans le sens inverse. Où la passerelle SMS Ozeki reçoit le message SMS du réseau GSM et le sauvegarde dans la base de données MySQL, afin que le serveur PHP puisse le lire et l'afficher sur l'écran de l'utilisateur internet.

Comment créer une base de données MySQL

	

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';

Figure 2 - Création de tables dans la structure requise par la passerelle SMS Ozeki

Comment créer un utilisateur de base de données dans la passerelle SMS Ozeki

Étape 1 : Veuillez ouvrir Ozeki 10 dans un navigateur web
Étape 2 : Sélectionnez l'application Passerelle SMS depuis le bureau intégré d'Ozeki 10
Étape 3 : Créez l'utilisateur de base de données dans la passerelle SMS en suivant les instructions.

Comment utiliser le code Veuillez utiliser le code PHP que vous avez téléchargé et suivre ces étapes :
Étape 1 : Décompressez d'abord le fichier zip téléchargé.
Étape 2 : Copiez sqlsmshandling.php, sqlsmshandling_inoutmessages.php et sqlsmshandling_functions.php dans le répertoire principal du serveur web.
Étape 3 : Modifiez l'adresse IP du serveur SQL, le nom d'utilisateur et le mot de passe dans sqlsmshandling_functions.php.
Étape 4 : Si Ozeki SMS Gateway ne fonctionne pas, veuillez le démarrer.
Étape 5 : Entrez l'adresse IP de votre serveur PHP dans votre navigateur web : http://127.0.0.1/sqlsmshandling.php
(Vous devez changer l'IP du serveur PHP ou la laisser sur 127.0.0.1 si le serveur PHP et votre navigateur web fonctionnent sur la même machine.)
Étape 6 : Veuillez remplir le formulaire HTML et appuyer sur 'Envoyer'.
Étape 7 : Si tout s'est bien passé, Ozeki SMS Gateway affichera le statut du message dans le journal de l'utilisateur de la base de données.
Le script PHP

Vous pouvez trouver ici plus de détails sur l'exemple de script téléchargeable.

Le script doit connaître les identifiants de l'utilisateur pour votre base de données MySQL. Le rôle principal du script est d'insérer le nouveau message dans votre table de messages sortants. Cette table est appelée 'ozekimessageout' dans l'exemple actuel.

L'utilisateur de la base de données d'Ozeki SMS Gateway vérifie périodiquement la table pour de nouveaux enregistrements et si le statut du message est 'Envoyer', il tentera de l'envoyer. En cas de succès, l'utilisateur de la base de données changera le statut du message à 'Envoyé'.

Voici la structure du code source :

sqlsmshandling.php :

Il contient des éléments ASP de construction de message. Par exemple, des étiquettes, des zones de texte et le bouton 'Envoyer'. Le bouton 'Envoyer' appelle les fonctions 'connectToDatabase()', 'insertMessage(...)' et 'closeConnection()' depuis sqlsmshandling_functions.php. sqlsmshandling.php gère non seulement les messages SMS, mais aussi les exceptions. Par exemple, les champs vides.

sqlsmshandling_functions.php :

Ce fichier PHP contient toutes les fonctions internes utilisées par les 3 fichiers.

- connectToDatabase() : Se connecte à une base de données du serveur MySQL.
- closeConnection() : Ferme la connexion, qui a été créée dans connectToDatabase().
- insertMessage(destinataire, typeMessage, texteMessage) : Exécute une instruction INSERT sur la base de données. Cette instruction insère l'enregistrement du message dans la table des messages sortants.
- showOutgoingMessagesInTable() : Sélectionne les messages de la table SQL des messages sortants et construit un tableau HTML à partir d'eux dans votre navigateur web.
- showIncomingMessagesInTable() : Sélectionne les messages de la table SQL des messages entrants et construit un tableau HTML à partir d'eux dans votre navigateur web.

sqlsmshandling_inoutmessages.php :

Il construit des tableaux HTML. Il utilise les fonctions connectToDatabase(), showOutgoingMessagesInTable(), showIncomingMessagesInTable() et closeConnection() pour régénérer les tableaux. Ces fonctions sont disponibles dans sqlsmshandling_functions.php.

La description détaillée du processus dans la Figure 1 ci-dessus :

Étape 1 : Créer un formulaire de saisie

sqlsmshandling.php crée un formulaire (Figure 3) pour demander les données SMS à l'utilisateur. Le formulaire se compose d'étiquettes et de zones de texte, plus un bouton 'Envoyer'. L'utilisateur Internet remplit les champs destinataire et message et clique sur 'Envoyer'.

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;">Composer un message</font>
            <br /><br />
        </td>
    </tr>
    <tr>
        <td valign="top">Destinataire : </td>
        <td>
            <textarea name="textAreaRecipient" cols="40" rows="2">...</textarea>
        </td>
    </tr>
    <tr>
        <td valign="top">Texte du message : </td>
        <td>
            <textarea name="textAreaMessage" cols="40" rows="10">...</textarea>
        </td>
    </tr>
    <tr>
        <td colspan="2" align="centre">
            <input type="submit" value="Envoyer">
        </td>
    </tr>
    <tr><td colspan='2' align='centre'>
    ...
    </td></tr>
</table>
</form>
...

Figure 3 - Construit un formulaire HTML

Si l'utilisateur Internet clique sur 'Envoyer', le script suivant s'exécute :

...

<?php

    if (isset($_POST["textAreaRecipient"]) && $_POST["textAreaRecipient"] == "")
    {
        echo "Le champ destinataire ne doit pas être vide !";
    }
    else if (isset($_POST["textAreaRecipient"]) && $_POST["textAreaRecipient"] != "")
    {
    try
    {
        connectToDatabase();
        if (insertMessage($_POST["textAreaRecipient"],"SMS:TEXT",$_POST["textAreaMessage"]))
        {
            echo "L'insertion a réussi !";
        }
        closeConnection();
    }
    catch (Exception $exc)
    {
        echo "Erreur : " . $exc->getMessage();
    }
}
?>
...

Figure 4 - Il se connecte et insère le message dans la table de la base de données en appelant la fonction insertMessage(...)

Étape 2 : Traitement des données dans les zones de texte HTML

Si les deux zones de texte sont remplies, les données seront traitées et insérées dans la table des messages sortants de la base de données SQL. La fonction insertMessage(…) (Figure 5) peut réaliser cela.

Gardez à l'esprit que l'enregistrement du message va être inséré dans la base de données MySQL par le script qui s'est précédemment connecté (Figure 4 ci-dessus).

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; } ...

Figure 5 - fonction insertMessage(...)

Étape 3 : Création des tables de messages sortants et entrants

Si vous appuyez sur F5 ou cliquez sur actualiser dans votre navigateur, les tables des messages sortants et entrants seront mises à jour en lisant les informations de la base de données MySQL. À titre d'exemple, vous pouvez voir showOutgoingMessagesInTable() ci-dessous (Figure 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>Expéditeur</td><td>Destinataire</td>
        <td>Heure d'envoi</td><td>Heure de réception</td><td>Opérateur</td>";
        echo "<td>Statut</td><td>
        Type de message</td><td>Texte du message</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;
}
...

Figure 6 - fonction showOutgoingMessagesInTable() : Elle génère un tableau HTML à partir des messages sortants

Foire aux questions

Question : Puis-je envoyer un autre type de message que 'SMS:TEXT' ?
Réponse : Oui. Par exemple, un message Wap push en appelant la fonction insertMessage(...) (Figure 7).

insertMessage ($_POST["textAreaRecipient"], "SMS:WAPPUSH", $_POST["textAreaMessage"])

Sur le formulaire, le texte suivant doit être écrit dans la zone de texte 'Message text' :

<si>
<indication href="http://target_address" action="signal-high">
texte de description
</indication>
</si>

Figure 7 - SMS:TEXT remplacé par SMS:WAPPUSH

Le paramètre 'action' de la balise 'indication' peut être l'un des suivants :
signal-high, signal-medium, signal-low, signal-none, signal-delete.

Question : Le serveur HTTP avec PHP activé peut-il fonctionner sur un ordinateur différent du serveur MySQL et de la passerelle SMS Ozeki ?
Réponse : Oui, c'est possible. Dans le script PHP, veuillez configurer l'adresse IP et les identifiants de connexion réels à votre base de données MySQL.

Question : Puis-je afficher au destinataire le numéro de téléphone de l'expéditeur ?
Réponse : Oui, vous pouvez. Veuillez créer une zone de texte pour le numéro de téléphone de l'expéditeur ou modifier la fonction insertMessage(...) (Figure 8). Notez que cela ne fonctionne que si vous avez une connexion à un fournisseur de services SMS IP.

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);
...
}
Figure 8 - Fonction insertMessage(...) modifiée

Résumé

Cet article présente une solution pour gérer les messages SMS avec MySQL en utilisant la passerelle SMS Ozeki et comment configurer ce système. Si vous implémentez cette solution en suivant le tutoriel étape par étape, vous pourrez contrôler votre système de messagerie avec des requêtes SQL via votre application PHP. En plus de la messagerie SMS organisée et simplifiée que cette solution offre, elle présente un autre avantage majeur : la sécurité avancée du site web que vous pouvez atteindre en ajoutant une connexion par SMS.

Le site web d'Ozeki regorge d'articles que je recommande de lire, profitez-en et visitez ces pages. Commencez par le guide sur comment utiliser votre site web pour envoyer des SMS.

Téléchargez dès maintenant la passerelle SMS Ozeki et laissez-nous vous aider à atteindre vos objectifs !

More information