Slanje SMS poruka iz MySQL baze podataka na vašem veb sajtu

Možete upravljati bazama podataka pomoću SQL upita. SQL upite možete slati putem PHP-a. Ovo vam omogućava da manipulišete tabelama u bazi podataka. Na primer, PHP može dodati zapise u tabelu SMS poruka za slanje, ali takođe može čitati zapise o primljenim porukama.

Preuzimanje: MySQL_PHP_Example.zip

Video 1 - Kako poslati SMS iz MySQL baze podataka na vašem veb sajtu (Video tutorijal)

PHP rešenje je namenjeno veb programerima sa osnovnim znanjem PHP-a i SQL-a. Možete preuzeti PHP izvorni kod, kako biste mogli da pratite ovaj korak-po-korak tutorijal koji sadrži osnovna uputstva za implementaciju rešenja.

Zašto je SMS Gateway sa bazom podataka i PHP korisna kombinacija

Ovo je korisno PHP rešenje za

  • dodavanje SMS funkcija na vaš veb sajt.
  • dodavanje SMS funkcija na korporativni intranet.
  • kreiranje automatskih SMS obaveštenja.
  • povećanje bezbednosti veb sajta dodavanjem SMS prijave.

Zahtevi

Biće vam potreban Ozeki SMS Gateway, veb server i MySQL server. Možete hostovati ovu funkciju na istom računaru ili na dva računara kao što možete videti u tabeli ispod:

PHP host: Operativni sistem: Linux ili Windows
Veb server (Apache ili IIS)
PHP
MySQL Server
Ozeki SMS Gateway host: Operativni sistem: Windows ili Linux
.NET framework (ako koristite Windows) ili Mono (ako koristite Linux)
Ozeki SMS Gateway

Ozeki SMS Gateway možete preuzeti
otvaranjem stranice za preuzimanje:
Preuzmite Ozeki SMS Gateway!
Kako funkcioniše

Pre nego što počnete da koristite ovu PHP aplikaciju, trebate instalirati Ozeki SMS Gateway i MySQL Server na vašem računaru. Možete koristiti Windows ili Linux. Važno je izabrati hardversko ili softversko rešenje za SMS poruke. Kao hardversko rešenje preporučuje se mobilni telefon ili GSM modem, a kao softversko rešenje možete koristiti vašeg SMS provajdera usluga preko interneta.

PHP primer koji možete pronaći u ovom tutorijalu može čitati zapise ili unositi nove zapise u tabelu. Ovo je veoma korisno za čitanje dolaznih poruka ili pisanje odlaznih poruka. Ako želite da vidite kako rešenje funkcioniše, pogledajte Sliku 1.

sms komunikacija između ozeki sms gateway-a i mysql baze podataka i php-a
Slika 1 - SMS komunikacija između Ozeki SMS Gateway-a, MySQL baze podataka i PHP-a

Na dijagramu možete videti 'Internet korisnika', koji će zapravo slati i primati SMS poruke putem pretraživača. Internet korisnik je povezan sa veb serverom koji podržava PHP, a koji može upravljati bazama podataka na SQL serveru i te baze podataka pripadaju Ozeki SMS Gateway-u. U finalnom koraku, Ozeki SMS Gateway šalje poruku na mobilni telefon putem GSM mreže.

Internet korisnik može pristupiti internetu sa bilo kog mesta. Jedino što je bitno je da zna IP adresu ili URL računara koji pokreće PHP server i da je autorizovan da se prijavi u MySQL bazu podataka, kako bi mogao da unese željeni zapis SMS poruke koji će kasnije biti odabran od strane Ozeki SMS Gateway-a da bi bio poslat na mobilni telefon primaoca putem GSM mreže.

Ovaj tok rada takođe funkcioniše u obrnutom smeru. Gde Ozeki SMS Gateway prima SMS poruku iz GSM mreže i čuva je u MySQL bazi podataka, kako bi PHP server mogao da je pročita i prikaže na ekranu internet korisnika.

Kako kreirati MySQL bazu podataka

	

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

Slika 2 - Kreiranje tabela u strukturi koju zahteva Ozeki SMS Gateway

Kako kreirati korisnika baze podataka u Ozeki SMS Gateway-u

Korak 1: Otvorite Ozeki 10 u veb pretraživaču
Korak 2: Izaberite SMS Gateway aplikaciju sa integrisane radne površine Ozeki 10
Korak 3: Kreirajte korisnika baze podataka u SMS Gateway-u prateći uputstva.

Kako koristiti kod

Molimo koristite PHP kod koji ste preuzeli i pratite ove korake:
Korak 1: Prvo raspakujte preuzeti zip fajl.
Korak 2: Kopirajte sqlsmshandling.php, sqlsmshandling_inoutmessages.php i sqlsmshandling_functions.php u glavni direktorijum veb servera.
Korak 3: Izmenite IP adresu SQL servera, korisničko ime i lozinku u sqlsmshandling_functions.php.
Korak 4: Ako Ozeki SMS Gateway ne radi, molimo pokrenite ga.
Korak 5: Unesite IP adresu vašeg PHP servera u veb pretraživač: http://127.0.0.1/sqlsmshandling.php
(Trebalo bi da promenite IP PHP servera ili ostavite na 127.0.0.1 ako PHP server i vaš veb pretraživač rade na istoj mašini.)
Korak 6: Molimo popunite HTML formu i pritisnite 'Pošalji'.
Korak 7: Ako je sve prošlo u redu, Ozeki SMS Gateway će prikazati status poruke u logu korisnika baze podataka.

PHP skripta

Ovde možete saznati više detalja o skripti koja se može preuzeti.

Skripta mora znati korisničke podatke za vašu MySQL bazu podataka. Glavna uloga skripte je da umetne novu poruku u vašu tabelu za odlazne poruke. U ovom primeru, ova tabela se zove 'ozekimessageout'.

Database User Ozeki SMS Gateway-a periodično proverava tabelu za nove zapise i ako je status poruke 'Send', pokušaće da je pošalje. U slučaju uspeha, Database User će promeniti status poruke u 'Sent'.

Ovo je struktura izvornog koda:

sqlsmshandling.php:

Sadrži ASP elemente za izgradnju poruka. Na primer, labele, tekstualna polja i dugme 'Send'. Dugme 'Send' poziva funkcije 'connectToDatabase()', 'insertMessage(...)' i 'closeConnection()' iz sqlsmshandling_functions.php. sqlsmshandling.php ne rukuje samo SMS porukama, već i izuzecima. Na primer, prazna polja.

sqlsmshandling_functions.php:

Ovaj PHP fajl sadrži sve interne funkcije koje koriste 3 fajla.

- connectToDatabase(): Povezuje se sa bazom podataka MySQL servera.
- closeConnection(): Zatvara vezu, koja je kreirana u connectToDatabase().
- insertMessage(recipient, messageType, messageText): Izvršava INSERT naredbu u bazi podataka. Ova naredba ubacuje zapis poruke u tabelu odlaznih poruka.
- showOutgoingMessagesInTable(): Bira poruke iz SQL tabele odlaznih poruka i gradi HTML tabelu od njih u vašem veb pregledaču.
- showIncomingMessagesInTable(): Bira poruke iz SQL tabele dolaznih poruka i gradi HTML tabelu od njih u vašem veb pregledaču.

sqlsmshandling_inoutmessages.php:

Gradi HTML tabele. Koristi funkcije connectToDatabase(), showOutgoingMessagesInTable(), showIncomingMessagesInTable() i closeConnection() za ponovno generisanje tabela. Ove funkcije su dostupne u sqlsmshandling_functions.php.

Detaljan opis procesa na slici 1 iznad:

Korak 1: Kreiranje forme za unos

sqlsmshandling.php kreira formu (Slika 3) da zatraži SMS podatke od korisnika. Forma se sastoji od Labela i Textboxova, plus dugmeta 'Send'. Internet korisnik popunjava polja za primaoca i poruku i klikne 'Send'.

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;">Compose message</font>
            <br /><br />
        </td>
    </tr>
    <tr>
        <td valign="top">Recipient: </td>
        <td>
            <textarea name="textAreaRecipient" cols="40" rows="2">...</textarea>
        </td>
    </tr>
    <tr>
        <td valign="top">Message text: </td>
        <td>
            <textarea name="textAreaMessage" cols="40" rows="10">...</textarea>
        </td>
    </tr>
    <tr>
        <td colspan="2" align="centre">
            <input type="submit" value="Send">
        </td>
    </tr>
    <tr><td colspan='2' align='centre'>
    ...
    </td></tr>
</table>
</form>
...

Slika 3 - Građenje HTML forme

Ako internet korisnik klikne 'Send', pokreće se sledeći skript:

...

<?php

    if (isset($_POST["textAreaRecipient"]) && $_POST["textAreaRecipient"] == "")
    {
        echo "Polje za primaoca ne sme biti prazno!";
    }
    else if (isset($_POST["textAreaRecipient"]) && $_POST["textAreaRecipient"] != "")
    {
    try
    {
        connectToDatabase();
        if (insertMessage($_POST["textAreaRecipient"],"SMS:TEXT",$_POST["textAreaMessage"]))
        {
            echo "Umetanje je uspešno!";
        }
        closeConnection();
    }
    catch (Exception $exc)
    {
        echo "Greška: " . $exc->getMessage();
    }
}
?>
...

Slika 4 - Prijavljuje se i ubacuje poruku u tabelu baze podataka pozivom funkcije insertMessage(...)

Korak 2: Obrada podataka u HTML tekstualnim poljima

Ako su oba tekstualna polja popunjena, podaci će biti obradjeni i umetnuti u tabelu odlaznih poruka SQL baze podataka. Funkcija insertMessage(…) (Slika 5) može to da postigne.

Imajte na umu da će zapis poruke biti umetnut u MySQL bazu podataka od strane skripte koja se prethodno prijavila (Slika 4 iznad).

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

Slika 5 - funkcija insertMessage(...)

Korak 3: Kreiranje tabela odlaznih i dolaznih poruka

Ako pritisnete F5 ili kliknete refresh u vašem pregledaču, tabele odlaznih i dolaznih poruka će biti ažurirane čitanjem informacija iz MySQL baze podataka. Kao primer možete videti showOutgoingMessagesInTable() ispod (Slika 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>Sender</td><td>Receiver</td>
        <td>Sent time</td><td>Received time</td><td>Operator</td>";
        echo "<td>Status</td><td>
        Message type</td><td>Message text</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;
}
...

Slika 6 - funkcija showOutgoingMessagesInTable(): Generiše HTML tabelu od odlaznih poruka

Često postavljana pitanja

Pitanje: Mogu li poslati drugu vrstu poruke osim 'SMS:TEXT'?
Odgovor: Da. Na primer, Wap push poruku prilikom pozivanja funkcije insertMessage(...) (Slika 7).

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

U formularu u polju 'Tekst poruke' treba uneti sledeće:

<si>
<indication href="http://target_address" action="signal-high">
tekst opisa
</indication>
</si>

Slika 7 - SMS:TEXT promenjeno u SMS:WAPPUSH

Parametar 'action' taga 'indication' može biti jedan od sledećih:
signal-high, signal-medium, signal-low, signal-none, signal-delete.

Pitanje: Može li PHP sa omogućenim HTTP serverom da radi na drugom računaru od MySQL servera i Ozeki SMS Gateway-a?
Odgovor: Da, može. U PHP skripti postavite IP adresu i odgovarajuće podatke za prijavu na vašu MySQL bazu podataka.

Pitanje: Mogu li prikazati primalacu broj telefona pošiljaoca?
Odgovor: Da, možete. Napravite polje za unos broja telefona pošiljaoca i izmenite funkciju insertMessage(...) (Slika 8). Imajte na umu da ovo funkcioniše samo ako imate IP SMS provajder konekciju.

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);
...
}
Slika 8 - Izmenjena funkcija insertMessage(...) Sažetak

Ovaj članak govori o rešenju za upravljanje SMS porukama pomoću MySQL-a korišćenjem Ozeki SMS Gateway-a i kako podesiti ovaj sistem. Ako implementirate ovo rešenje prateći korak-po-korak tutorijal, moći ćete da kontrolišete svoj sistem za slanje poruka putem SQL naredbi kroz vašu PHP aplikaciju. Pored organizovanog i jednostavnog slanja SMS poruka koje ovaj dodatak nudi, postoji još jedna velika prednost, a to je napredna bezbednost veb sajta koju možete postići dodavanjem SMS prijave.

Ozeki veb sajt je pun članaka koje preporučujem da pročitate, iskoristite priliku i posetite ove stranice. Prvo pogledajte vodič o tome kako koristiti svoj veb sajt za slanje SMS poruka.

Preuzmite Ozeki SMS Gateway sada i dopustite nam da vam pomognemo da postignete svoje ciljeve!

More information