pumba
Guest
Отправка SMS с сервера на телефон (МТС)
Задача сл.:
Есть сервер FreeBSD/Apach на одной машине, SQL-серер на другой. Работают в связке. Иногда SQL-сервер падает.
Я хочу (при некоторых условиях), чтобы 1-й сообщал мне о падении 2-ого via SMS.
Код:
------------------------------------
<?
$text='SQL is DOWN.';
$countlen=strlen($text);
$phone='79020000000'; // мой телефон
// заголовок
$POSTData=
"function=".urlencode('sms_send')."&".
"MMObjectType=".urlencode('0')."&".
"MMObjectID=".urlencode('')."&".
"To=".urlencode($phone)."&".
"Msg=".urlencode($text)."&".
"count=".urlencode($countlen)."&".
"Hour=".urlencode('20')."&".
"Min=".urlencode('30')."&".
"Day=".urlencode('15')."&".
"Mon=".urlencode('09')."&".
"Year=".urlencode('2002')."&".
"Lang=".urlencode('2')."&".
"submit=".urlencode('Отправить');
//print "$POSTData";
$len=strlen($POSTData);
$nn="\r\n";
$zapros=
"POST http://www.mts.ru/cgi-bin/cgi.exe HTTP/1.0".$nn.
"Host: www.mts.ru".$nn.
"Referer: http://www.mts.ru/cgi-bin/cgi.exe?function=sms_send".$nn.
"User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT)".$nn.
"Content-Type: application/x-www-form-urlencoded".$nn.
"Accept: */*".$nn.
"Accept-Encoding: gzip, deflate".$nn.
"Connection: Keep-Alive".$nn.
"Content-Length: $len".$nn.
"$POSTData".
$nn;
//открываем сокет и шлем заголовок
$fp = fsockopen("www.mts.ru", 80, &$errno, &$errstr, 30);
if(!$fp) { print "$errstr ($errno)<br>\n"; exit; }
//выводим заголовок ответа и страницу на экран
fputs($fp,$zapros);
print fgets($fp,20048);
fclose($fp);
fclose($fp);
?>
---------------------------------------
.... не работает... получаю:
HTTP/1.1 400 Bad Request
Где я недопонимаю? Или это их защита?
PS.
Если я захожу по линку:
http://www.mts.ru/cgi-bin/cgi.exe?function=sms_send&MMObjectType=0&MMObjectID=&To=79020000000&Msg=SQL+is+DOWN.&count=12&Hour=20&Min=30&Day=15&Mon=09&Year=2002&Lang=2&submit=%CE%F2%EF%F0%E0%E2%E8%F2%FC
То всё отправляется....
Задача сл.:
Есть сервер FreeBSD/Apach на одной машине, SQL-серер на другой. Работают в связке. Иногда SQL-сервер падает.
Я хочу (при некоторых условиях), чтобы 1-й сообщал мне о падении 2-ого via SMS.
Код:
------------------------------------
<?
$text='SQL is DOWN.';
$countlen=strlen($text);
$phone='79020000000'; // мой телефон
// заголовок
$POSTData=
"function=".urlencode('sms_send')."&".
"MMObjectType=".urlencode('0')."&".
"MMObjectID=".urlencode('')."&".
"To=".urlencode($phone)."&".
"Msg=".urlencode($text)."&".
"count=".urlencode($countlen)."&".
"Hour=".urlencode('20')."&".
"Min=".urlencode('30')."&".
"Day=".urlencode('15')."&".
"Mon=".urlencode('09')."&".
"Year=".urlencode('2002')."&".
"Lang=".urlencode('2')."&".
"submit=".urlencode('Отправить');
//print "$POSTData";
$len=strlen($POSTData);
$nn="\r\n";
$zapros=
"POST http://www.mts.ru/cgi-bin/cgi.exe HTTP/1.0".$nn.
"Host: www.mts.ru".$nn.
"Referer: http://www.mts.ru/cgi-bin/cgi.exe?function=sms_send".$nn.
"User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT)".$nn.
"Content-Type: application/x-www-form-urlencoded".$nn.
"Accept: */*".$nn.
"Accept-Encoding: gzip, deflate".$nn.
"Connection: Keep-Alive".$nn.
"Content-Length: $len".$nn.
"$POSTData".
$nn;
//открываем сокет и шлем заголовок
$fp = fsockopen("www.mts.ru", 80, &$errno, &$errstr, 30);
if(!$fp) { print "$errstr ($errno)<br>\n"; exit; }
//выводим заголовок ответа и страницу на экран
fputs($fp,$zapros);
print fgets($fp,20048);
fclose($fp);
fclose($fp);
?>
---------------------------------------
.... не работает... получаю:
HTTP/1.1 400 Bad Request
Где я недопонимаю? Или это их защита?
PS.
Если я захожу по линку:
http://www.mts.ru/cgi-bin/cgi.exe?function=sms_send&MMObjectType=0&MMObjectID=&To=79020000000&Msg=SQL+is+DOWN.&count=12&Hour=20&Min=30&Day=15&Mon=09&Year=2002&Lang=2&submit=%CE%F2%EF%F0%E0%E2%E8%F2%FC
То всё отправляется....