Created
August 13, 2012 21:00
-
-
Save b123400/3344076 to your computer and use it in GitHub Desktop.
3HK data usage getter
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
//There is no public API therefore this is not so reliable, use it at your own risk | |
function search_string($string , $regex , $index=1){ | |
$pattern = "~".$regex."~"; | |
preg_match($pattern, $string, $matches); | |
//var_dump($matches); | |
return $matches[$index]; | |
} | |
function getDataUsageFromThreeAccount($mobileNo,$password){ | |
$loginURL="http://www.three.com.hk/appCS2/verifyLogin.do?lang=eng"; | |
$fields = array( | |
'mobileno'=>$mobileNo, | |
'password'=>$password, | |
'url_3g'=>"", | |
'url_2g'=>"", | |
'action'=>"login", | |
'URLTo'=>"https://www.three.com.hk/appCS2/usageNotYetBilled.do?lang=eng" | |
); | |
//url-ify the data for the POST | |
foreach($fields as $key=>$value) {$fields[$key]=urlencode($value);} | |
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; } | |
rtrim($fields_string,'&'); | |
//open connection | |
$ch = curl_init(); | |
$ckfile = tempnam ("/tmp", "CURLCOOKIE"); | |
//set the url, number of POST vars, POST data | |
curl_setopt($ch,CURLOPT_URL,$loginURL); | |
curl_setopt($ch,CURLOPT_POST,count($fields)); | |
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string); | |
curl_setopt ($ch, CURLOPT_COOKIEJAR, $ckfile); | |
curl_setopt($ch, CURLOPT_HEADER, 1); | |
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); | |
//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); | |
//execute post | |
$result = curl_exec($ch); | |
//print_r(curl_getinfo($ch)); | |
//echo $result; | |
//close connection | |
curl_close($ch); | |
$pos = strpos($result,"Invalidate Mobile Number Or Password"); | |
if($pos !== false) { | |
die('{"status":"ok","error":"Invalidate Mobile Number Or Password"}'); | |
} | |
$pos = strpos($result,"Invalidate Mobile Number"); | |
if($pos !== false) { | |
die('{"status":"ok","error":"Invalidate Mobile Number"}'); | |
} | |
$checkUsageUrl="https://www.three.com.hk/appCS2/usageNotYetBilled.do?lang=eng"; | |
//$checkUsageUrl="dummypage.html"; | |
$ch = curl_init(); | |
//set the url, number of POST vars, POST data | |
curl_setopt($ch,CURLOPT_URL,$checkUsageUrl); | |
curl_setopt ($ch, CURLOPT_COOKIEFILE, $ckfile); | |
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); | |
//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); | |
//execute post | |
$result = curl_exec($ch); | |
//print_r(curl_getinfo($ch)); | |
//echo $result; | |
//close connection | |
curl_close($ch); | |
$usageData=array(); | |
$result=str_replace("\r","",$result); | |
$result=str_replace("\n","",$result); | |
$result=str_replace("\t","",$result); | |
$result=str_replace(" ","",$result); | |
//echo $result; | |
$usageData['cycleStart']=search_string($result,'CycleStartDate:</td><tdwidth="422"class="menu4_o">(.*?)</td>'); | |
$usageData['videoCall']=search_string($result,'Videocalltime--><spanclass="keypro_u">(.*?)</span'); | |
$usageData['basicCallTime']=search_string($result,'Basiccalltime<spanclass="keypro_u">(.*?)</span>minutes'); | |
$usageData['intraCallTime']=search_string($result,'Intra-3calltime<spanclass="keypro_u">(.*?)</span'); | |
$usageData['totalCallTime']=search_string($result,'Totalvoicecalltime<spanclass="keypro_u">(.*?)</span'); | |
$usageData['wirelessLocalData']=search_string($result,'<!--Wirelessdata-->(.*?)<tdalign="right"><spanclass="keypro_u">(.*?)</span>KB',2); | |
//this is KB!!!! | |
$usageData['multimediaContent']=search_string($result,'Multimediacontent\(M\)</td><tdalign="right"><spanclass="keypro_u">(.*?)</span'); | |
$usageData['textContent']=search_string($result,'Textcontent\(T\)</td><tdalign="right"><spanclass="keypro_u">(.*?)</span'); | |
$usageData['smsIntra']=search_string($result,'SMSIntra-operator</td><tdalign="right"><spanclass="keypro_u">(.*?)</span'); | |
$usageData['smsInter']=search_string($result,'SMSInter-operator</td><tdalign="right"><spanclass="keypro_u">(.*?)</span'); | |
$usageData['smsInternational']=search_string($result,'SMSInternational</td><tdalign="right"><spanclass="keypro_u">(.*?)</span'); | |
return json_encode($usageData); | |
} | |
print_r(getDataUsageFromThreeAccount($_REQUEST['mobileno'],$_REQUEST['password'])); | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment