2014-09-02 104 views
2

我需要使用PHP卷曲从我的网站将数据发布到ASP网站发布的数据,以ASP站点。如何使用PHP卷曲

的ASP网站是http://www.hotfrog.com.au/AddYourBusinessSingle.aspx

对于这点我走近像下面

  1. 使用PHP卷曲保持饼干&会议

  2. 从爬着从该网站的网页的HTML源源ASP隐变量值提取

  3. 准备好的帖子字符串与所需的表单字段

  4. 并将该数据发布到使用PHP curl的目标ASP站点url,但响应是页面表单信息没有条目详细信息,甚至没有显示来自curl响应的非条目字段的验证消息。

  5. 对于该过程保持相同的值CURLOPT_USERAGENT,CURLOPT_COOKIEJAR,CURLOPT_COOKIEFILE

的ASP网站所需的表单字段这样下面

ctl00 $ contentSection $ CompanyDetailsControl $ txtBusinessName

ctl00 $ contentSection $ CompanyDetailsControl $ txtSuburb

是他们发布直接或张贴有由PHP目标站点之前需要这些字段名称的任何编码卷曲

任何人都可以有这种解决方案或PHP卷曲的任何其他方法对ASP网站解决方案?

回答

1

使用

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 />"; 
    } 
}