2017-05-02 8 views
1

SERVER_X(PHP)とSERVER_Y(NODE)の2つの異なるサーバーで2つのアプリケーションを実行しています。PHPはCookieを保存し、そのCookieを使用してカールリクエストを送信できますか?

SERVER_X のindex.php

$url = 'http://10.10.10.2/login'; 
$poststring = 'username=admin&password=password'; 
$ch = curl_init ($url); 
curl_setopt ($ch, CURLOPT_COOKIEJAR, $ckfile); 
curl_setopt ($ch, CURLOPT_COOKIEFILE, $ckfile); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt ($ch, CURLOPT_POST, 1); 
curl_setopt ($ch, CURLOPT_POSTFIELDS, $poststring); 
$output = curl_exec ($ch); 
curl_close($ch); 


$url = 'http://10.10.10.2/getdata'; 
$ch = curl_init ($url); 
curl_setopt($ch, CURLOPT_COOKIEFILE, $ckfile); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt ($ch, CURLOPT_POST, 1); 
$output = curl_exec ($ch); 
curl_close($ch); 
echo json_decode($output); 

enter image description here だから我々が達成したいものをアクセスすることであるSERVER_X/index.phpを、SERVER_Yからデータを取得することができCLIENTSERVER_YSERVER_X PHPコードで認証されました。これは可能ですか?

+0

'ますcurl_setopt(真の$ curl_handle、CURLOPT_COOKIESESSION、)、それは以下のコードで動作するように管理します;'欠落している可能性があります。 –

+0

[PHPカールとクッキー]の可能な複製(http://stackoverflow.com/questions/12885538/php-curl-and-cookies) –

答えて

-1

define('_IP', '10.10.10.2'); 
define('_USERNAME', $_GET['user']); 
define('_PASSWORD', $_GET['pass']); 
define('_ORCHESTRA_PORT', '11111'); 
define('_NODE_PORT', '22222'); 

$main_auth_url = 'http://' . _IP . ':' . _ORCHESTRA_PORT . '/v2/auth/login'; 
$main_auth_credential = array("username" => _USERNAME, "password" => _PASSWORD); 
$main_auth_credential = json_encode($main_auth_credential); 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $main_auth_url); 
curl_setopt($ch, CURLOPT_POST, TRUE); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $main_auth_credential); 
curl_setopt($ch, CURLOPT_HEADER, TRUE); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); 
curl_setopt($ch, CURLOPT_VERBOSE, true); 

$response = curl_exec($ch); 
curl_close($ch); 

$user_id = explode('set-cookie: userid=', $response); 
$user_id = explode('; Max-Age', $user_id[1]); 
$user_id = $user_id[0]; 

$token = explode('set-cookie: token=', $response); 
$token = explode('; Max-Age', $token[1]); 
$token = $token[0]; 

$connect_sid = explode('set-cookie: connect.sid=', $response); 
$connect_sid = explode('; Path=/', $connect_sid[1]); 
$connect_sid = $connect_sid[0]; 

$node_user_id = urldecode($user_id); 
$node_user_id = explode('"', $node_user_id); 
$node_user_id = $node_user_id[1]; 

$node_auth_url = 'http://' . _IP . ':' . _NODE_PORT . '/v2/auth/login'; 
$node_auth_credential = array("username" => $node_user_id, "password" => $token); 
$node_auth_credential = json_encode($node_auth_credential); 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $node_auth_url); 
curl_setopt($ch, CURLOPT_POST, TRUE); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $node_auth_credential); 
curl_setopt($ch, CURLOPT_HEADER, TRUE); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); 

$response = curl_exec($ch); 
$info = curl_getinfo($ch); 
curl_close($ch); 

$connect_sid = explode('set-cookie: connect.sid=', $response); 
$connect_sid = explode('; Path=/', $connect_sid[1]); 
$connect_sid = $connect_sid[0]; 

$sub_url = 'http://' . _IP . ':' . _NODE_PORT . '/getdata'; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $sub_url); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Cookie: userid=" . $user_id . "; token=" . $token . "; connect.sid=" . $connect_sid)); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($ch, CURLOPT_VERBOSE, true); 

$response = curl_exec($ch); 
curl_close($ch); 

echo '<pre>'; 
print_r($response); 
echo '</pre><hr>'; 
関連する問題