Смс можно использовать по разному, и как частный пример - отдавать команды на запуск программ. А программы могут выполнять любые функции - например, запуск каких-то процедур, которые невозможно запланировать по cron-у (”задачнику”). А так - отправили на номер смс сервера секретную команду и программа смс-сервера запустила соответствующую программу.
И как еще один частный пример - передача смс сообщений на свой сайт для дальнейшей обработки. Это может быть какое-то голосование, опрос или просто “фишка” для посетителей сайта. Пример Вы можете наблюдать на сайте ProfiSMS.ru - посетитель сайта может отправить смс на номер смс-сервера, указав в начале текса смс код команды (например *555*). Делается это очень просто, объясню на примере именно сайта ProfiSMS.ru :
1) программа Сервер ProfiSMS получает такую “командную” смску, “разбирает ее”
2) и видя код *555* запускает программу, которая передает данные (текст смс, дату отправки, номер отправителя) в Интернет, а именно php-скрипту на сайте ProfiSMS.ru
Единственное надо понимать, что компьютер на котором работает программа Сервер ProfiSMS должен быть включен, чтобы программа работала. И этот компьютер должен иметь выход в Интернет, чтобы уже программа передачи данных в Интернет могла передать эти данные.
Т.о. можно легко расширить возможности программы Сервер ProfiSMS и автоматизировать некоторые процессы, которые до этого требовали непосредственного присутствия.
И чтобы Вам легче было сообразить как это все, разберем детально пример с публикацией смс на сайте. В программу установки ProfiSMS входит и упоминаемая выше программка передачи данных на сайт в интернет. Она называется put2site и находится в подкаталоге psmserver\ext\ . Там же расположен и файл настроек этой программки, в котором Вы можете задать адрес Вашего сайта и имя php-скрипта (программа на стороне сервера, которая обрабатывает принятые данные).
Запустите программу Сервер ProfiSMS и перейдите на вкладку “Команды по СМС” :
Здесь Вы видите, что мы задали условие - получив смс, в начале которого текст *555* будет запущена программа put2site.exe, которая находится в подкаталоге ext. Буковки “DS N TS” означают, что программа Сервер ProfiSMS передаст программе put2site параметры:
N - номер отправителя
DS - дата-время отправки смс (всегда передается в формате ДД.ММ.ГГГГ чч:мм:сс - 09.04.2009 04:50:07)
TS - текст смс (текст команды вырезается автоматически)
Неважно в каком порядке Вы укажете эти параметры - программе они передаются вначале Номер отправителя, потом Дата-Время отправки, и потом текст смс.
Смс-сервер далее спокойно продолжает свою работу, а запущенная им программа put2site - выполняет то, что положено выполнять ей. Т.е. put2site вызывает скрипт на сервере в Интернет и передает ему через GET три параметра - номер отправителя, дату-время отправки смс и текст смс.
Адрес сервера и имя скрипта настраивается через одноименный ini-файл (put2site.ini). Важно заметить, что Вы можете переименовать программу put2site как угодно, и она всегда будет искать одноименный ini-файл. Можно было и адрес сайта и имя скрипта передать через командную строчку, но в целях экономии места в командной строке я вынес это в ini-файл. Содержимое ini-файла выглядит так:
[Site]
; адрес Вашего сайта yoursire.ru
siteadr=yoursire.ru; имя Вашего скрипта,относительно главного каталога сайта.
; рекомендуется размещать свой скрипт в отдельный каталог с секретным названием
adrscript=secrdir/yourscript.php; т.е. полный адрес скрипта будет таким: http://yoursire.ru/secrdir/yourscript.php
Собственно с этим все должно быть понятно. Ну а сам скрипт выполняет у меня простое действие - вносит получаемые данные в таблицу БД. И как Вы заметили, сайт выполнен на движке WordPress и эта публикация смс легко вписалась в общий дизайн сайта.
И просто для иллюстрации, вот основной код php-скрипта:
$restext=’1′;
if((isset($_GET['a1']))&&(isset($_GET['a2']))&&(isset($_GET['a3'])))
{@include_once(”sms2siteproc.php”);
$nomer=trim($_GET['a1']);
$dtsend=trim($_GET['a2']);
$txtmsg=trim($_GET['a3']);// вызов функции отправки емайл-уведомления о новой смс
newSMS2Site($nomer,$dtsend,$txtmsg);// это мы немного прячем номер отправителя
if (strlen($nomer)>6) {$nomer=substr_replace($nomer,’***’,strlen($nomer)-3); };$restext=’2′;
if((strlen($nomer)>1)AND(strlen($dtsend)>18)AND(strlen($txtmsg)>0))
{
$restext=’0′;
if($dbh=db_open()){
$sql1=”INSERT INTO sms2site(nom,dtsend,txtmsg) VALUES (”;
$sql1=$sql1.”‘”.$nomer.”‘,STR_TO_DATE(’”.$dtsend.”‘,’%d.%m.%Y %H:%i:%s’), ‘”.mysql_escape_string($txtmsg).”‘)”;if (!$sth=mysql_query($sql1)){
$restext=’3 ‘.$sql1;
};
};
};}
echo $restext;function newSMS2Site($nomer,$dtsend,$txtmsg){
$msgm=”Новая смс на сайте!\n\n”;
$msgm=$msgm.”Номер: “.$nomer.”\n”;
$msgm=$msgm.”Дата-время отправки: “.$dtsend.”\n”;
$msgm=$msgm.”Текст сообщения:\n———————-\n”;
$msgm=$msgm.$txtmsg;
$msgm=$msgm.”\n———————-\n”;MailmsgRU($msgm,”support@profisms.ru”,”support@rateam.biz”,”New sms to site!”);
}
А это основной код самой программы put2site :
procedure tophp(adrsite,adrscript,parstr:string);
var IdHTTP1: TIdHTTP;
StrResult:string;
begin
StrResult:=”;
IdHTTP1:=TIdHTTP.Create(nil);IdHTTP1.ProxyParams.ProxyPort:=0;
IdHTTP1.ProxyParams.ProxyServer:=”;
IdHTTP1.ProxyParams.BasicAuthentication:=false;
IdHTTP1.ProxyParams.ProxyUsername:=”;
IdHTTP1.ProxyParams.ProxyPassword:=”;IdHTTP1.HandleRedirects:=True;
IdHTTP1.Host:=adrsite;
IdHTTP1.Port:=80;
IdHTTP1.RecvBufferSize:=32768;
IdHTTP1.ReadTimeout:=5000;
IdHTTP1.Request.UserAgent:=’Mozilla/5.0 (compatible; ProfiSMS.ru)’;
IdHTTP1.ProtocolVersion:=pv1_0;
try
StrResult:=IdHTTP1.Get(adrsite+’/'+adrscript+’?'+parstr);
except
end;
IdHTTP1.Destroy;
writeln(StrResult);
end;begin
adrsite:=”; parstr:=”; adrscript:=”;if ParamCount >0 then
begin
NameINI:=Application.ExeName;
delete(NameINI,length(NameINI)-length(ExtractFileExt(NameINI))+1,100);
loadini(NameINI+’.ini’);for i:=1 to ParamCount do
if pos(’N=’,UpperCase(ParamStr(i)))=1 then
begin nomer:=copy(ParamStr(i),3,length(ParamStr(i))-2);
end else
if pos(’DS=’,UpperCase(ParamStr(i)))=1 then
begin ds:=copy(ParamStr(i),4,length(ParamStr(i))-3);
end else
if pos(’TS=’,UpperCase(ParamStr(i)))=1 then
begin msgtxt:=copy(ParamStr(i),4,length(ParamStr(i))-3);
end;
end;if pos(’http://’,adrsite)=0 then adrsite:=’http://’+adrsite;
parstr:=parstr+’a1=’+UrlEncode(nomer)+’&a2=’+UrlEncode(ds)+’&a3=’+UrlEncode(msgtxt);
if (length(adrsite)*length(parstr)*length(adrscript)>0) then tophp(adrsite,adrscript,parstr);
end.
Этих кусков исходников достаточно, чтобы по-быстрому написать и свою программу передачи данных в Интернет и скрипт приема этих данных на сайт.
Июнь 4th, 2009 at 10:08
Доброе утро! Вчера проводил тестирование вашей программы. Произвел все настройки для приема смс на сайт. все работает только одна проблема, все данные в базу вносятся но при выводе на сайт почемуто отображаются иероглифы! Страницы сайта в кодировке utf8, а в базе стоит сравнение 1252 general_ci!!!! Подскажите пожалуста как можно решить проблему????? заранее спасибо!!!
Июнь 4th, 2009 at 10:09
извеняюсь в базе стоит 1251 general_ci в предыдущем коменте ошибся!!!
Июнь 4th, 2009 at 13:18
Что никто не может ничего подсказать по моему предыдущему вопросу??????
Июнь 4th, 2009 at 14:58
Андрей - я быстрее отвечаю на емайл :)
Любую перекодировку можно делать в самом php-скрипте… Так, стойте. О какой базе вообще идет речь? О базе на Вашем сайте? Сам сайт у Вас на каком движке? Вы как-то конкретнее напишите.
Июнь 15th, 2009 at 8:07
У меня что то не получается, можно полный php скрипт?
Июнь 15th, 2009 at 11:00
Александр, отправил на емайл. В письме пояснил что и зачем.
P.S. продублировал на “85″
Октябрь 16th, 2009 at 18:54
А можно реализовать наоборот?
чтоб скрипт с сайта отправлял смс
Ноябрь 15th, 2009 at 13:59