Необходимо реализовать удаленную авторизацию, используя js.
Есть домен1 и домен2. На домене2 выводится форма авторизации, проверка учетных данных производится на домене1, данные передаются посредством js.
Что касается 3 задачи, тот тут схема такая, на сайте создаем форму авторизации, после чего в фоновом режиме при помощи AJAX отсылаем данные на этот же домен где и форма. Так как сам AJAX отправить данные на удаленный домен не сможет ввиду безопасности, поэтому отправляем данные на PHP скрипт, который отсылает данные CURL-ом на другой сервер и возвращает ответ. Разбираем ответ, если все успешно, то создаем сессию, анализируем ответ от AJAX и редиректим в личный кабинет, либо никуда не отправляем.
Если сессия не существует, то личный кабинет будет пустой страницей, например.
Если же создавать куки, а не сессию, то это брешь в безопасности, так как их можно скопировать и перенести на другой компьютер и получить доступ в личный кабинет.
На удаленном сервере:
Check.php
<?
if(!empty($_POST['name']) AND $_POST['name'] == 'user') {
$arr['name'] = $_POST['name'];
$arr['pass'] = $_POST['pass'];
return $arr;
}
?>
На сервере с формой:
Form.php
<?
session_start();
?>
<?
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf8" />
<title></title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(
function(){
$("#id_button").click(function(){
$.ajax({
type: "POST",
url: "send.php",
data: "name="+$('#id_name').val()+"&pass="+$('#id_pass').val(),
success: function(msg){
if(msg == 'ok') {
//alert( "login: " + msg );
document.location.href = 'lk.php';
} else {
//alert( "false login: " + msg );
}
}
});
});
}
);
</script>
<style type="text/css">
.name {
width: 70px;
float: left;
text-align: right;
padding-right: 10px;
}
.fld {
float: left;
}
.fld input {
width: 220px;
}
#id_form {
width: 300px;
margin: 10px;
padding: 10px;
background: #eee;
}
.btn {
float: right;
}
</style>
</head>
<body>
<div id='id_form'>
<div class='name'>Имя:</div>
<div class='fld'><input type='text' id='id_name' name='name' value='user'/></div>
<br style='clear: both;' />
<div class='name'>Пароль:</div>
<div class='fld'><input type='password' id='id_pass' name='pass' value='pass'/></div>
<br style='clear: both;' />
<div class='btn'><input type='button' id='id_button' value='Отправить' /></div>
</div>
</body>
</html>
?>
Send.php
<?
session_start();
$arr['name'] = $_POST['name'];
$arr['pass'] = $_POST['pass'];
curl_setopt($curl, CURLOPT_URL, 'http://other_domen/check.php');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $arr);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
$result = curl_exec($curl);
curl_close($curl);
if(!empty($result)) {
if(!empty($result['name']) AND $result['name'] == 'user') {
$_SESSION['check'] = 'ok';
$_SESSION['user'] = $result['name'];
echo "ok";
}
}
?>
Lk.php
<?
session_start();
if($_SESSION['check']){
echo "Добро пожаловать в личный кабинет ".$_SESSION['user'];
}
?>
|