Trimite SMS din MySQL pe site-ul tău

Poți gestiona bazele de date cu instrucțiuni SQL. Poți trimite instrucțiuni SQL prin PHP. Acest lucru îți permite să manipulezi tabelele din baza de date. De exemplu, PHP poate adăuga înregistrări în tabele pentru mesaje SMS de trimis, dar poate și citi înregistrări pentru mesaje primite.

Descarcă: MySQL_PHP_Example.zip

Video 1 - Cum să trimiți SMS din MySQL pe site-ul tău (Tutorial video)

Soluția PHP este destinată dezvoltatorilor web cu cunoștințe de bază în PHP și SQL. Poți descărca codul sursă PHP, astfel încât să poți urma acest tutorial pas cu pas care conține instrucțiuni de bază despre cum să implementezi soluția.

De ce este utilă combinația SMS Gateway cu o bază de date și PHP

Aceasta este o soluție PHP utilă pentru:

  • adăugarea de funcții SMS pe site-ul tău.
  • adăugarea de funcții SMS pe intranetul corporativ.
  • crearea de notificări SMS automate.
  • creșterea securității site-ului prin adăugarea autentificării prin SMS.

Cerințe

Vei avea nevoie să găzduiești un Ozeki SMS Gateway, un server web și un server MySQL. Poți găzdui aceste funcții pe același calculator sau pe două mașini separate, așa cum poți vedea în tabelul de mai jos:

Gazdă PHP: Sistem de operare: Linux sau Windows
Server web (Apache sau IIS)
PHP
Server MySQL
Gazdă Ozeki SMS Gateway: Sistem de operare: Windows sau Linux
.NET framework (dacă folosești Windows) sau Mono (dacă folosești Linux)
Ozeki SMS Gateway

Ozeki SMS Gateway poate fi obținut prin
deschiderea paginii de descărcare:
Descarcă Ozeki SMS Gateway!
Cum funcționează

Înainte de a începe să folosești această aplicație PHP, ar trebui să instalezi Ozeki SMS Gateway și un Server MySQL pe calculatorul tău. Poți folosi Windows sau Linux. Este important să alegi o soluție hardware sau software pentru mesageria SMS. Ca soluție hardware, este recomandat un telefon mobil sau un modem GSM, iar ca soluție software poți folosi furnizorul de servicii SMS prin IP pe internet.

Exemplul PHP pe care îl poți găsi în acest tutorial este capabil să citească înregistrări sau să insereze noi înregistrări în tabele. Acest lucru este foarte util atunci când citești mesaje primite sau scrii mesaje de trimis. Dacă dorești să vezi cum funcționează soluția, te rugăm să consulți Figura 1.

mesagerie sms între ozeki sms gateway și baza de date mysql și php
Figura 1 - Mesagerie SMS între Ozeki SMS Gateway, o bază de date MySQL și PHP

În diagramă poți vedea „Utilizatorul de internet”, care va trimite și primi efectiv mesaje SMS prin intermediul unui browser. Utilizatorul de internet este conectat la un server web cu PHP, care poate gestiona bazele de date pe Serverul SQL, iar aceste baze de date aparțin Ozeki SMS Gateway. În ultimul pas, Ozeki SMS Gateway trimite mesajul către un telefon mobil prin rețeaua GSM.

Utilizatorul de internet poate accesa internetul de oriunde. Singurul lucru care contează este dacă cunoaște adresa IP sau URL-ul calculatorului care rulează serverul PHP și dacă este autorizat să se autentifice în baza de date MySQL, astfel încât să poată insera înregistrarea mesajului SMS dorit, care va fi selectată ulterior de Ozeki SMS Gateway pentru a fi trimisă către telefonul mobil al destinatarului prin rețeaua GSM.

Acest flux de lucru funcționează și în sens invers. Acolo unde Ozeki SMS Gateway primește mesajul SMS din rețeaua GSM și îl salvează în baza de date MySQL, astfel încât serverul PHP să îl poată citi și afișa pe ecranul utilizatorului de internet.

Cum să creezi o bază de date 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';

Figura 2 - Crearea tabelelor în structura cerută de Ozeki SMS Gateway

Cum să creezi un Utilizator de Bază de Date în Ozeki SMS Gateway

Pasul 1: Te rugăm să deschizi Ozeki 10 într-un browser web
Pasul 2: Selectează aplicația SMS Gateway din desktopul integrat al Ozeki 10
Pasul 3: Creează Utilizatorul de Bază de Date în SMS Gateway urmând instrucțiunile.

Cum să folosiți codul

Vă rugăm să utilizați codul PHP pe care l-ați descărcat și să urmați acești pași:
Pasul 1: Mai întâi dezarhivați fișierul zip descărcat.
Pasul 2: Copiați sqlsmshandling.php, sqlsmshandling_inoutmessages.php și sqlsmshandling_functions.php în directorul principal al serverului web.
Pasul 3: Rescrieți adresa IP a serverului SQL, numele de utilizator și parola în sqlsmshandling_functions.php.
Pasul 4: Dacă Ozeki SMS Gateway nu rulează, vă rugăm să îl porniți.
Pasul 5: Introduceți adresa IP a serverului PHP în browserul web: http://127.0.0.1/sqlsmshandling.php
(Ar trebui să schimbați IP-ul serverului PHP sau să îl lăsați pe 127.0.0.1 dacă serverul PHP și browserul web rulează pe aceeași mașină.)
Pasul 6: Vă rugăm să completați formularul HTML și să apăsați 'Trimite'.
Pasul 7: Dacă totul a mers bine, Ozeki SMS Gateway va afișa starea mesajului în jurnalul Utilizatorului de Bază de Date.

Scriptul PHP

Aici puteți afla mai multe detalii despre scriptul exemplu care poate fi descărcat.

Scriptul trebuie să cunoască datele de autentificare ale utilizatorului pentru baza de date MySQL. Rolul principal al scriptului este să insereze noul mesaj în tabela de mesaje trimise. În acest exemplu, această tabelă se numește 'ozekimessageout'.

Utilizatorul de bază de date al Ozeki SMS Gateway verifică periodic tabela pentru înregistrări noi și, dacă starea mesajului este 'Send', va încerca să-l trimită. În caz de succes, Utilizatorul de bază de date va schimba starea mesajului în 'Sent'.

Acesta este structura codului sursă:

sqlsmshandling.php:

Conține elemente ASP pentru construirea mesajelor. De exemplu, etichete, casete de text și butonul 'Trimite'. Butonul 'Trimite' apelează funcțiile 'connectToDatabase()', 'insertMessage(...)' și 'closeConnection()' din sqlsmshandling_functions.php. sqlsmshandling.php gestionează nu doar mesajele SMS, ci și excepțiile. De exemplu, câmpuri goale.

sqlsmshandling_functions.php:

Acest fișier PHP conține toate funcțiile interne utilizate de cele 3 fișiere.

- connectToDatabase(): Se conectează la o bază de date de pe serverul MySQL.
- closeConnection(): Închide conexiunea creată în connectToDatabase().
- insertMessage(recipient, messageType, messageText): Execută instrucțiunea INSERT pe baza de date. Această instrucțiune inserează înregistrarea mesajului în tabela de mesaje trimise.
- showOutgoingMessagesInTable(): Selectează mesaje din tabela SQL de mesaje trimise și construiește un tabel HTML din ele în browserul web.
- showIncomingMessagesInTable(): Selectează mesaje din tabela SQL de mesaje primite și construiește un tabel HTML din ele în browserul web.

sqlsmshandling_inoutmessages.php:

Construiește tabele HTML. Folosește funcțiile connectToDatabase(), showOutgoingMessagesInTable(), showIncomingMessagesInTable() și closeConnection() pentru a regenera tabelele. Aceste funcții sunt disponibile în sqlsmshandling_functions.php.

Descrierea detaliată a procesului din Figura 1 de mai sus:

Pasul 1: Crearea formularului de introducere

sqlsmshandling.php creează un formular (Figura 3) pentru a solicita datele SMS de la utilizator. Formularul constă din Etichete și Casetă de text, plus un buton 'Trimite'. Utilizatorul de internet completează câmpurile destinatar și mesaj și apasă 'Trimite'.

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;">Compune mesaj</font>
            <br /><br />
        </td>
    </tr>
    <tr>
        <td valign="top">Destinatar: </td>
        <td>
            <textarea name="textAreaRecipient" cols="40" rows="2">...</textarea>
        </td>
    </tr>
    <tr>
        <td valign="top">Text mesaj: </td>
        <td>
            <textarea name="textAreaMessage" cols="40" rows="10">...</textarea>
        </td>
    </tr>
    <tr>
        <td colspan="2" align="centre">
            <input type="submit" value="Trimite">
        </td>
    </tr>
    <tr><td colspan='2' align='centre'>
    ...
    </td></tr>
</table>
</form>
...

Figura 3 - Construiește formular HTML

Dacă utilizatorul de internet apasă 'Trimite', următorul script rulează:

...

<?php

    if (isset($_POST["textAreaRecipient"]) && $_POST["textAreaRecipient"] == "")
    {
        echo "Câmpul destinatar nu poate fi gol!";
    }
    else if (isset($_POST["textAreaRecipient"]) && $_POST["textAreaRecipient"] != "")
    {
    try
    {
        connectToDatabase();
        if (insertMessage($_POST["textAreaRecipient"],"SMS:TEXT",$_POST["textAreaMessage"]))
        {
            echo "Inserarea a avut succes!";
        }
        closeConnection();
    }
    catch (Exception $exc)
    {
        echo "Eroare: " . $exc->getMessage();
    }
}
?>
...

Figura 4 - Se autentifică și inserează mesajul în tabela bazei de date apelând funcția insertMessage(...)

Pasul 2: Prelucrarea datelor din casetele de text HTML

Dacă ambele casete de text sunt completate, datele vor fi prelucrate și inserate în tabela de mesaje trimise a bazei de date SQL. Funcția insertMessage(…) (Figura 5) poate realiza acest lucru.

Rețineți că înregistrarea mesajului va fi inserată în baza de date MySQL de către scriptul care s-a autentificat anterior (Figura 4 de mai sus).

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

Figura 5 - funcția insertMessage(...)

Pasul 3: Crearea tabelelor de mesaje trimise și primite

Dacă apăsați F5 sau faceți clic pe reîmprospătare în browser, tabelele de mesaje trimise și primite vor fi actualizate prin citirea informațiilor din baza de date MySQL. Ca exemplu, puteți vedea showOutgoingMessagesInTable() mai jos (Figura 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>Expeditor</td><td>Destinatar</td>
        <td>Timp trimitere</td><td>Timp primire</td><td>Operator</td>";
        echo "<td>Stare</td><td>
        Tip mesaj</td><td>Text mesaj</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;
}
...

Figura 6 - funcția showOutgoingMessagesInTable(): Generează un tabel HTML din mesajele trimise

Întrebări frecvente

Întrebare: Pot trimite alt tip de mesaj decât 'SMS:TEXT'?
Răspuns: Da. De exemplu, un mesaj Wap push când apelezi funcția insertMessage(...) (Figura 7).

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

În formular, în caseta de text 'Text mesaj' trebuie să scrieți următoarele:

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

Figura 7 - SMS:TEXT schimbat în SMS:WAPPUSH

Parametrul 'action' al tag-ului 'indication' poate fi unul dintre următoarele:
signal-high, signal-medium, signal-low, signal-none, signal-delete.

Întrebare: Poate serverul HTTP cu PHP activat să ruleze pe un computer diferit de serverul MySQL și Ozeki SMS Gateway?
Răspuns: Da, poate. În scriptul PHP, setați adresa IP și datele de autentificare reale pentru baza de date MySQL.

Întrebare: Pot afișa destinatarului numărul de telefon al expeditorului?
Răspuns: Da, poți. Creați o casetă de text pentru numărul de telefon al expeditorului sau modificați funcția insertMessage(...) (Figura 8). Rețineți că acest lucru funcționează doar dacă aveți o conexiune la un furnizor de servicii SMS prin 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);
...
}
Figura 8 - Funcția insertMessage(...) modificată

Rezumat

Acest articol prezintă o soluție pentru gestionarea mesajelor SMS cu MySQL folosind Ozeki SMS Gateway și cum să configurezi acest sistem. Dacă implementezi această soluție urmând tutorialul pas cu pas, vei putea controla sistemul de mesagerie cu instrucțiuni SQL prin aplicația ta PHP. Pe lângă mesageria SMS organizată și simplă pe care o oferă, mai există un mare avantaj: securitatea avansată a site-ului pe care o poți obține prin adăugarea autentificării prin SMS.

Site-ul Ozeki este plin de articole pe care le recomand să le citești, profită de ocazie și vizitează aceste pagini. Începe cu ghidul despre cum să folosești site-ul tău pentru a trimite SMS.

Descarcă acum Ozeki SMS Gateway și lasă-ne să te ajutăm să-ți atingi obiectivele!

More information