Уважаемые, форумчане! Пришла идея создать возможность добавления графических файлов на сайт, расположенный на другом хостинге. Назовем принимающий сайт реципиентом, отдающий - донором. Ситуация следующая: Пользователь логинится на доноре и желает добавить графический файл, подгружается форма добавления от реципиента через айфрейм. Все хорошо, но проблема в аутентификации в форме добавления. Пользователю приходится еще раз вводить свои данные. Отсюда, как реализовать аутентификацию? Как избежать повторного ввода логина и пароля?
как-то так: 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);
Насколько я понимаю, пользователь логинится на сайте А, где через пост-запрос логин и пароль передаются на сайт Б!
живой пример авторизации вконтакте: 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($ch, CURLOPT_COOKIEFILE, "cookie.txt"); curl_setopt($ch, CURLOPT_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); ?>
SHiNiGaMi, спасибо за ответ! Можно ли взять приведенный пример и адаптировать для своей ситуации? Данный отрезок кода куда вставлять? В php-файл аутентификации подргужаемой формы?
не данный отрезок кода, а тот, который нужен для авторизации, главное, что нужно указать, это: PHP: curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//чтобы не выводило на экран результат curl_setopt($ch,CURLOPT_NOBODY,1);//чтобы не жрало много трафа curl_setopt($ch,CURLOPT_HEADER,1);//не обязательно, на случай, если нужно будет анализировать хедеры curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");//ну это все curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt"); //для куков остальное допишите соответственно параметрам
Можно, как говорили, написать и API и по SOAP протоколу гонять данные... но в данном случае Curl проще