[ Alexxandar @ 17.03.2010. 22:06 ] @
Potrebno mi je da skripta uradi sledeće:
Uloguje se na sajt, ode na jednu stranicu i sa te stranice downloaduje zip fajl.

Očigledno je da sam se zaglavio sam kod ovog prvog:
Sumnjam na to da mi nešto nedostaje... ima li neko ideju gde grešim.

Code:
<?php

$cookie_file_path = '/Users/Alexxandar/Documents/WWW/$temp/ppg.txt'; 
$url ="http://ppg.canadatrader.com/login.aspx";

$fp = fopen("$cookie_file_path","w");
fclose($fp);
$ch = curl_init();


curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 GTBDFff GTB7.0");
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path);
$result = curl_exec ($ch);

$doc = new DOMDocument();
@$doc->loadHTML($result);

$viewstate = inputValueById($doc, '__VIEWSTATE');
$eventvalidation = inputValueById($doc, '__EVENTVALIDATION');

$postArray = array(
    'ctl00$PageContentPlaceHolder$LoginBrown$frmUserName' => 'username',
    'ctl00$PageContentPlaceHolder$LoginBrown$frmPassword' => 'password',
    '__EVENTTARGET' => '',
    '__EVENTARGUMENT' => '',
    'ctl00$PageContentPlaceHolder$LoginBrown$btnLogin' => '',
    '__EVENTVALIDATION' => $eventvalidation,
    '__VIEWSTATE' => $viewstate
);

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 GTBDFff GTB7.0");
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postArray);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path);
$result = curl_exec ($ch);

echo "<hr />" . $result . "<hr />";


curl_close ($ch);

function inputValueById($DOMdoc, $id)
{
    $xpath = new DOMXPath($DOMdoc);
    $element =  $xpath->query("//*[@id='$id']")->item(0);

    foreach ($element->attributes as $attrName => $attrNode)
    {
        if($attrName == 'value')
        {
            return $attrNode->value;
        }
    }
}

?>
[ Alexxandar @ 17.03.2010. 23:55 ] @
Rešio... može da se zatvara ;)

Live HTTP Headers ekstenzija za Firefox me je usmerila ka rešenju.

Ako nekome ikada zatreba...

HTML input element tipa image šalje koordinate na koje je kliknuto unutar slike.

Tako da je meni nedostajalo:
Code:

    'ctl00$PageContentPlaceHolder$LoginBrown$btnLogin.x' => '27',
    'ctl00$PageContentPlaceHolder$LoginBrown$btnLogin.y' => '43',


Ne znam zašto je taj podatak imalo bitan... ali ovde je bio dovoljno bitan da sve koči.