■file_get_contentsでCookieを扱う
【PHP】コマンドラインでサイトへのログイン処理を実装する方法 - とりあえずphpとか
http://kimagureneet.hatenablog.com/entry/2015/09/17/014853
CookieのIDを取得
<?php
echo file_get_contents('http://localhost/test/session.php');
print('<pre>');
print_r($http_response_header);
print('</pre>');
$cookies = array();
foreach ($http_response_header as $header) {
$data = explode(':', $header);
if ($data[0] == 'Set-Cookie') {
$cookies[] = $data[1];
}
}
print('<pre>');
print_r($cookies);
print('</pre>');
$session_id = '';
foreach ($cookies as $cookie) {
if (preg_match('/laravel_session=(.+); /', $cookie, $matches)) {
$session_id = $matches[1];
}
}
echo 'session_id=' . $session_id;
取得したCookieのIDとともにリクエスト
<?php
$session_id = 'eyJpdiI6ImNIV05pQjZNdVpYODc4MUwra05kMWc9PSIsInZhbHVlIjoia0ttVXF6VjRDK2FrbEJzUGhSXC9ac2FIZGFmS2N6YUlKaG45TndCKzFwNFVOODBVWjlwTTI3TVhHeDFreDRucTYiLCJtYWMiOiI4OTk4ZTQ1NzI0YWM3NjY2MTNjZDViZjFhMTBmMWQwZTViZGQzOTFjN2M3MGRmZDg5Nzg4ZTdlZGVmNDAyZDg4In0%3D';
//$session_id = 'eyJpdiI6Im1iT3ZSV1l5c2NPMExteUhDQmhhS2c9PSIsInZhbHVlIjoiZHE2QTluMWFBQlZWNlh2ZGtLM1Vmb0ZLaU9yN0Y4aXF2NzVROXYwNlwvR2FQMWVRUHpvb2M0d0ZyQVZRNkxMYWMiLCJtYWMiOiI5OTk2MDY0MTUwMjNiMDU3YTczNWIyMzJhNzRmMDRmN2EyOGQyMmQzMmMwOTNmYTdmNzdjYzIzNjJjNWFkMDNhIn0%3D';
//$session_id = 'eyJpdiI6Ikl2aCtidEdSYXZYYmJRbmlXUnFkZEE9PSIsInZhbHVlIjoic0VUNjJOM2tTVStVejlkb2l1VHJGb3J0aVg3WEpaZU9YeVRUcjVUUEpXSVJcL3lzOHZcL21ObWtrQkZucks3dXJEIiwibWFjIjoiODNjNWRhOTlkNzVmOWEyNzNiN2NkMWUyYjVlM2Q0NDdhNTAyNDQ4ODA5NjZjMjQyNjNkN2E2Njg3Mjc0NWYyMCJ9';
$result = file_get_contents(
'http://localhost/test/session.php',
false,
stream_context_create(
array(
'http' => array(
'method' => 'GET',
'header' => "Cookie: laravel_session=" . $session_id . ";\r\n"
)
)
)
);
echo $result;
■強制ログインの例
<?php
/*
* 認証情報をリクエスト
*/
file_get_contents(
'http://localhost/~test/auth/enter.php',
false,
stream_context_create(
array(
'http' => array(
'method' => 'POST',
'header' => "Content-Type: application/x-www-form-urlencoded;\r\n",
'content' => http_build_query(
array(
'username' => 'developer',
'password' => 'abcd1234',
)
)
),
)
)
);
/*
* 認証後、CookieからセッションIDを取得
*/
$cookies = array();
foreach ($http_response_header as $header) {
$data = explode(':', $header);
if ($data[0] == 'Set-Cookie') {
$cookies[] = $data[1];
}
}
$session_id = '';
foreach ($cookies as $cookie) {
if (preg_match('/laravel_session=(.+); /', $cookie, $matches)) {
$session_id = $matches[1];
}
}
/*
* ログイン後ページを表示
*/
echo file_get_contents(
'http://localhost/~test/auth/home.php',
false,
stream_context_create(
array(
'http' => array(
'method' => 'GET',
'header' => "Cookie: laravel_session=" . $session_id . ";\r\n",
)
)
)
);
exit('Complete');
■その他メモ
【Swift】ユーザー認証APIを通した後、同一セッションとしてUIWebViewを表示する - Qiita
https://qiita.com/ktanaka117/items/e4921f061f6522ed5a63