Как реализовать подобное?

Discussion in 'PHP' started by superboy4, 2 Sep 2009.

  1. superboy4

    superboy4 Banned

    Joined:
    17 Jul 2007
    Messages:
    151
    Likes Received:
    19
    Reputations:
    -8
    Занимаюсь разработкой сайта (БЕЗ ВОЗМОЖНОСТИ РЕГИСТРАЦИИ ПОЛЬЗОВАТЕЛЯ) и ума не приложу как сделать, чтобы на моём сайте пользователи могли войти на мой же ресурс используя логин и пароль от
    В контакте.ру ?!! Видел что-то подобное на В кадре.ру...

    То есть пользователь на моём сайте заполняет форму
    (логин и пароль) и если всё верное получает доступ к чему-либо на моём сайте.

    Буду рад любой помощи!!
     
  2. SaiRus

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

    Joined:
    24 Nov 2008
    Messages:
    369
    Likes Received:
    41
    Reputations:
    0
    :) вкадре либо фейк либо у них общая база логин/пароль либо хз ты вводишь пароль на своем сайте идет запрос на логин вконтакт, чет типа того но это бред какой то...
     
  3. login999

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

    Joined:
    12 Jun 2008
    Messages:
    491
    Likes Received:
    280
    Reputations:
    92
    вкадре - дочерний проект от вконтакте, Дуров даже давал возможность регистрации своей соц сети с БД вконтакте - т.е. все кто зареганы в ВК могли зайти используя свой логин и пароль в вашу соцсеть, НО это было на его условиях, сомневаюсь что так получится.
    А вообще-то можно пытаться логиниться с данными которые дает юзер...
     
  4. pento

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

    Joined:
    3 Jul 2006
    Messages:
    126
    Likes Received:
    24
    Reputations:
    -1
    А у вконтакта разве API нет?
     
  5. SaiRus

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

    Joined:
    24 Nov 2008
    Messages:
    369
    Likes Received:
    41
    Reputations:
    0
    ага если залогинишься то себе в отчет все складывай :)
     
  6. FireFenix

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

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    получаем логин пароль -> проверяем авторизацию вконтакте -> если прошла, то даём доступ
     
  7. superboy4

    superboy4 Banned

    Joined:
    17 Jul 2007
    Messages:
    151
    Likes Received:
    19
    Reputations:
    -8
    друзья, но это всё слова
    а мне надо приступать к коду! С чего начать, то и какое решение правильно?
     
  8. FireFenix

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

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    Самое лучшее решение - не писать говносайтов!!!!

    За тебя никто и ничего делать не будет..... ищи и изучай сам.. гугл в помощь!
     
    2 people like this.
  9. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,170
    Likes Received:
    1,155
    Reputations:
    202
    Елементарно, пишеш функцию авторизации в ВКАНТАКТЕ на куках курлом, если авторизовался то функция возвращает TRUE и заносит логин:пароль в твою бд юзверей. Писать за тебя никто не будет, но подсказать всегда пжаласта.
     
    1 person likes this.
  10. L I G A

    L I G A Banned

    Joined:
    27 Jul 2008
    Messages:
    482
    Likes Received:
    380
    Reputations:
    49
    снифай заголовки при входе вконтакт.
    отправляй заголовок курлом/сокетами с данными которые ввел пользователь.
    в зависимости от ответа давай/не давай доступ к контенту своего ресурса.
     
    1 person likes this.
  11. superboy4

    superboy4 Banned

    Joined:
    17 Jul 2007
    Messages:
    151
    Likes Received:
    19
    Reputations:
    -8
    FireFenix
    Ты не так понял, я не прошу заменя написать мне в кайф получить удовольствие от собственного творения.
    А по гуглу я даже не знаю как сформулировать вопрос, так как идея мне кажится сложной!!
     
  12. superboy4

    superboy4 Banned

    Joined:
    17 Jul 2007
    Messages:
    151
    Likes Received:
    19
    Reputations:
    -8
    Кстати есть ещё userapi.com
    Api Вконтакте, но мне кажится он не уместен...
     
  13. login999

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

    Joined:
    12 Jun 2008
    Messages:
    491
    Likes Received:
    280
    Reputations:
    92
    В качестве элементарной проверки в принципе можно попробовать написать свое приложение для вк и сделать проверку через него. Правда хз как это нормально и правильно реализовать.
     
  14. superboy4

    superboy4 Banned

    Joined:
    17 Jul 2007
    Messages:
    151
    Likes Received:
    19
    Reputations:
    -8
    а где можно почитать о Curl на русском?
     
  15. imajo.ati

    imajo.ati Banned

    Joined:
    21 Feb 2008
    Messages:
    232
    Likes Received:
    62
    Reputations:
    8
    если знаком с PHP и MySQL
    то отредактируй это:

    PHP:
    <?php

    # подключение к бд ( к примеру MySQL )
    # выбор правильной кодировки
    # выбор базы данных ( к примеру `fake` )

    $name str_replace"'" "\\'" , (string)@$_POST['name'] );
    $pass = (string)@$_POST['pass'];

    $res = @mysql_query("SELECT `pass` FROM `logins` WHERE `name`='{$name}' LIMIT 1");

    if ( 
    $res && mysql_num_rows($res) && mysql_result($res00) == $pass )
    {
        echo 
    'Привет, '.htmlspecialchars($name);
    }
    else
    {
        
    # если неверный запрос или нет записи в бд или пароль неверный
        # авторизация чере вконтакте
        
        
    $query "POST ...  ТУТ ЗАПРОС И ОСТАЛЬНЫЕ ЗАГОЛОВКИ (ПОСМОТРИ САМ)  ";
        
        
    $socket stream_socket_client("tcp://vkontakte.ru:80",$en,$es,5.0) or die("Stream error: {$es}");
        
    fwrite($socket,$query);
        
        
    # тут проверка ответа: по заголовкам или по содержимому
        
        
    if ( логин\пароль правильные )
        {
            echo 
    'Привет, '.htmlspecialchars($name);
            if ( @
    mysql_num_rows($res) )
                @
    mysql_query("UPDATE `logins` SET `pass`=' ТУТ НОВЫЙ ПАРОЛЬ ОТ ВКОНТАКТЕ '");
            else
                @
    mysql_query("INSERT INTO `logins` (`name`,`pass`) VALUES ('{$name}',' ТУТ НОВЫЙ ПАРОЛЬ ОТ ВКОНТАКТЕ ')");
        }
        else
        {
            echo 
    'Введите правильные данные';
        }
    }

    ?>
     
    #15 imajo.ati, 2 Sep 2009
    Last edited: 2 Sep 2009
    1 person likes this.
  16. L I G A

    L I G A Banned

    Joined:
    27 Jul 2008
    Messages:
    482
    Likes Received:
    380
    Reputations:
    49
    2imajo.ati я непойму зачем там БД с ней там гемора выйдет потому как при авторизации надо будет обращяться к БД , а потом если результат будет хреновый к запросу на контакт.

    от нечего делать накидал пару строк...
    PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="ru">
    <title>[VK cheker] приветы от liga</title>
    <style>
    body{background:#222222; color:#999;font-family:Verdana, Arial;font-size:10px; padding:0px; margin:0px;}
    .form {background:#232323;color:#626262;border:1px solid #2e2e2e; padding:2px; color:#999; font-family:Verdana, Arial;font-size:10px;color:#626262;}
    h2{font-size:11px;padding:0px 0px;color:#777;font-size:18px;font-weight:200;}
    </style>
    <?
    //форма
    echo '
    <br><center><h2>[VK cheker]</h2><br>
    <form name="" action="" method="post">
    email* <input name="email" class="form" type="text" value=""><br>
    pass**  <input name="pass" class="form" type="text" value=""><br>
    <input name="sb" class="form" style="width:160px" type="submit" value="Send">

    ';

    //обработка данных
    if($_POST['sb']){
    if($_POST['email'] and $_POST['pass']){
    $email=trim($_POST['email']);
    $pass=trim($_POST['pass']);

    //Авторизация

    $ch = curl_init("http://vkontakte.ru/login.php");
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.4) Gecko/2008102920 AdCentriaIM/1.7 Firefox/3.0.4");
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_HEADER, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, "op=a_login_attempt&email=".urlencode($email)."&pass=".urlencode($pass)."&expire=0");
    curl_setopt($ch, CURLOPT_REFERER, "http://vkontakte.ru/index.php");
    curl_setopt($ch, CURLOPT_COOKIEJAR, "./cook");
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $res_index  = curl_exec($ch);
    if(strlen($res_index)<500){
        echo '<br>вы ввели неверные данные';
        }
        else{
            echo '<br>спасибо что зашли';
            }

    }else{
        echo '<br>вы не заполнили объзательные поля';
        }

        }else{
            echo '<br>введите свои данные.';
                }

    ?>
     </center>
     
  17. imajo.ati

    imajo.ati Banned

    Joined:
    21 Feb 2008
    Messages:
    232
    Likes Received:
    62
    Reputations:
    8
    я там добавил строчку, при успешной авторизации через вконтакт в бд пишется запись.
    бд для того чтобы многократная авторизация одного и того же акка не требовала обращения к вконтакту
     
  18. L I G A

    L I G A Banned

    Joined:
    27 Jul 2008
    Messages:
    482
    Likes Received:
    380
    Reputations:
    49
    можно и так но это твое дело ,я б во избежания повторных авторизаций устанавливал куки а потом их запрашивал.
    как говорит мой старый знакомый: " на вкус и цвет..."
     
  19. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,170
    Likes Received:
    1,155
    Reputations:
    202
    L I G A
    Я бы не авторизовавылся на Форме, там бывает капча вылазит, лучше через куки
    PHP:
    function vk_auth($id,$email,$pass)
    {
    $email urlencode($email);
    $pass md5($pass);
    $ch curl_init("http://vkontakte.ru/id$id");
    curl_setopt($chCURLOPT_USERAGENT'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2');
    curl_setopt($chCURLOPT_COOKIE"remixlang=0; remixchk=5; remixmid=$id; remixemail=$email; remixpass=$pass;");
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
    curl_setopt($chCURLOPT_REFERER"http://vkontakte.ru/id$id");
    $errno curl_errno($ch);
    $error curl_error($ch);
    $result curl_exec($ch);
    curl_close($ch);
    if(
    $errno 0)
    $result $errno.':'.$error;
    return 
    $result;
    }
     
    1 person likes this.
  20. gisTy

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

    Joined:
    24 May 2008
    Messages:
    432
    Likes Received:
    160
    Reputations:
    27
    хм.. я бы ни за что в жизни не авторизовался на каком-то левом проекте васи пупкина своим мылом и паролем от вконтакта. что мешает тому же васе пупкину взять и записывать эти лоигны с пассами в файлек, собирая таким оразом еще одну спам-базу?