2
votes

I need to post data to ASP site using php curl from my website.

The ASP site is http://www.hotfrog.com.au/AddYourBusinessSingle.aspx

For this point I approached like below

  1. Crawled the webpage html source from that website using PHP curl to maintain cookies & sessions

  2. From that source asp hidden variable values extracted

  3. Prepared post string with required form fields

  4. And posted that data to target ASP site url using PHP curl but response is that page form information without entry details and even its not shows validation messages from curl response for non entry fields.

  5. For this process maintained same values for CURLOPT_USERAGENT, CURLOPT_COOKIEJAR, CURLOPT_COOKIEFILE

The ASP site required form fields like this below

ctl00$contentSection$CompanyDetailsControl$txtBusinessName

ctl00$contentSection$CompanyDetailsControl$txtSuburb

are them to be posted directly or there any encode needed for these field names before posting to target site by PHP curl

Can anyone have solution for this solution or any other approaches for ASP sites by php curl?

1

1 Answers

0
votes

use

function get_headers_from_curl_response($headerContent) {

    $headers = [];

    // Split the string on every "double" new line.
    $arrRequests = explode("\r\n\r\n", $headerContent);

    // Loop of response headers. The "count() -1" is to
    //avoid an empty row for the extra line break before the body of the esponse.
    for ($index = 0; $index < count($arrRequests) - 1; $index++) {

        foreach (explode("\r\n", $arrRequests[$index]) as $i => $line) {
            if ($i === 0) {
                $headers[$index]['http_code'] = $line;
            }
            else {
                list ($key, $value) = explode(': ', $line);
                $headers[$index][$key] = $value;
            }
        }
    }

    return $headers;
}

function regexExtract($text, $regex, $regs, $nthValue) {
    if (preg_match($regex, $text, $regs)) {
        $result = $regs[$nthValue];
    }
    else {
        $result = "";
    }

    return $result;
}

$regexViewstate = '/__VIEWSTATE\" value=\"(.*)\"/i';
$regexEventVal   = '/__EVENTVALIDATION\" value=\"(.*)\"/i';

$ch = curl_init("__YOUR__URL__HERE__");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies.txt');

$response = curl_exec($ch);
curl_close($ch);

$viewstate = regexExtract($response, $regexViewstate, $regs, 1);
$eventval  = regexExtract($response, $regexEventVal, $regs, 1);

$params = [
    '__EVENTTARGET'       => '',
    '__EVENTARGUMENT'     => '',
    '__VIEWSTATE'         => $viewstate,
    '__EVENTVALIDATION'   => $eventval,
    'ctl00%24txtUsername' => 'xxx',
    'ctl00%24txtPassword' => 'xxx',
    'ctl00$ImgLogin.x'    => '0',
    'ctl00$ImgLogin.y'    => '0',];

$ch2 = curl_init("http://gsc.klub-modul.dk/cms/ShowContentPage.aspx?ContentPageID=1");
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch2, CURLOPT_HEADER, 1);
curl_setopt($ch2, CURLOPT_POST, true);
curl_setopt($ch2, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch2, CURLOPT_POSTFIELDS, http_build_query($params));
curl_setopt($ch2, CURLOPT_COOKIE, 'cookies.txt');
curl_setopt($ch2, CURLOPT_COOKIEJAR, 'cookies2.txt');

$response2 = curl_exec($ch2);
curl_close($ch2);

foreach (get_headers_from_curl_response($response2) as $value) {
    foreach ($value as $key => $value2) {
        echo $key.": ".$value2."<br />";
    }
}