<?php
error_reporting(E_ALL);
ini_set('display_errors','1');
include('simple_html_dom.php');
/**
* @param cURL $ch - uchwyt do cURL
* @param int $redirects - przekierowania
* @param bool $curlopt_returntransfer - CURLOPT_RETURNTRANSFER
* @param int $curlopt_maxredirs - CURLOPT_MAXREDIRS
* @param bool $curlopt_header - CURLOPT_HEADER
* @return mixed
*/
function curl_redirect_exec($ch, &$redirects, $curlopt_returntransfer = false, $curlopt_maxredirs = 10, $curlopt_header = false) {
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$exceeded_max_redirects = $curlopt_maxredirs > $redirects;
$exist_more_redirects = false;
if ($http_code == 301 || $http_code == 302) {
if ($exceeded_max_redirects) {
list($header) = explode("\r\n\r\n", $data, 2);
$matches = array();
preg_match('/(Location:|URI:)(.*?)\n/', $header, $matches);
$url = trim(array_pop($matches));
$url_parsed = parse_url($url);
if (isset($url_parsed)) {
curl_setopt($ch, CURLOPT_URL, $url);
$redirects++;
return curl_redirect_exec($ch, $redirects, $curlopt_returntransfer, $curlopt_maxredirs, $curlopt_header);
}
}
else {
$exist_more_redirects = true;
}
}
if ($data !== false) {
if (!$curlopt_header)
list(,$data) = explode("\r\n\r\n", $data, 2);
if ($exist_more_redirects) return false;
if ($curlopt_returntransfer) {
return $data;
}
else {
echo $data;
if (curl_errno($ch) === 0) return true;
else return false;
}
}
else {
return false;
}
}
/*****************************logowanie*****************************/
$url = 'https://www.mbank.com.pl/';
$c = curl_init();
curl_setopt($c, CURLOPT_URL, $url);
curl_setopt($c, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.100 Safari/534.30');
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_COOKIEFILE,'cookies.txt');
curl_setopt($c, CURLOPT_COOKIEJAR,'cookies.txt');
curl_setopt($c, CURLOPT_HEADER, 1);
$s=curl_exec($c);
curl_close($c);
//echo $s;
$r = new simple_html_dom();
$r = str_get_html($s);
$r = $r->find('input[name=seed]');
$seed = $r[0]->value;
$d=date('d');
$tmp=date('n');
switch ($tmp) {
case 1:
$m='styczeń';
break;
case 2:
$m='luty';
break;
case 3:
$m='marzec';
break;
case 4:
$m='kwiecień';
break;
case 5:
$m='maj';
break;
case 6:
$m='czerwiec';
break;
case 7:
$m='lipiec';
break;
case 8:
$m='sierpień';
break;
case 9:
$m='wrzesień';
break;
case 10:
$m='październik';
break;
case 11:
$m='listopad';
break;
case 12:
$m='grudzień';
break;
}
$y=date('Y');
$hh=date('H');
$mm=date('i');
$ss=date('s');
$r = str_get_html($s);
$r = $r->find('input[name=__STATE]');
$state = $r[0]->value;
$r = str_get_html($s);
$r = $r->find('input[name=__EVENTVALIDATION]');
$event = $r[0]->value;
$seed=str_replace(':','%3A',$seed);
$seed=str_replace('=','%3D',$seed);
$seed=str_replace('/','%2F',$seed);
$seed=str_replace('+','%2B',$seed);
$state=str_replace(':','%3A',$state);
$state=str_replace('=','%3D',$state);
$state=str_replace('/','%2F',$state);
$state=str_replace('+','%2B',$state);
$event=str_replace(':','%3A',$event);
$event=str_replace('=','%3D',$event);
$event=str_replace('/','%2F',$event);
$event=str_replace('+','%2B',$event);
$redirects = 0;
$url = 'https://www.mbank.com.pl/logon.aspx';
$content='seed='.$seed.'&localDT='.$d.'+'.$m.'+'.$y.'+'.$hh.'%3A'.$mm.'%3A'.$ss.'&__PARAMETERS=&__STATE='.$state.'&__VIEWSTATE=&__EVENTVALIDATION='.$event.'&customer=login&password=haslo';
//echo $content;
$cookies = file('cookies.txt');
$cookie1=explode("\t",$cookies[4]);
$cookie2=explode("\t",$cookies[5]);
$cookie3=explode("\t",$cookies[6]);
$cookie1=trim($cookie1[5]).'='.trim($cookie1[6]).'; ';
$cookie2=trim($cookie2[5]).'='.trim($cookie2[6]).'; ';
$cookie3=trim($cookie3[5]).'='.trim($cookie3[6]).'; ';
$cookie = $cookie2.$cookie1.$cookie3;
echo $cookie;
$c2 = curl_init();
curl_setopt($c2, CURLOPT_URL, $url);
curl_setopt($c2, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.100 Safari/534.30');
curl_setopt($c2, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c2, CURLOPT_POST, 1);
curl_setopt($c2, CURLOPT_POSTFIELDS, $content);
curl_setopt($c2, CURLOPT_COOKIE,$cookie);
curl_setopt($c2, CURLOPT_HEADER, 1);
curl_redirect_exec($c2, $redirects);
$s2=curl_exec($c2);
curl_close($c2);
echo $s2;
?>
Tak wygląda cały mój kod, zamiast CURLOPT_FOLLOWLOCATION
używam funkcji curl_redirect_exec
, niestety w efekcie otrzymuję pustą stronę :(
Co robię źle?