ФорумПрограммированиеPHP для идиотовРасширения PHP → curl POST передача

curl POST передача

  • spinoza

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 20 января 2012 г. 6:35

    Всем привет!
    Задался целью сделать у себя на сайте отправку смс, посмотрел, обычно у всех стоит только ссылка на оператора, а хочется чтобы пользователь не уходил с сайта и вбивал данные в моей форме, капчу в том числе. Для теле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); // Закрываем сессию

    }
  • technobulka

    Сообщения: 4552 Репутация: N Группа: Джедаи

    Spritz 20 января 2012 г. 6:44, спустя 8 минут 57 секунд

    на сколько я знаю, скрипт и юзер увидят разные капчи
    Высокоуровневое абстрактное говно
  • spinoza

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 20 января 2012 г. 6:48, спустя 3 минуты 30 секунд

    А почему? Ведь если куки сохранить в файл при первом подключении, а потом их использовать, для би это один пользователь. т.е. капча нужного сеанса сохраняется.
  • Alexmorbo

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 20 января 2012 г. 8:57, спустя 2 часа 8 минут 54 секунды

    Use dudeCurl
  • spinoza

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 20 января 2012 г. 15:06, спустя 6 часов 9 минут

    Не хочу использовать фрейм. Буду думать дальше (((

Пожалуйста, авторизуйтесь, чтобы написать комментарий!