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 "
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ů..
-
25. listopadu 2012
-
30. srpna 2002
-
10. října 2002
-
4. listopadu 2002
-
12. září 2002
-
25. listopadu 2012
-
28. července 1998
-
31. července 1998
-
28. srpna 1998
-
6. prosince 2000
-
27. prosince 2007
-
4. května 2007