Memo

メモ > 技術 > プログラミング言語: PHP > file_get_contentsでCookieを扱う

■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

Advertisement