2017-01-07 181 views
1

我對php比較陌生,但我試圖重定向並從我的應用程序登錄到外部URL。我有證書,並試圖張貼他們,但我真正能夠實現的是「成功」。如果我通過laravel的 - > redirect()或標頭(位置:blah.php)重定向,則會出現我的憑據未發送的錯誤。我已經嘗試使用cURL和Guzzle到目前爲止。是否有通過登錄憑據重定向的工作示例?php重定向並登錄

嘗試1:

$client = new Client(array('curl' => array(CURLOPT_SSL_VERIFYPEER => false))); 

     $url = "url.php"; 
     $data = array('email' => '[email protected]', "pass" => 'pass'); 
     $data_string = json_encode($data); 

     $res = $client->post($url, [ 'body' => $data_string ]); 
     $code = $res->getStatusCode(); 

     if($code == '200'){ 
      $this->redirect($url); 

      // return redirect()->away($url); 
     } else { 
      return redirect('/register') 
    } 

嘗試2:

$POSTFIELDS = json_encode($data); 
$cookie_file_path = "cookie.txt"; 
$fp = fopen($cookie_file_path,'w'); 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,$url); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS,$POSTFIELDS); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path); 
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path); 
$result = @curl_exec ($ch); 

if($result) { 
    header("Location: url.php"); 
} 

curl_close ($ch); 

預期的行爲,用戶在當前應用程序保存的數據,將被添加到註冊DB然後這些憑證傳遞給繼承應用程序對登錄,他們在那裏看到該頁面,就好像他們在那裏登錄一樣。

+0

因此,我們你試過什麼,什麼是輸出和什麼是你的預期輸出? –

+0

@MASIDDIQUI,請參閱編輯 – itchyclothes

+0

嗯,這裏有兩個不同的會話。一個在用戶和你的服務器之間,一個在你的服務器和你的舊版應用之間。您需要將會話cookie從舊應用程序設置到您的用戶會話。 –

回答

0

您需要進行會話。例如:

$cookies = curl_get_cookies($curl_handle); 
$session_cookie = $cookies['PHPSESSID']; 
session_set('PHPSESSID', $session_cookie); 

或者,您可以生成自動發佈HTML表單。例如:

<form id="auto-login" method="POST" action="<?PHP echo htmlentitites($url); ?>"> 
    <input type="hidden" name="email" value="<?PHP echo htmlentities('[email protected]'); ?>" />   
    <input type="hidden" name="pass" value="<?PHP echo htmlentities('pass'); ?>" /> 
</form> 

<script> 
$('#auto-login').submit(); 
</script>