Как php заставить нажать submit формы?

Тема в разделе "Как сделать...", создана пользователем zek24, 1 окт 2013.

  1. zek24

    zek24

    Moderator
    Регистр.:
    14 ноя 2009
    Сообщения:
    776
    Симпатии:
    230
    Привет,
    есть сайт с формой отправки данных обработчику.
    Форма доступна только после авторизации.
    Требуется скрипт, который будет запускаться cronom и отправлять данные от формы обработчику. (в форме я уже вставил значения по умолчанию)
    Написал на curl скриптик авторизации, который переходит на страницу с формой, но вот нажать кнопку отправки данных не получается.
    PHP:
    <script type="text/javascript">
        
    document.forms['form_import'].submit();
    </script>
    не помогает, так понимаю, что нужно физическое открытие браузером. Сымитировать не получается. Хотя headerы отправлял...
    Подскажите, плиз, куда копать.
     
  2. esche

    esche

    Регистр.:
    9 авг 2009
    Сообщения:
    360
    Симпатии:
    243
    Сама форма, скорее всего, не потребуется. CURLом сделать POST (или GET, смотря что стоит в атрибуте method тэга form) запрос на адрес, который указан в action, и передать нужные переменные формы (CURLOPT_POSTFIELDS). При этом, если потребуются дальнейшие действия указать в опциях CURLOPT_COOKIEJAR и CURLOPT_COOKIEFILE файл (для сохранения информации между запросами, работает аналогично кукам в браузере).

    За основу можно взять пример из мануала (тынц + тынц например)
     
  3. zek24

    zek24

    Moderator
    Регистр.:
    14 ноя 2009
    Сообщения:
    776
    Симпатии:
    230
    там несколько редиректов, в курле не силен, рад что это написал))
    Хотел уточнить, там не сабмит, а
    HTML:
    <a class="n_button" onclick="$('#form_import').submit();"><?php echo $button_import; ?></a>
    Нужно при открытии курлом страницы отправить данные по умолчанию в форме
     
  4. esche

    esche

    Регистр.:
    9 авг 2009
    Сообщения:
    360
    Симпатии:
    243
    1. получить страницу (видимо, уже сделано)
    2. распарсить/получить данные из формы
    3. отправить CURL-запросом (см выше)

    Пример по ссылке http://forum.php.su/topic.php?forum=73&topic=1332
    Может быть полезен для понимания.
     
  5. zek24

    zek24

    Moderator
    Регистр.:
    14 ноя 2009
    Сообщения:
    776
    Симпатии:
    230
    Зачем парсить? Все пары значений у меня уже есть.
    Нужно curl заставить "клацнуть" по ссылке-сабмиту.
     
  6. stealthdebuger

    stealthdebuger Механик

    Administrator
    Регистр.:
    25 авг 2008
    Сообщения:
    624
    Симпатии:
    1.379
    :confused:
    zek24, выше уже сказали... не надо там ничего нажимать, просто отправить POST-запрос.
    Но! Вполне вероятно, что на javascript идет либо подмена каких-то значений, либо дополнение формы новыми значениями, либо подмена action формы.
    Надо изучать исходный код.
     
  7. zek24

    zek24

    Moderator
    Регистр.:
    14 ноя 2009
    Сообщения:
    776
    Симпатии:
    230
    Это связка opencart и модуль импорта csv файла

    1С формирует и выгружает файл csv в указанную директорию,
    запускает скрипт php (который пытаюсь написать) или CRONом
    скрипт авторизируется в админке и запускает модуль
    модуль подхватывает файл csv (данные в форме уже заполнены) и заливает в БД

    С курлом только недавно познакомился - хватило знаний на авторизацию и переход на страницу с формой.

    Не могу понять, какие данные нужно давать обработчику (ООП не знаю)
    Так бы в обход формы можно сразу было бы отправлять POST обработчику.
     
  8. esche

    esche

    Регистр.:
    9 авг 2009
    Сообщения:
    360
    Симпатии:
    243
    В F12 файрбаге или в хроме средства разработчика.. вкладка Network - там можно увидеть, какой запрос (в т.ч. какие данные формы) уходит на сервер. Вот их и задать в CURLOPT_POSTFIELDS
    [​IMG]
     
  9. devillom

    devillom Создатель

    Регистр.:
    3 авг 2013
    Сообщения:
    7
    Симпатии:
    0
  10. Inviseble_Demon

    Inviseble_Demon

    Регистр.:
    11 дек 2008
    Сообщения:
    482
    Симпатии:
    350
    О боже мой... Простите но формулеровка я незнаю и только начал и не получается и все что вы говорите тоже не то.........
    Ни надо вам ни каких ООП...
    Чистый голый код. Авторизовывайтесь и шлите файл куда надо. Другое дело что у вас понятие о работе самой сути нет. Как минимум постийте как работает http протокол, вы работаете имеено через него. Никаких нажатий кнопок нет это для двуногих придумано.

    А вообще мой вам совет отдайте 10$ и забейте, на лансе вам накидают за пару часов.

    Если все же интересно.

    curl отпрака файлов
    curl авторизация
    proxomitron

    Прогуглите эти строки - поможет.
    Про http протокол пока можете не заморачиваться....