普通 curl post 請求前端
public static function curlPost($url, $post_fields = array(), $timeout = 5) { $timeout = intval($timeout); if ($timeout <= 0) { $timeout = 5; } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); //60秒 curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_REFERER, ''); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields); $data = curl_exec($ch); curl_close($ch); return $data; }
curl請求中設置 cookiejson
public function curlPost($url, $params) { $myCurl = curl_init(); // 初始化一個curl對象 curl_setopt($myCurl, CURLOPT_URL, $url); // 設置你須要抓取的URL curl_setopt($myCurl, CURLOPT_CUSTOMREQUEST, 'POST'); curl_setopt($myCurl, CURLOPT_POST, 1); curl_setopt($myCurl, CURLOPT_RETURNTRANSFER, 1); // 設置是將結果保存到字符串中仍是輸出到屏幕上,1表示將結果保存到字符串 curl_setopt($myCurl, CURLOPT_HEADER, 0); curl_setopt($myCurl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($myCurl, CURLOPT_USERAGENT, 'CRM v1.0'); if (!empty($params['sessionid'])) { // 設置cookie curl_setopt($myCurl, CURLOPT_COOKIE, 'JSESSIONID='.$params['sessionid'].'; PHPSESSID='.$params['sessionid']); } if(isset($params['requestHeaders'])) { curl_setopt($myCurl, CURLOPT_HTTPHEADER, $params['requestHeaders']); unset($params['requestHeaders']); } curl_setopt($myCurl, CURLOPT_POSTFIELDS, $params); $header = ''; curl_setopt($myCurl, CURLOPT_HEADERFUNCTION, function($curl, $h) use (&$header) { $header = $header.$h; return strlen($h); }); $re = curl_exec($myCurl); // 執行請求 curl_close($myCurl); // 關閉url請求 return $re; }
在返回值中設置cookie (在服務端 登陸 後臺,再設置好cookie,返回 前端)cookie
方式1:session
public function actionLogin() { $url = Yii::$app->params['url']; $params = Yii::$app->request->post(); $res = $this->curlPost($url, $params); $json = json_decode($res, true); $clientinfo = isset($json['results'][0]['clientinfo'])?urldecode($json['results'][0]['clientinfo']):""; $sessionid = isset($json['results'][0]['sessionid'])?urldecode($json['results'][0]['sessionid']):""; header("Set-Cookie: clientinfo=$clientinfo; domain=baidu.com; path=/", false); header("Set-Cookie: SESSIONID=$sessionid; path=/", false); $this->jsonReturn($json); }
方式2:app
public function actionLogin() { $url = Yii::$app->params['url']; $params = Yii::$app->request->post(); $res = $this->curlPost($url, $params); $json = json_decode($res, true); $clientinfo = isset($json['results'][0]['clientinfo'])?urldecode($json['results'][0]['clientinfo']):""; $sessionid = isset($json['results'][0]['sessionid'])?urldecode($json['results'][0]['sessionid']):""; setcookie("clientinfo", $clientinfo); setcookie("SESSIONID", $sessionid); $this->jsonReturn($json); }