[PHP] Class Vkontakte

Discussion in 'PHP' started by Deathdreams, 22 Feb 2010.

  1. Deathdreams

    Deathdreams Elder - Старейшина

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    Решил запостить свой класс сюда, т.к. он будет постоянно обновляться. Выкладываю часть функций.

    Что умеет:
    - Работа через прокси
    - Добавить друга ( или одобрить заявку на добавление ) (-)
    - Удалить пользователя из друзей (-)
    - Установить статус (-)
    - Писать на стене (+)
    - Проверять пользователя на онлайн (даже если страница закрыта) (-)
    - Редактирование заметки по её ID (-)
    - Редактирование заметки по её названию (-)
    - Писать личные сообщения пользователям (-)
    - Загрузка аватара (-)
    - Смена NickName (-)
    - Получение статуса пользователя (-)
    - Получение списка ID, у которых ты в закладках (-)
    (-) - Не выводит анкету в онлайн
    (+) - Выводит в онлайн

    Писал с нуля, все функции свои.

    Функции возращают TRUE или FALSE или содержимое.

    Использование: Примеры использования приведены в классе

    Сам класс:
    dump.ru
    slil.ru
    ifolder.ru
     
    #1 Deathdreams, 22 Feb 2010
    Last edited: 23 Feb 2010
    8 people like this.
  2. Deathdreams

    Deathdreams Elder - Старейшина

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    [22.02] - Добавил загрузку аватара и смену никнейма.
     
    #2 Deathdreams, 22 Feb 2010
    Last edited: 23 Feb 2010
  3. zifanchuck

    zifanchuck Elder - Старейшина

    Joined:
    27 Oct 2008
    Messages:
    396
    Likes Received:
    154
    Reputations:
    3
    тут наверное нуджно написать зная заголовок заметки.

    п.с спасибо за класс=)
     
  4. Deathdreams

    Deathdreams Elder - Старейшина

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    Нз :)

    P.S. Ник так и не удалось сменить средствами PHP.
     
  5. zifanchuck

    zifanchuck Elder - Старейшина

    Joined:
    27 Oct 2008
    Messages:
    396
    Likes Received:
    154
    Reputations:
    3
    а в чем трабла? я щас попробую набросать скрипт для смены. если получиться то тебе скину, а ты там попробуеш его интегрировать в класс
     
  6. Deathdreams

    Deathdreams Elder - Старейшина

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    Всё, получилось.
    Сейчас добавлю в класс.
     
    #6 Deathdreams, 22 Feb 2010
    Last edited: 22 Feb 2010
  7. zifanchuck

    zifanchuck Elder - Старейшина

    Joined:
    27 Oct 2008
    Messages:
    396
    Likes Received:
    154
    Reputations:
    3
    PHP:
    <?php

    function curl($url,$post)
    {
    $cfile 'cookies.txt';
    $ch curl_init();
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
    curl_setopt($chCURLOPT_URL$url);
    curl_setopt($chCURLOPT_HEADER0);
    curl_setopt($chCURLOPT_POSTFIELDS$post);
    curl_setopt($chCURLOPT_COOKIEJAR$cfile);
    curl_setopt($chCURLOPT_COOKIEFILE$cfile);
    curl_setopt($chCURLOPT_FOLLOWLOCATIONtrue);
    curl_setopt($chCURLOPT_POST1);
    $result curl_exec($ch);
    curl_close($ch);
    return 
    $result;
    }


    $email 'ssaf';
    $pass 'asddsa';
    $nik 'ziaga';


    $result curl("http://vkontakte.ru/login.php","email=$email&pass=$pass");
    $result curl('http://vkontakte.ru/settings.php','');
    preg_match_all("#hash:'(.*)'#iU",$result,$regs);
    $hash $regs[1][0];

    $result curl('http://vkontakte.ru/settings.php','hash='.$hash.'&act=change_nickname&subm=1&nickname='.$nik);
    echo 
    $result;

    ?>

    upd. неуспел=((
     
    1 person likes this.
  8. Deathdreams

    Deathdreams Elder - Старейшина

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    [22.03] - Добавил:
    - получение последнего статуса пользователя (не выводит в онлайн)
    - получение списка пользователей, у которых ты в закладках ( пример возращаемого массива указан в классе )
     
  9. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Deathdreams По большей части - обертка для юзер апи, но вы, видимо, собираетесь поддерживать этот клас, поэтому пусть живет.

    Что хотелось бы видеть:
    1) Приведите код к общечеловеческому стандарту для форматирования кода, отступы и дополнительные строки в самых неожиданных местах смотрятся "не тру"
    2) Проверки возвращаемого кода делать в отдельном методе
    3) Следует из 2 - сразу можем получить обработчик ошибок
    4) Работа с анти каптчей
    5) На кой черт - iconv("CP1251", "UTF-8", $text)? Тем более без проверок - у многих будет получаться двойное кодирование текста в УТФ. Пора уже сохранять файлы сразу в UTF
    6) Выделите вычисления хеша для стены в отдельный метод - потом проще будет
    7) Работу с проксями хотелось бы видеть
    8) Работу не только с курлом но и с сокетами и выбор - работа с тем, что есть в наличии, или принудительный выбор пользователем
    9) Ну и заливайте все таки класс на файлообменники, не все догадаются копировать код через цитирование, а форум свои пробелы в код вставляет
     
    _________________________
  10. Deathdreams

    Deathdreams Elder - Старейшина

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    1) код расчитан на личное пользование, могу вообще убрать форматирование.
    2) возращаемые ответы не всегда одинаковы (не все запросы идут через userapi)
    3) мне кажется, true-false достаточно. или нужен дебаг ?
    4) большая часть функций - юзерапи, где капча отсутствует.
    или вы имеете ввиду антикапча при авторизации ?
    5) я задумался над этим, решил не использовать mb_detect_encoding (нужна отдельная библиотека)
    если дадите регулярку для определения UTF - буду благодарен.
    6) сделаю
    7) сделаю
    8) не сделаю, т.к. много времени уйдёт , например, на аплоад аватары.
    9) сделаю

    Спасибо за замечания
     
  11. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    1) Если на личное пользование - то не кажется ли вам, что достаточно было оставить этот класс в прикрепленной теме и не пытаться потешить свое ЧСВ отдельным топиком? Да и все равно пригодится красиво писать код, и читаемо и удобно
    2) Да, я имел ввиду юзерапи
    3) Нужен, или вы всегда уверены по какой причине возвращается false?
    4) Капча на юзерапи заявлена и возможна - http://userapi.com/?act=doc#captcha
    5) Панацеи не будет, лучше добавьте поле is_utf внутри класса, и от него пляшите
    8) Эээ, с чего бы?
     
    _________________________
  12. vipfoto

    vipfoto New Member

    Joined:
    5 Jan 2010
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Всем здрасти! Делаю загрузку видео на PHP. Взял за основу Умный аватар на PHP для ВКонтакте v1.1 . Но выдает сообщение: "Security Breach2". Подскажите, пожалуйста, в чем я ошибаюсь))
    PHP:
    include 'config.php';

    $email iconv('utf-8','cp1251',$email);
    $pass iconv('utf-8','cp1251',$pass);
    $sid vk_auth($email$pass);
    $cookies 'remixsid='.$sid;

    $vk_video vk_video($cookies,'path_to_file/1.flv');

    function 
    curl($url$cookie false$post false$header false$follow_location false) {
        
    $ch curl_init($url);
        
    curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
        
    curl_setopt($chCURLOPT_FAILONERRORtrue);
        
    curl_setopt($chCURLOPT_HEADER$header);
        
    curl_setopt($chCURLOPT_FOLLOWLOCATION$follow_location);
        if (
    $cookie) {
            
    curl_setopt ($chCURLOPT_COOKIE$cookie);
        }
        if (
    $post) {
            
    curl_setopt($chCURLOPT_POST1);
            
    curl_setopt($chCURLOPT_POSTFIELDS$post);
        }
        
    $response curl_exec ($ch);
        
    curl_close($ch);
        return 
    $response;
    }

    function 
    vk_auth($email$pass) {
        
    $response curl('http://vkontakte.ru/login.php',false,array('email'=>$email,'pass'=>$pass),true);
        
    preg_match('|Set-Cookie: remixsid=(.*); exp|'$response$cm);
        return 
    $cm[1];
    }

    function 
    vk_video ($cookies$filename) {
        
    $upl_video curl('http://vkontakte.ru/video.php?act=upload',$cookies);
        
    $reg ="#http://cs[0-9]{1,6}\.vkontakte\.ru/upload_video\.php\?act=add_video#";
        
    preg_match($reg$upl_video,$matches);
        
    $link $matches[0];
        if (
    strlen($link)>0) {
            
    $output curl($link,$cookies,array('video_file'=>'@'.$filename),true);
            
    $reg "#upload_video.*?callback#";
            
    preg_match($reg$output,$matches);
            
    $output curl('http://vkontakte.ru/'.$matches[0],$cookies);
        } else {
            echo 
    "Error!\n";
        }
    }
     
    #12 vipfoto, 15 May 2010
    Last edited: 17 May 2010
  13. phpdreamer

    phpdreamer Member

    Joined:
    26 Jul 2009
    Messages:
    522
    Likes Received:
    86
    Reputations:
    19
    ТС, добавил тему в закладки в надежде на продолжение...
    ставлю +
    PS: класс не скачивал, так как пока ничего интересного не реализовано
     
  14. mr.The

    mr.The Elder - Старейшина

    Joined:
    30 Apr 2007
    Messages:
    1,080
    Likes Received:
    456
    Reputations:
    38
    *археология*

    Я тут гуглил класс для вк. Так вот - http://code.google.com/p/vkontakte-php-class/ функций больше, чем у тс, и всё(хотя, тестил только пару функций) отлично работает. Советую.
     
  15. Gvidion

    Gvidion Elder - Старейшина

    Joined:
    11 Sep 2009
    Messages:
    79
    Likes Received:
    43
    Reputations:
    28
    *археология2*
    Есть рабочий класс сейчас в паблике? Поделитесь в ЛС желательно.
     
    4 people like this.