Students Save 30%! Learn & create with unlimited courses & creative assets Students Save 30%! Save Now
Advertisement
  1. Code
  2. PHP
Code

Kako Slati SMS Poruke sa PHP-om

by
Difficulty:BeginnerLength:LongLanguages:

Croatian (Hrvatski) translation by Maja Petek (you can also view the original English article)

Slanje tekstualnih poruka postalo je ekstremno rašireno diljem svijeta -- do točke gdje sve veći broj web aplikacija integrira SMS da obavijesti korisnike o događanjima, rasprodajama ili kuponima izravno na njihove mobilne uređaje.

U ovom tutorialu ćemo obraditi osnove slanja tekstualnih poruka sa PHP-om.


Pregled

Slanje tekstualne poruke (SMS) poruke je zapravo prilično jednostavno.

Ispod je pojednostavljen dijagram kako se poruka šalje s web aplikacije na bežični uređaj.

Objasniti ćemo ovo -- dio po dio:

  • Poruka će biti sastavljena koristeći aplikaciju koja je pohranjena na HTTP serveru i zatim poslana putem interneta ("cloud-a") kao email poruka.
  • Short Message Service Gateway (SMS Gateway) zaprima email i konvertira poruku iz email-a u SMS poruku.
  • SMS poruka je zatim proslijeđena u Short Message Service Center (SMSC), server koji usmjerava podatke u određene mobline uređaje.
  • Poruka je konačno poslana primatelju preko bežične veze.

Većina bežičnih veza ima SMS gateway kroz koji email poruke mogu biti poslane kao tekstualne poruke na mobilni uređaj. To je zgodno, jer, sa stajališta razvojnog programera, općenito je besplatno - ipak, naravno, za krajnjeg korisnika to nije besplatna usluga. Naknade se još uvijek primjenjuju primatelju poruke i poruka poslanih putem email-a biti će naplaćene kao tekstualne poruke koje nisu poslane putem interneta.


Email u SMS

Kako biste poslali SMS putem email-a, općenito će vam biti potrebne samo dvije stvari:

  • Telefonski broj ili jedinstveni identifikator na mobilnom uređaju kojem želite poslati poruku.
  • I ime domene bežične mreže (mnoge možete pronaći na ovoj listi email u SMS adresa)

Možete pratiti sljedeću konvenciju za većinu operatera:

phoneNumber je telefonski broj mobilnog uređaja na koji šaljete poruku, i domainName.com je adresa za SMS Gateway mreže.

Kako biste poslali tekst Gosp. Example, možete jednostavno dodati 3855550168@vtext.com bilo kojem email klijentu, upisati poruku i kliknuti pošalji. To će poslati tekstualnu poruku na telefonski broj +1 (385) 555-0168 na Verizon Wireless Network.

Na primjer, poslati ću sebi poruku koristeći Gmail.

Kada moj mobilni telefon zaprimi poruku, trebala bi izgledati otprilike ovako:

Prilično dobro!


PHP-ova mail Funkcija

Napravimo korak dalje. Koristeći SMS Gateway, možemo poslati tekstualnu poruku putem email-a koristeći PHP-ovu mail funkciju mail funkcija ima sljedeći potpis:

Više o tome možete pročitati ovdje.

  • $to definira primatelja ili primatelje poruka. Valjani primjeri uključuju:
    • user@example.com
    • user1@example.com, user2@example.com
    • User <user@example.com>
    • User1 <user1example.com>, User2 User2 <user2@example.com>
  • $subject je objašnjiv već sam po sebi; trebao bi biti niz koji sadrži željeni subjekt. Ipak, SMS ne zahtijeva subjekt.
  • $message je poruka koja treba biti dostavljena. Kao što sam spomenuo u PHP priručniku, "svaki red bi trebao biti odvojen sa LF (\n). Redovi ne bi trebali biti duži od 70 znakova."

Kako bismo replicirali raniju funkcionalnost, mogli bismo napisati sljedeći PHP kod:


Testiranje

Pokušajmo napraviti test sa PHP-om da se uvjerimo je li sve pravilno podešeno i da mail funkcija zaista šalje tekstualnu poruku. Koristeći sljedeći kod, možemo početi:

Kada moj mobilni telefon zaprimi poruku, izgleda otprilike ovako:

Ako dolazi do greške, pogledajte odjeljak 'Rješavanje Problema'.

Kao što možete vidjeti na slici iznad, poruka pokazuje da je sa Gmail-a. To je zato što ja usmjeravam svoje izlazne poruke s lokalnog servera kroz taj servis. Nažalost, otkada sam ovo pisao, nisam uspijevao izmijeniti From zaglavlje da reflektiram alternativnu adresu. Izgleda da su email zaglavlja zamijenjena zaglavljima pripremljenim od SMS gateway-a. Ako netko zna zaobilazno rješenje, molio bih da ostavi komentar i javi!


Dodavanje Iskoristivosti

Označavanje

Stavimo osnove na stranu i pokušajmo oko ove ideje umotati korisničko sučelje. Prvo ćemo podesiti jednostavnu formu:

Stil

Zatim ćemo dodati malo CSS-a:

Time dobivamo sljedeću jednostavnu formu:


Skripta

Najvažniji dio je PHP skripta. Sada ćemo napisati taj mali dio koda:

  • Skripta prvo projerava je li forma zaprimljena.
  • Ako jest, provjerava jesu li poslane phoneNumber, carrier i smsMessage varijable. Ovo je korisno u slučaju gdje bi moglo biti više od jedne forme na stranici.
  • Ako su phoneNumber, carrier i smsMessage dostupne i phoneNumber i carrier nisu prazni, sasvim je u redu pokušati poslati poruku.
  • Argument poruke u mail funkciji trebao bi biti dužine od 70 znakova po redu. Možemo skratiti poruku u dijelove od 70 znakova koristeći wordwrap fukciju.
  • phoneNumber i carrier su koncentrirani i zatim je poruka poslana koristeći mail funkciju.
  • Ako nedostaje podatak ili je validacija neuspješna, skripta jednostavno vraća Not all information was submitted.
  • Konačno, mail vraća bool koji javlja je li funkcija uspješna ili nije. Vrijednost je pohranjena u $result u slučaju da trebam verificirati da je poruka zaista poslana.

Napomena: mail metoda samo obavještava je li poruka poslana ili nije. Ne pruža način da provjerite je li poruka uspješno zaprimljena na server ili poštanski sandučić primatelja.


Završni Kod


Rješavanje Problema

Localhost Greška

Kako biste koristili mail funkciju, morate imati pokrenuti mail server. Ako ga pokrećete na web host-u, vjerojatno je sve ok. Ali ako niste sigurni, preporučam da popričate sa adiministratorom. Ovo također vrijedi i za osobna računala. Stoga, ako dobijete grešku poput...

... morati ćete instalirati i konfigurirati server. Ovo je malo van teme ovog tutoriala. Ipak, ako radite na lokalnom računalu, prebacivanje na nešto poput XAMPP moglo bi riješiti problem. U suprotnom, pokušajte instalirati Mercury Mail zajedno sa WAMP, MAMP, ili na LAMP (ili SAMP ili OAMP, itd.) sistem (ovo je mnogo 'AMP-ova').

PHPMailer

Još jedna opcija (metoda koju osobno preferiram) je upotreba PHPMailer-a. Ispod je primjer kako upotrijebiti PHPMailer da spojite Gmail-ov SMTP server i pošaljete poruku.

Lako ga je koristiti kao što je lako uključiti klase u skriptu.

Ovo bi trebalo ispisati nešto kao što je:

Možda će trebati malo više da podesite vezu ovisno o vašoj situaciji. Ako planirate koristiti Gmail, Google je podijelio informacije za spajanje.


Zaključak

Postoji gomila metoda da pošaljete SMS putem web aplikacije. Ova metoda je zapravo namijenjena za slanje manjeg broja poruka (najvjerojatnije manje od 1 000 tekstualnih poruka mjesečno). Druge opcije uključuju:

  • Korištenje SMS Gateway Provider-a
    • Google istraživanjem ćete otkriti mnoge opcije
    • Većina SMS Gateway provider-a uključuje API za slanje poruka putem web aplikacije.
    • Obično se možete pretplatiti na uslugu po razumnoj cijeni, pretpostavljajući da mjesečno planirate slati najmanje 1 000 SMS poruka.
    • Možete unajmiti kratki kod broj.
  • Korištenje GSM modem-a
    • Ovo može biti skup i spor način, pošto morate kupiti modem i imati ugovor sa bežičnom mrežom
    • Također biste morali upotrijebiti AT (Hayes) set naredbi.
  • Upotrijebite izravnu vezu na bežičnu mrežu, koja će zahtijevati ozbiljno pregovaranje i mnogo novaca.

Ovaj tutorial ni na koji način nije opsežna recenzija za slanje tekstualnih poruka sa PHP-om; ali trebala bi vam pomoći za početak! Nadam se da vam je ovaj tutorial bio zanimljiv. Zahvaljujem se na čitanju!

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.