日志
PHP中使用curl库获取网页内容如何POST数据以及保持会话
2011-06-12 12:50
2009-02-18 13:31 /** * 使用CURL库获取网页内容,如果有post数据,则使用POST方法 * @author XChinux * @param string $url 网址 * @param stirng $cookie COOKIE保存文件,由开发者自己定义文件名字,以使文件内容保持一致以保持会话 * @param string $referer 引用网址 * @param mixed $data POST数据 * @return string 返回BODY部分内容 * @final 2009-02-14 */ function curlFetch($url, $cookie = "", $referer = "", $data = null) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 返回字符串,而非直接输出 curl_setopt($ch, CURLOPT_HEADER, false); // 不返回header部分 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120); // 设置socket连接超时时间 if (!empty($referer)) { curl_setopt($ch, CURLOPT_REFERER, $referer); // 设置引用网址 } if (!empty($cookie)) { curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie); // 设置从$cookie所指文件中读取cookie信息以发送 curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); // 设置将返回的cookie保存到$cookie所指文件 } if (is_null($data)) { // GET } else if (is_string($data)) { curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); // POST } else if (is_array($data)) { // POST curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); } set_time_limit(120); // 设置自己服务器超时时间 $str = curl_exec($ch); curl_close($ch); return $str; } |