Задался целью сделать у себя на сайте отправку смс, посмотрел, обычно у всех стоит только ссылка на оператора, а хочется чтобы пользователь не уходил с сайта и вбивал данные в моей форме, капчу в том числе. Для теле2 нашел годный пример, а вот с билайном засада.
Попытался сделать по аналогии с теле2,
1) - подключаюсь curl_init(https://www.beeline.ru/sms/index.wbp) ищу afcode, это рандомный параметр формы, сливаю куки в массив.
2) - подключаюсь curl_init(https://www.beeline.ru/mamimg.aspx?width=120&height=30) сохраняю капчу.
3) - по идее теперь все полученные параметры нужно передать POST запросом на форму билайна, но у меня нихера не выходит!!!
Как программер только учусь…
функция отправки.
function sendData($send_url,$code,$captcha,$refer)
{
global $user_cookie_file;
$posts = array();
$posts['send'] = '';
$posts['smstext'] = '%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82';
$posts['afcode'] = $code;
$posts['smstoprefix'] = '906';
$posts['smsto'] = '2589662';
$posts['dirtysmstext'] = '%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82';
$posts['translit'] = 'on';
$posts['confirm_key'] = '';
$posts['confirmcode'] = $captcha;
$posts['x'] = '10';
$posts['y'] = '7';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $send_url);
curl_setopt($ch, CURLOPT_HEADER,0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_REFERER, $refer );
curl_setopt($ch, CURLOPT_COOKIEFILE, $user_cookie_file);
curl_setopt($ch, CURLOPT_COOKIEJAR, $user_cookie_file);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla Firefox 3 (compatible; MSIE 6.0; LAS Linux)");
curl_setopt($ch, CURLOPT_VERBOSE,1);
$ch = curl_init(); // Инициализируем сессию
curl_setopt($ch, CURLOPT_URL, $send_url); // задаем адрес обработчика формы
curl_setopt($ch, CURLOPT_POST, 1); // Указываем, что нам нужно отправить POST-запрос
curl_setopt($ch, CURLOPT_POSTFIELDS, $posts); // Передаем POST-параметры
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0); // Результат нам нужно вернуть в переменную, а не на экран
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // Переходить по редиректам
curl_setopt($ch, CURLOPT_REFERER, $refer );
curl_setopt($ch, CURLOPT_COOKIEJAR, $user_cookie_file); //Куки два // Указываем файл для хранения кукисов. При чем он должен быть тот же, что и в прошлый раз, чтобы кукисы подхватились.
$result = curl_exec($ch);
curl_close ($ch); // Закрываем сессию
}