php 使用curl 進行簡單模擬提交表單,供大家參考,具體內容如下
代碼如下復制代碼
//初始化curl
$ch= curl_init();
$url='xxx'
$option= [
CURLOPT_URL =>$url,
CURLOPT_HEADER => 1,
CURLOPT_RETURNTRANSFER => 1,
];
curl_setopt_array($ch,$option);
$output= curl_exec($ch);
preg_match_all('/Set-Cookie: (.*);/i',$output,$str);//正則匹配
//如果有token的話就獲取token
preg_match('/token = \"(.*)\"/i',$output,$token);
if(empty($str)) {
returnfalse;
}
$cook=$str[1];
$cookie= implode('',$cook);
$up_url='xxx'
$post_data= [
'name'=>'test_',
'tel'=>�',
'email'=>'[email protected]',
'message'=>'this is my message;',
'_token'=>$token[1],
];
$options= [
CURLOPT_URL =>$up_url,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_HEADER => 1,
CURLOPT_USERAGENT =>"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36",
CURLOPT_COOKIESESSION => 1,
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS =>$post_data,
CURLOPT_COOKIE =>$cookie
];
curl_setopt_array($ch,$options);
$res= curl_exec($ch);
// $info = curl_getinfo($ch);
if($res=== FALSE) {
p('curl Error: '. curl_error($ch));
}
curl_close($ch);
p($res);
取自基於laravel開發的一個網站, laravel中表單中有一個csrf_token 的. 所以就得獲取token, 還有帶上cookie
這裡注意的是, 不能同時初始化兩個curl, 否則token或者cookie會發生變化, 如果你需要初始化兩個curl的話, 可以使用CURLOPT_COOKIEJAR設置. [詳情看手冊]
然後運行下:binggo
使用curl時, 比較重要的就是一個cookie的應用, 翻了下手冊, 設置cookie的就有四個...CURLOPT_COOKIESESSION、CURLOPT_COOKIE、CURLOPT_COOKIEFILE、CURLOPT_COOKIEJAR
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持本網站。