У меня два сайта. Я хочу установить cookie по запросу curl на другом домене.
Я делаю запрос локон с моего первого сайта.
Вот структура кода:
$url = 'http://www.secondwebsite.com/ext/access/api/manage.php';
$data = array('id' => '23',
"firstname" => "First name",
"lastname" => "last name",
"email" => "[email protected]",
'username' => 'username',
'password' => 'password123',
'action' => 'add',
'authkey' => '12345tgtgtt');
$ch = curl_init($url);
$data_string = urlencode(json_encode($data));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, array("customer" => $data_string));
$result = curl_exec($ch);
curl_close($ch);
$result = json_decode($result);
manage.php (Структура кода)
setcookie('username', $_POST['username'], time() + (86400 * 30), "/"); // 86400 = 1 day
setcookie('password', $_POST['password'], time() + (86400 * 30), "/"); // 86400 = 1 day
Но куки не установлены для www.secondwebsite.com.
Есть ли другой способ установить междоменные куки?
На самом деле я хочу разработать единый вход для обоих веб-сайтов. Я хочу, чтобы при входе любого пользователя на firstwebsite.com пользователь автоматически входил на secondwebsite.com.
Есть ли какой-либо подход к функциональности SSO в php? Поделись, пожалуйста..
Вы не можете делить куки между доменами. Представьте себе кражу сессий и тому подобное.
Есть много сайтов о создании SSO, например http://merbist.com/2012/04/04/building-and-implementing-a-single-sign-on-solution/
Это первый из Google.
Вы можете использовать метод Access-Control в php для включения Cookie и Session через междоменный домен.
Сохраните этот код в файл php
header("Access-Control-Allow-Origin: http://example.com");
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Methods: GET, POST,OPTIONS");
header("Access-Control-Allow-Headers: Content-Type, *");
Затем Вы должны запросить этот файл с помощью запроса ajax.
$.ajax(.....
crossDomain: true,
xhrFields: {
withCredentials: true
},
...);
Файлы cookie и сеанс запрашиваемого домена будут контролироваться из запрашивающего домена. И файлы cookie и данные сеанса также будут в том же браузере …