Подгрузка формы - аутентификация

Discussion in 'PHP' started by serg-php, 28 Nov 2010.

  1. serg-php

    serg-php Elder - Старейшина

    Joined:
    28 Jan 2008
    Messages:
    313
    Likes Received:
    9
    Reputations:
    0
    Уважаемые, форумчане!

    Пришла идея создать возможность добавления графических файлов на сайт, расположенный на другом хостинге.

    Назовем принимающий сайт реципиентом, отдающий - донором.

    Ситуация следующая:

    Пользователь логинится на доноре и желает добавить графический файл,
    подгружается форма добавления от реципиента через айфрейм. Все хорошо, но проблема в аутентификации в форме добавления. Пользователю приходится еще раз вводить свои данные.

    Отсюда, как реализовать аутентификацию?
    Как избежать повторного ввода логина и пароля?
     
  2. SHiNiGaMi

    SHiNiGaMi Banned

    Joined:
    3 Jan 2010
    Messages:
    382
    Likes Received:
    55
    Reputations:
    15
  3. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,174
    Likes Received:
    1,157
    Reputations:
    202
    Не подгружать через фрейм. Разработать API
     
  4. serg-php

    serg-php Elder - Старейшина

    Joined:
    28 Jan 2008
    Messages:
    313
    Likes Received:
    9
    Reputations:
    0
    SHiNiGaMi,

    И как Вы себе это представляете?
     
  5. serg-php

    serg-php Elder - Старейшина

    Joined:
    28 Jan 2008
    Messages:
    313
    Likes Received:
    9
    Reputations:
    0
    Разработать кросс-сайтовую аутентификацию?
     
  6. SHiNiGaMi

    SHiNiGaMi Banned

    Joined:
    3 Jan 2010
    Messages:
    382
    Likes Received:
    55
    Reputations:
    15
    как-то так:
    PHP:
    $ch curl_init('http://site.com/auth.php');//адрес скрипта авторизации на реципиенте
    curl_setopt($ch,CURLOPT_POST,1);
    curl_setopt($ch,CURLOPT_POSTFIELDS,"login=".$_POST[login]."&password=".$_POST[password]);
    curl_setopt($ch,CURLOPT_HOBODY,1);//чтобы лишнего не возвращал
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
    $res curl_exec($ch);
     
  7. serg-php

    serg-php Elder - Старейшина

    Joined:
    28 Jan 2008
    Messages:
    313
    Likes Received:
    9
    Reputations:
    0
    SHiNiGaMi,

    спасибо за ответ!


    Попробую! Очень интересно!
     
  8. serg-php

    serg-php Elder - Старейшина

    Joined:
    28 Jan 2008
    Messages:
    313
    Likes Received:
    9
    Reputations:
    0
    Насколько я понимаю, пользователь логинится на сайте А, где через пост-запрос логин и пароль передаются на сайт Б!
     
  9. serg-php

    serg-php Elder - Старейшина

    Joined:
    28 Jan 2008
    Messages:
    313
    Likes Received:
    9
    Reputations:
    0
    Читаю о curl! Вот бы живой пример кто-нибудь бросил!
     
  10. SHiNiGaMi

    SHiNiGaMi Banned

    Joined:
    3 Jan 2010
    Messages:
    382
    Likes Received:
    55
    Reputations:
    15
    живой пример авторизации вконтакте:
    PHP:
    <?php
    $login 
    "";
    $password "";
    $ch curl_init() or die("initialization error");
    curl_setopt($ch,CURLOPT_URL,"http://login.vk.com/");
    curl_setopt($ch,CURLOPT_POST,1);
    curl_setopt($chCURLOPT_COOKIEFILE"cookie.txt");
    curl_setopt($chCURLOPT_COOKIEJAR"cookie.txt");
    curl_setopt($ch,CURLOPT_POSTFIELDS,"act=login&try_to_login=1&email=".$login."&pass=".$password);
    curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
    curl_exec($ch) or die("execution error");
    curl_close($ch);
    ?>
     
  11. serg-php

    serg-php Elder - Старейшина

    Joined:
    28 Jan 2008
    Messages:
    313
    Likes Received:
    9
    Reputations:
    0
    SHiNiGaMi,

    спасибо за ответ!


    Можно ли взять приведенный пример и адаптировать для своей ситуации?

    Данный отрезок кода куда вставлять? В php-файл аутентификации подргужаемой формы?
     
  12. SHiNiGaMi

    SHiNiGaMi Banned

    Joined:
    3 Jan 2010
    Messages:
    382
    Likes Received:
    55
    Reputations:
    15
    не данный отрезок кода, а тот, который нужен для авторизации, главное, что нужно указать, это:
    PHP:
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//чтобы не выводило на экран результат
    curl_setopt($ch,CURLOPT_NOBODY,1);//чтобы не жрало много трафа
    curl_setopt($ch,CURLOPT_HEADER,1);//не обязательно, на случай, если нужно будет анализировать хедеры
    curl_setopt($chCURLOPT_COOKIEFILE"cookie.txt");//ну это все
    curl_setopt($chCURLOPT_COOKIEJAR"cookie.txt"); //для куков
    остальное допишите соответственно параметрам
     
    #12 SHiNiGaMi, 1 Dec 2010
    Last edited: 8 Dec 2010
  13. Mystery

    Mystery Member

    Joined:
    16 Nov 2010
    Messages:
    32
    Likes Received:
    5
    Reputations:
    0
    Можно, как говорили, написать и API и по SOAP протоколу гонять данные...
    но в данном случае Curl проще