Dzięki za odpowiedź. Ale nie, problemem był jednak zły url. Po prostu trzeba wchodzić na podstronę kończącą się /moj_orange/
i wtedy w treści mamy taki pageid jak należy. Regex był ok, teraz jest dorpasowany do zawartości tej strony, gdzie ma wystąpić. Co do ostatniej wartości po prostu przyjmuje time(), a to co pokazuje Opera to chyba to samo wzbogacone pewnie o milisekundy albo inaczej liczone. Teraz wszystko działa. Przykładowy kod poniżej. Nie jestem specem od PHP. Kod wygląda jak wygląda. Można zawsze dopracować. Mnie póki co ten efekt zadowala.
Te użycie curla zostało zaczerpnięte ze skryptu do słania smsów, ktory można wygooglować. W poprzedniej wersji dodawałem info o autorze. Jednak teraz oczekiwane dane i większośc linków się pozmieniała. W przyszłości moze machnę wersję bez curla. Niektóre serwery mogą nie pozwalać na jego użycie. Ale ja tego problemu nie mam.
<?php
error_reporting(0);
$thecookie = md5(microtime());
$user = 'wpisz_swoj_login';
$pass = 'wpisz_swoje_haslo';
date_default_timezone_set('Europe/Warsaw');
Header("Content-Type: text/html; charset=cp1250");
$myOrangeUrl = 'https://www.orange.pl/moj_orange';
$startURL = 'https://www.orange.pl/zaloguj.phtml';
$userAgent = 'Opera/9.80 (Windows NT 6.1; U; pl) Presto/2.7.62 Version/12.17';
$loginURL = 'https://www.orange.pl/zaloguj.phtml?_DARGS=/ocp/gear/infoportal/portlets/login/login-box.jsp';
function curl_get($url, $referer = "")
{
global $userAgent, $thecookie;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
if ($referer != "") {
curl_setopt($ch, CURLOPT_REFERER, $referer);
}
curl_setopt($ch, CURLOPT_COOKIEJAR, $thecookie);
curl_setopt($ch, CURLOPT_COOKIEFILE, $thecookie);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
$out = curl_exec($ch);
curl_close($ch);
return $out;
}
function curl_post($url, $data, $referer)
{
global $userAgent, $thecookie;
$ch = curl_init();
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
curl_setopt($ch, CURLOPT_REFERER, $referer);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_COOKIEJAR, $thecookie);
curl_setopt($ch, CURLOPT_COOKIEFILE, $thecookie);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
$out = curl_exec($ch);
curl_close($ch);
return $out;
}
function regex($expression, $text)
{
$expression = str_replace("/", "\/", $expression);
if (preg_match('/' . $expression . '/ims', $text, $matches)) {
return $matches[1];
}
}
$time = microtime();
$time = explode(' ', $time);
$time = $time[1] + $time[0];
$start = $time;
echo '<html><title>Sprawdzanie pozostałego transferu w Orange Free.</title>';
echo '<br><img src="orange.png" alt="Orange logo" height="80" width="80"/><br><br>';
$startPage = curl_get($startURL);
if (strpos($startPage, 'W tej chwili nie ma mo') != false) {
echo "W tej chwili nie ma możliwości logowania. Spróbuj później.<br>";
unlink($thecookie);
exit;
}
$doc = new DOMDocument();
@$doc->loadHTML($startPage);
$xpath = new DOMXPath($doc);
$sesToken = $xpath->evaluate('//input[@name="_dynSessConf"]')->item(0)->getAttribute('value');
$loginData = array(
'_dyncharset' => 'UTF-8',
'_dynSessConf' => $sesToken,
'/tp/core/profile/login/ProfileLoginFormHandler.loginErrorURL' => 'https://www.orange.pl/zaloguj.phtml',
'_D:/tp/core/profile/login/ProfileLoginFormHandler.loginErrorURL' => '+',
'/tp/core/profile/login/ProfileLoginFormHandler.loginSuccessURL' => '',
'_D:/tp/core/profile/login/ProfileLoginFormHandler.loginSuccessURL' => '+',
'/tp/core/profile/login/ProfileLoginFormHandler.firstEnter' => 'true',
'_D:/tp/core/profile/login/ProfileLoginFormHandler.firstEnter' => '+',
'/tp/core/profile/login/ProfileLoginFormHandler.value.login' => $user,
'_D:/tp/core/profile/login/ProfileLoginFormHandler.value.login' => '+',
'/tp/core/profile/login/ProfileLoginFormHandler.value.password' => $pass,
'_D:/tp/core/profile/login/ProfileLoginFormHandler.value.password' => '',
'_D:/tp/core/profile/login/ProfileLoginFormHandler.rememberMe' => '+',
'/tp/core/profile/login/ProfileLoginFormHandler.login' => 'Zaloguj+siÄ™',
'_D:/tp/core/profile/login/ProfileLoginFormHandler.login' => '+',
'_DARGS' => '/ocp/gear/infoportal/portlets/login/login-box.jsp'
);
$loginPost = '';
foreach ($loginData as $a => $b) {
$loginPost .= urlencode($a) . '=' . urlencode($b) . '&';
}
$loginPost = substr($loginPost, 0, -1);
$login = curl_post($loginURL, $loginPost, $startURL);
if (preg_match('/login lub has/', $login)) {
echo "Błędne dane użytkownika.<br>";
unlink($thecookie);
exit;
}
if (preg_match('/wyloguj/', $login)) {
echo "Zalogowano pomyślnie.<br>";
flush();
} else {
echo "Serwer przesłał nieoczekiwany status procesu logowania.<br>";
unlink($thecookie);
exit;
}
$myorangepage = curl_get($myOrangeUrl);
$sumpageident = regex('summaryPageId=(.+?)&', $myorangepage);
$transferpage = curl_get('http://www.orange.pl/gear/moj_orange/infoservices/ajax?group=packages-tab1&toGet=packages-tab&toUpdate=tab1&tabId=1&pageId=' . $sumpageident . '&tabsReq=true&jsp=dynamic_v2&modal=&onlyHeader=true&jsp=dynamic_v2&refreshCounter=0&_=' . time());
$freetransfer = regex('var.+?"pGroup".+?<span class.+?> (.+?) <', $transferpage);
echo "<h2><b>Pozostała ilość danych to " . $freetransfer . ".</b></h2>";
$time = microtime();
$time = explode(' ', $time);
$time = $time[1] + $time[0];
$finish = $time;
$total_time = round(($finish - $start), 4);
unlink($thecookie);
if ($finish > 0) {
echo '<br><hr>Pobranie danych o transferze trwało ' . $total_time . ' sekund.<br>';
}
?>