PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Описание: Отправка POST через cURL
Поиск в теме | Версия для печати
Korsand
Отправлено: 24 Июня, 2015 - 10:46:33
Гость
Покинул форум
Сообщений всего: 70
Дата рег-ции: Февр. 2013
Откуда: UA Donbass
Помог: 0 раз(а)
Приветствую.
Хочу запилить отправку смс через форму на своём сайте. Отправка будет идти через сайт МТСа Украины. С сайта МТСа, через курл и библиотеку simple_html_dom.php, выдираю токен и капчу (это работает), вставляю в свою форму и отправляю на сервак МТСа (с этим уже не получается). В итоге - проблемка, не могу отправить POST через cURL на МТС. Возможно что-то с куками, но я думаю косяк не только в них.
Первый документ:
Спойлер (Отобразить )
PHP:
скопировать код в буфер обмена
<?PHP
header ( 'Content-Type: text/html; charset=utf-8; image/png' ) ; include "simple_html_dom.php" ;
$stranica = 'http://www.mts.ua/ua/online-services/send-sms/' ;
curl_setopt ( $ch1 , CURLOPT_USERAGENT
, "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0" ) ; // echo $resultat;
$soderganie = new simple_html_dom;
$soderganie -> load ( $resultat ) ;
$token = $soderganie -> find ( 'div.well' , 0 ) -> find ( 'input' , 0) ; // вытаскиваем TOKEN
$token_sms = preg_replace ( '/(<input type="hidden" value=")(\w{40})(".name="YII_CSRF_TOKEN".\/>)/is' , "$2 " , $token ) ; //выводим токен без мусора // echo $token_sms;
$captcha = $avito_soderganie -> find ( 'div.form-group-captcha__image' , 0 ) -> find ( 'img' , 0) -> src ;
$captcha_img = 'http://www.mts.ua' . $captcha ;
// echo "<img class='captcha_image' src=".$captcha_img." height='30' width='95'/>"
?>
<html>
<head>
<title>Отправка СМС</title>
</head>
<body bgcolor="#faf0e6">
<div style="text-align: center; font-size: 16px; color: #1c1b14;">
TOKEN:  <?PHP echo $token_sms ; ?> <br>
<form novalidate="novalidate" enctype="multipart/form-data" role="form" action="http://trololo.ua/curl/sms_send.php" method="post">
<br><br>
<input name="YII_CSRF_TOKEN" value="<?PHP echo $token_sms ; ?> " type="hidden">
Получатель:
<input name="MessageForm[network]" placeholder="38066" id="MessageForm_network" maxlength="5" style="margin: 10px auto auto auto; width: 50px; height: 25px;"/>
<input name="MessageForm[phone]" placeholder="638-66-12" id="phone" maxlength="9" style="margin: 10px auto auto auto; width: 120px; height: 25px;"/>
<br><br>
<div class="ParameterValue"><textarea name="MessageForm[message]" placeholder="Текст латиницей" maxlength="160" style="margin: 10px auto auto auto; width: 400px; height: 80px;"></textarea></div>
<br><br>
<?PHP echo "<img class='captcha_image' src=" . $captcha_img . " height='30' width='95'/>" ?>
<input id="is_translit" name="MessageForm[verifyCode]" placeholder="Captcha" maxlength="4" style="margin: 10px auto auto auto; width: 60px; height: 25px;"/>
<br><br>
<input type=submit value="Отправить СМС"></form>
</div>
</body>
</html>
С первого документа на второй, вроде всё отправляется как положено, а вот со второго на МТС — фиг его знает что там идёт!
Второй документ:
Спойлер (Отобразить )
PHP:
скопировать код в буфер обмена
<?PHP
$stranica = 'http://www.mts.ua/ua/online-services/send-sms/' ;
$YII_CSRF_TOKEN = $_POST [ 'YII_CSRF_TOKEN' ] ;
$widgetId = 'messager' ;
$network = $_POST [ 'MessageForm[network]' ] ;
$phone = $_POST [ 'MessageForm[phone]' ] ;
$encoding = 'latin' ;
$translit = '0' ;
$message = $_POST [ 'MessageForm[message]' ] ;
$captcha = $_POST [ 'MessageForm[verifyCode]' ] ;
$str_post = 'YII_CSRF_TOKEN=' . $YII_CSRF_TOKEN . '&widgetId=' . $widgetId . '&MessageForm[network]=' . $network . '&MessageForm[phone]=' . $phone . '&MessageForm[encoding]=' . $encoding . '&MessageForm[is_translit]=' . $translit . '&MessageForm[message]=' . $message . '&MessageForm[verifyCode]=' . $captcha ;
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' ,
'Accept-Encoding: gzip, deflate' ,
'Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3' ,
'Connection: keep-alive' ,
'Host: www.mts.ua' ,
'Referer: http://www.mts.ua/ua/online-services/send-sms/' ,
'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0' ,
'Content-Type: multipart/form-data'
) ;
curl_setopt ( $curl , CURLOPT_USERAGENT
, 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0' ) ; curl_setopt ( $curl , CURLOPT_COOKIEFILE
, 'mts_cooc.txt' ) ; echo $out ;
}
?>
Куки приходится каждый раз редактировать ручками, что бы поменять на новый YII_CSRF_TOKEN. А вот PHPSESSID - не знаю на что менять и где его выхватить динамически?
Куки (mts_cooc.txt):
Спойлер (Отобразить )
CODE (
htmlphp ):
скопировать код в буфер обмена
www. mts. ua FALSE / FALSE 0 PHPSESSID iaotlnsvh52rdu8qpvlv8han35
www. mts. ua FALSE / FALSE 0 YII_CSRF_TOKEN ec6c9b5eeacc91a966dffe95403478337a651a9e
#HttpOnly_.mts.ua TRUE / FALSE 1437806363 _ip_geo_base_ %7B%22%40attributes%22%3A%7B%22value%22%3A%2291.222.133.77%22%7D%2C%22inetnum%22%3A%2291.221.132.0+-+91.221.132.255%22%2C%22country%22%3A%22UA%22%2C%22city%22%3A%22%5Cu041a%5Cu0440%5Cu0430%5Cu0441%5Cu043d%5Cu044b%5Cu0439+%5Cu041b%5Cu0443%5Cu0447%22%2C%22region%22%3A%22%5Cu041b%5Cu0443%5Cu0433%5Cu0430%5Cu043d%5Cu0441%5Cu043a%5Cu0430%5Cu044f+%5Cu043e%5Cu0431%5Cu043b%5Cu0430%5Cu0441%5Cu0442%5Cu044c%22%2C%22district%22%3A%22%5Cu0412%5Cu043e%5Cu0441%5Cu0442%5Cu043e%5Cu0447%5Cu043d%5Cu0430%5Cu044f+%5Cu0423%5Cu043a%5Cu0440%5Cu0430%5Cu0438%5Cu043d%5Cu0430%22%2C%22lat%22%3A%2248.133331%22%2C%22lng%22%3A%2238.933334%22%2C%22data%22%3A%7B%22region%22%3A%7B%22id%22%3A%222%22%2C%22ru%22%3A%22%5Cu041b%5Cu0443%5Cu0433%5Cu0430%5Cu043d%5Cu0441%5Cu043a%5Cu0430%5Cu044f+%5Cu043e%5Cu0431%5Cu043b%5Cu0430%5Cu0441%5Cu0442%5Cu044c%22%2C%22en%22%3A%22%22%2C%22ua%22%3A%22%5Cu041b%5Cu0443%5Cu0433%5Cu0430%5Cu043d%5Cu0441%5Cu044c%5Cu043a%5Cu0430+%5Cu043e%5Cu0431%5Cu043b%5Cu0430%5Cu0441%5Cu0442%5Cu044c%22%2C%22p_ru%22%3A%22%5Cu041b%5Cu0443%5Cu0433%5Cu0430%5Cu043d%5Cu0441%5Cu043a%5Cu043e%5Cu0439+%5Cu043e%5Cu0431%5Cu043b%5Cu0430%5Cu0441%5Cu0442%5Cu0438%22%2C%22p_en%22%3A%22%22%2C%22p_ua%22%3A%22%5Cu041b%5Cu0443%5Cu0433%5Cu0430%5Cu043d%5Cu0441%5Cu044c%5Cu043a%5Cu0430+%5Cu043e%5Cu0431%5Cu043b%5Cu0430%5Cu0441%5Cu0442%5Cu044c%22%7D%2C%22tariff%22%3A%7B%22id%22%3A%2234%22%2C%22ru%22%3A%22%5Cu041b%5Cu0443%5Cu0433%5Cu0430%5Cu043d%5Cu0441%5Cu043a%5Cu0430%5Cu044f+%5Cu043e%5Cu0431%5Cu043b.%22%2C%22en%22%3A%22%22%2C%22ua%22%3A%22%5Cu041b%5Cu0443%5Cu0433%5Cu0430%5Cu043d%5Cu0441%5Cu044c%5Cu043a%5Cu0430+%5Cu043e%5Cu0431%5Cu043b.%22%7D%7D%7D
Украинский номер телефона для смсок:Спойлер (Отобразить ) http://smspuppy.com/rec/%2B380666386612.php
(Отредактировано автором: 24 Июня, 2015 - 10:58:03)
Korsand
Отправлено: 24 Июня, 2015 - 15:04:04
Гость
Покинул форум
Сообщений всего: 70
Дата рег-ции: Февр. 2013
Откуда: UA Donbass
Помог: 0 раз(а)
Простите меня, дуралея! Как правильно включить этот E_STRICT и E_WARNING?
Я чего-то тут намудрил, в итоге какие-то ошибки мне начало показывать, я их исправил. Второй документ получился таким:
sms_send.php (Отобразить ) PHP:
скопировать код в буфер обмена
<?PHP
$stranica = 'http://www.mts.ua/ua/online-services/send-sms/' ;
$YII_CSRF_TOKEN = $_POST [ 'YII_CSRF_TOKEN' ] ;
$widgetId = 'messager' ;
$network = $_POST [ 'network' ] ;
$phone = $_POST [ 'phone' ] ;
$encoding = 'latin' ;
$translit = '0' ;
$message = $_POST [ 'message' ] ;
$captcha = $_POST [ 'captcha' ] ;
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' ,
// 'Accept-Encoding: gzip, deflate',
'Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3' ,
'Connection: keep-alive' ,
'Host: www.mts.ua' ,
'Referer: http://www.mts.ua/ua/online-services/send-sms/' ,
'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0' ,
'Content-Type: multipart/form-data'
) ;
curl_setopt ( $curl , CURLOPT_USERAGENT
, 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0' ) ; curl_setopt ( $curl , CURLOPT_COOKIEFILE
, 'mts_cooc.txt' ) ; 'YII_CSRF_TOKEN' => $YII_CSRF_TOKEN ,
'widgetId' => $widgetId ,
'MessageForm[network]' => $network ,
'MessageForm[phone]' => $phone ,
'MessageForm[encoding]' => $encoding ,
'MessageForm[is_translit]' => $translit ,
'MessageForm[message]' => $message ,
'MessageForm[verifyCode]' => $captcha
'searchButton' => 'get' //это на случай если на сайте, к которому обращаемся проверяется была ли нажата кнопка submit, а не была ли оправлена форма
) ) ;
echo $out ;
}
?>
На данный момент с моей формы (sms.php) идёт отправка на второй документ (sms_send.php), и этот sms_send загружает в себя страницу МТСа (без CSSa) с вбитыми данными из моей формы, а отправка смски так и не происходит.
Поиск в теме | Версия для печати
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« HTTP и PHP »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB