Показать сообщение отдельно

  #954  
Старый 30.01.2010, 22:19
Deathdreams
Постоянный
Регистрация: 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($cCURLOPT_RETURNTRANSFER1); 
    
curl_setopt($cCURLOPT_HEADER1); 

    if(
$post)    {    curl_setopt($cCURLOPT_POST1);
                
curl_setopt($cCURLOPT_POSTFIELDS$post);  }

    
curl_setopt($cCURLOPT_HTTPHEADER, array('X-Requested-With: XMLHttpRequest')); 

 
    
$return curl_exec($c);  
    
curl_close($c);  
    return 
$return;  

}  

?>
 
Ответить с цитированием