
30.01.2010, 22:19
|
|
Постоянный
Регистрация: 08.11.2008
Сообщений: 498
С нами:
9213376
Репутация:
278
|
|
Проверка пользователя ВКонтакте на "онлайн" ( даже если его страница закрыта ).
Не требует дополнительных библиотек типа iconv.
PHP код:
<?php
@ini_set('max_execution_time', 0);
$mail = "durov@durov.ru"; //нужен для проверки какой-либо аккаунт.
$pass = "pasha"; //пароль от этого аккаунта
$id = "1"; //ИД, который нужно проверить.
$log_in = do_curl("http://login.userapi.com/auth", "login=force&id=0&fccode=0&fcsid=0&site=2&email=".$mail."&pass=".$pass);
if( !preg_match('#sid=(.+)#', $log_in, $sid_tmp) ) die("Не удалось подключиться к API вконтакте.");
switch($sid = $sid_tmp[1]) {
case -1: die("Неверный email или пароль"); break;
case -2: die("Вылезла капча, не смог авторизоваться :("); break;
case -3: die("Неверный email или пароль, при следующей попытке нужно будет отправить капчу"); break;
case -4: die("Неверный email или пароль, капча не вылезла"); break;
default: echo "Авторизовались... sid: $sid<br /><br />"; break;
}
$result = utfwin(do_curl("http://userapi.com/data", "act=profile&id=$id&sid=$sid"));
preg_match( "#\"on\":(\d+)#", $result, $out );
preg_match( '#"fn":"(.+)"#U', $result, $firstname );
preg_match( '#"ln":"(.+)"#U', $result, $lastname );
switch($out[1]) {
case 1: $status = "онлайн"; break;
default: $status = "оффлайн"; break;
}
die( $firstname[1]." ".$lastname[1]." ".$status );
function utfwin($fcontents) {
$out = $c1 = '';
$byte2 = false;
for ($c = 0;$c < strlen($fcontents);$c++) {
$i = ord($fcontents[$c]);
if ($i <= 127) {
$out .= $fcontents[$c];
}
if ($byte2) {
$new_c2 = ($c1 & 3) * 64 + ($i & 63);
$new_c1 = ($c1 >> 2) & 5;
$new_i = $new_c1 * 256 + $new_c2;
if ($new_i == 1025) {
$out_i = 168;
} else {
if ($new_i == 1105) {
$out_i = 184;
} else {
$out_i = $new_i - 848;
}
}
// UKRAINIAN fix
switch ($out_i){
case 262: $out_i=179;break;// і
case 182: $out_i=178;break;// І
case 260: $out_i=186;break;// є
case 180: $out_i=170;break;// Є
case 263: $out_i=191;break;// ї
case 183: $out_i=175;break;// Ї
case 321: $out_i=180;break;// ґ
case 320: $out_i=165;break;// Ґ
}
$out .= chr($out_i);
$byte2 = false;
}
if ( ( $i >> 5) == 6) {
$c1 = $i;
$byte2 = true;
}
}
return $out;
}
function do_curl($url, $post=false){
$c = curl_init($url);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_HEADER, 1);
if($post) { curl_setopt($c, CURLOPT_POST, 1);
curl_setopt($c, CURLOPT_POSTFIELDS, $post); }
curl_setopt($c, CURLOPT_HTTPHEADER, array('X-Requested-With: XMLHttpRequest'));
$return = curl_exec($c);
curl_close($c);
return $return;
}
?>
|
|
|