CURL, как правильно разместить эту форму? - PullRequest
1 голос
/ 29 августа 2010

У меня есть проблема, я пытаюсь опубликовать данные с php и cURL, но это не работает.

Как должен выглядеть код правильно, если форма защищена случайным идентификатором сеанса во входном значении и содержит фрагменты публикации (stage)

            <form name='p' method='post' action='/pl/Register.php'>
        <input type='hidden' name='sid' value='wa12891300kv1283056988qwpvkdaazzipdgouxd'>
        <input type='hidden' name='stage' value='20'> <!-- this value change when post some "values" -->
        <input type='hidden' name='addressline1' value=''>
        <input type='hidden' name='addressline2' value=''>
        <input type='hidden' name='addressline3' value=''>

        <input type='hidden' name='addressline4' value=''>
        <input type='hidden' name='postcode' value=''>
        <input type='hidden' name='bankname' value=''>
        <input type='hidden' name='sortcode' value=''>
        <input type='hidden' name='accountname' value=''>
        <input type='hidden' name='accountnumber' value=''>
        <input type='hidden' name='cardname' value=''>
        <input type='hidden' name='cardtype' value=''>
        <input type='hidden' name='cardnumber' value=''>

        <input type='hidden' name='startmonth' value=''>
        <input type='hidden' name='startyear' value=''>
        <input type='hidden' name='expirymonth' value=''>
        <input type='hidden' name='expiryyear' value=''>
        <input type='hidden' name='cardsecurity' value=''>
        <input type='hidden' name='cardissue' value=''>
        <input type='hidden' name='delname' value=''>
        <input type='hidden' name='deladdressline1' value=''>
        <input type='hidden' name='deladdressline2' value=''>

        <input type='hidden' name='deladdressline3' value=''>
        <input type='hidden' name='deladdressline4' value=''>
        <input type='hidden' name='delpostcode' value=''>
        <input type='hidden' name='delphone' value=''>
        <input type='hidden' name='sponsor' value=''>
        <input type='hidden' name='uid' value=''>
        <input type='hidden' name='password' value=''>
        <input type='hidden' name='password1' value=''>
        <input type='hidden' name='password2' value=''>

        <input type='hidden' name='terms1' value='0'>
        <input type='hidden' name='terms2' value='0'>

любая помощь будет приветствоваться

Ответы [ 2 ]

0 голосов
/ 29 августа 2010

Есть две части:

  • Получите значение sid.
  • Отправьте запрос на публикацию со значением sid и остальными данными.

Сначала мы получим sid.Я не знаю достаточно о том, что происходит, когда вы запрашиваете форму, но если это просто случайное число, присваиваемое каждый раз, когда вы переходите на страницу, то вы можете получить страницу в своем php-скрипте и найти ее значение.Мы можем сделать это просто используя file_get_contents и регулярное выражение:

    $remote_site = file_get_contents("http://example.com/pl/Register.php");
    if (preg_match('/name=\'sid\' value=\'(.+?)\'/', $remote_site, $match)) {
            $sid = $match[1];
    } else {
            exit('failed to find sid');
    }

Теперь нам просто нужно отправить запрос по почте, используя cURL.Вам нужно извлечь все данные из формы, которую вы хотите отправить.

Я предлагаю поместить их в ассоциативный массив:

    $post_data = array(
            'sid' => $sid,
            'stage' => '...',
    );

Я оставлю это на ваше усмотрение, чтобы заполнитьв остальном.

Для того, чтобы опубликовать его, вы хотите отправить запрос с помощью cURL, используя CURLOPT_POST и CURLOPT_POSTFIELDS следующим образом:

    $ch = curl_init("http://example.com/pl/Register.php");
    curl_setopt($ch, CURLOPT_POST, true); // tell cURL we are doing a post request
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); // we pass in our data as an array here
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // this stops the output from being printed directly
    $response = curl_exec($ch);

Затем вы можете прочитать1028 * чтобы увидеть результаты запроса.*

0 голосов
/ 29 августа 2010

Вы показываете нам форму HTML.Ваш скрипт PHP это /pl/Register.php?Что именно вы пытаетесь опубликовать, откуда и куда?

PHP работает на стороне сервера, а не на стороне клиента.PHP не работает в браузере, поэтому вы не можете отправить форму с PHP из браузера.Вы можете сделать это только с помощью Javascript ... или, что еще лучше, в этом случае подойдет только кнопка отправки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...