Sms brána - Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



PHP

Sms brána

17. února 2000, 00.00 | Praktický skript pro vaše stránky, sms brána. Lehce konfigurovatelný - výběr operátorů, nastavení timeoutu ap..


Mnoho majitelů webových stránek přemýšlí jak přilákat co nejvíce navštěvníků na své stránky. A to pokud možno bez větší práce. Stránky se tak plní různými informacemi a skripty.
Jedním, poměrně užitečným a žádaným, je skript pro provoz sms brány. Ten se stává i dnešním tipem. (Původně jsem o to byl požádán jedním ze čtenářů, ale proč si to nechávat pro sebe..)

Nejprve několik technických informací.
Sms brána využívá pro odesílání zpráv pomocí emailu. Adresa se skládá z prefixu kodu země (Paegas +42, Eurotel 0042), čísla operátora (0602, 0603 ..), čísla uživatele a adresy operátora (ostatně viz stránky operátorů).
V naší sms bráně se tyto informace dají pohodlně nastavit v konfiguračním souboru. Stejně tak lze přidat další operátory, popřípadě služby (pagery ap.).
Je třeba dodržet jedinou věc, a tou je ochrana proti spammingu. Tj. nastavit timeout pro odeslání další zprávy, jinak vám hrozí že vaše adresa bude blokována.
Toť základní informace a požadavky. Následuje seznámení se systémem (popis v komentářích).

Konfigurační soubor


// jmeno databaze
$db_name="sms";
// co se ma uvest jako odesilatel
$from="";
// za jak dlouho je povoleno odeslani dalsi zpravy ze stejneho ip
$timeout=60;

// -- hlavni datova struktura --
// Kazda polozka je pole kde prvek je jeden operator
// pak prvni je jmeno operatora (pro vypis), nasleduje pole prevoleb
// a adresa sms brany, posledni polozka prefix u mailove adresy
$operator= array (
	array("Eurotel", array("0602","0606"),"sms.eurotel.cz","0042"),
	array("Paegas",array("0603","0604"),"sms.paegas.cz","+42")
	);

// barvy pro vypis
$col0="#c0c0c0";
$col1="#eeeeee";

Databáze


# ukladame ip uzivatele a cas v sekundach (time()) posledni sms
CREATE TABLE send (
  ip varchar(15) DEFAULT '' NOT NULL,
  lastsend int(11) DEFAULT '0' NOT NULL,
  PRIMARY KEY (ip)
);

Samotný program

Chyba: $co 
"; $GLOBALS["err"]=1; } // volani s parametry if($op || $text || $number) { if(!$op) err("Chybi vyber operatora"); if(!$number) err("Chybi cilove telefonni cislo"); if(!$text) err("Chybi text sms zpravy"); // ziskame cislo operatora a jake z jeho cisel je pouzito $op=explode(" ",$op); if(!$err) { mysql_connect() or die(mysql_error()); mysql_select_db($db_name) or die(mysql_error()); $ip=getenv("REMOTE_ADDR"); // byla jiz nase brana z dane ip pouzita a kdy? $res=mysql_query("SELECT * FROM send WHERE ip='$ip'") or die(mysql_error()); if(mysql_num_rows($res)) { $exist=1; if(mysql_result($res,0,"lastsend")+$timeout > time() ) err("Nemohu odeslat sms, timeout"); } if(!$err) { // odeslani sms pres mail if(mail($operator[$op[0]][3].$operator[$op[0]][1][$op[1]]. "$number@".$operator[$op[0]][2], "",$text,"From: $from\nReturn-Path: $from\nSender: $from")) echo "Zprava odeslana (".$operator[$op[0]][3].$operator[$op[0]][1][$op[1]]. "$number@".$operator[$op[0]][2].").. dalsi muzete zaslat za $timeout sekund"; else err("Zprava neodeslana..."); // nastaveni casu k ip do databaze if($exist) mysql_query("UPDATE send SET lastsend='".time()."' WHERE ip='$ip'") or die(mysql_error()); else mysql_query("INSERT INTO send (lastsend,ip) VALUES ('".time()."','$ip')") or die(mysql_error()); } mysql_close(); } } echo ""; echo "
"; // tisk operatoru for($i=0; $i\n"; for($j=0; $j"; else echo "\n"; } echo "\n"; } $col=${"col".($i%2)}; echo ""; echo "
".$operator[$i][0]."
\n"; $oper=$operator[$i][1][$j]; // pamatujeme si posledni pouzite hodnoty if($i==$op[0] && $j==$op[1]) $sel= " checked "; else $sel=""; echo "$oper \n "; echo "
Cislo:

"; ?>

Skript si můžete stáhnout zde. Úpravám se meze nekladou.
Vyzkoušet v praxi můžete zde.

K plné použitelnosti chybí např. počítadlo napsaných znaků, známé ze stránek operátorů, či oblíbená čísla jednotlivých uživatelů..

Tématické zařazení:

 » Rubriky  » PHP  

 » Rubriky  » Web  

 

 

 

Nejčtenější články
Nejlépe hodnocené články

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: