>  기사  >  PHP에서 컬을 사용하는 방법은 무엇입니까? 컬 연장 코스에 대한 자세한 설명

PHP에서 컬을 사용하는 방법은 무엇입니까? 컬 연장 코스에 대한 자세한 설명

伊谢尔伦
伊谢尔伦원래의
2017-07-07 09:32:241912검색

CURL은 HTTP, FTP, TELNET 등을 포함한 다양한 프로토콜을 지원하는 매우 강력한 오픈 소스 라이브러리입니다. 우리는 이를 사용하여 HTTP 요청을 보냅니다. 이것이 제공하는 이점은 유연한 옵션을 통해 다양한 HTTP 프로토콜 매개변수를 설정할 수 있고 HTTPS를 지원한다는 것입니다. CURL은 URL 접두사가 "HTTP"인지 "HTTPS"인지에 따라 전송된 콘텐츠를 암호화할지 여부를 자동으로 선택할 수 있습니다. 다음으로, 우리의 PHP 중국어 웹사이트는 친구들에게 CURL을 소개할 것입니다.

PHP를 처음 접하는 친구는 웹사이트 관련 코스를 먼저 읽을 수 있습니다: php 입문 튜토리얼 1, 일주일 안에 PHP 배우기

PHP에서 컬을 사용하는 방법은 무엇입니까? 컬 연장 코스에 대한 자세한 설명

PHP 중국어 웹사이트에 대한 관련 비디오 튜토리얼을 볼 수 있습니다: Dugu Jiujian (4)_PHP 비디오 튜토리얼

PHP에서 컬을 사용하는 방법은 무엇입니까? 컬 연장 코스에 대한 자세한 설명

CURL을 사용하여 요청을 보내는 기본 프로세스

CURL의 PHP 확장을 사용하여 HTTP 요청 전송을 완료하는 단계는 일반적으로 다음과 같습니다.

초기화

CURL 옵션 설정

실행하고 결과 얻기

VURL 연결 핸들을 해제합니다.

다음 프로그램 조각은 CURL을 사용하여 HTTP를 보내는 일반적인 프로세스입니다

// 1. 初始化
 $ch = curl_init();
 // 2. 设置选项,包括URL
 curl_setopt($ch,CURLOPT_URL,"http://www.php.cn");
 curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
 curl_setopt($ch,CURLOPT_HEADER,0);
 // 3. 执行并获取HTML文档内容
 $output = curl_exec($ch);
 if($output === FALSE ){
 echo "CURL Error:".curl_error($ch);
 }
 // 4. 释放curl句柄
 curl_close($ch);

위 코드에서 네 가지 함수가 사용됩니다.

curl_init() 및 curl_close()는 각각 CURL 연결을 초기화하고 CURL 연결을 닫는 데 사용됩니다. 그 중 상대적으로 간단합니다.

curl_exec()는 CURL 요청을 실행합니다. 오류가 발생하지 않으면 함수는 해당 URL에서 반환된 데이터를 반환하여 오류가 발생하면 FALSE를 반환합니다. 등호는 출력이 FALSE인지 여부를 결정하는 데 사용됩니다. 이는 빈 문자열 반환과 오류를 구별하기 위한 것입니다. CURL 함수 라이브러리에서 가장 중요한 함수는 컬_setopt()입니다. 이 함수는 CURL 함수 라이브러리에서 정의한 옵션을 설정하여 HTTP 요청을 사용자 정의할 수 있습니다. 위 코드 조각에는 세 가지 중요한 옵션이 사용됩니다.

    CURLOPT_URL은 요청된 URL을 지정합니다.
  • CURLOPT_RETURNTRANSFER는 나중에 실행되는 컬_exec 함수의 반환이 URL의 반환 문자열임을 나타내기 위해 1로 설정됩니다. 문자열은 표준 출력으로 전달되고 TRUE를 반환합니다.
  • CURLLOPT_HEADER는 0으로 설정되어 HTTP 헤더 정보가 반환되지 않음을 나타냅니다.
  • CURL에는 다양한 옵션이 있습니다. CURL에서 지원하는 모든 옵션 목록은 PHP 매뉴얼을 확인하세요.

CURL 요청의 출력 정보 가져오기

curl_exec() 함수가 실행된 후, 컬_getinfo() 함수를 사용하여 CURL 요청의 관련 정보 출력을 얻을 수 있습니다. 샘플 코드는 다음과 같습니다.

curl_exec($ch);
$info = curl_getinfo($sh);
echo ' 获取 '.$info['url'].'耗时'.$info['total_time'].'秒';

위 코드에서 컬_getinfo는 다음 데이터를 포함하는 연관 배열을 반환합니다.

    url: 네트워크 주소.
  • content_type: 콘텐츠 인코딩.
  • http_code:
  • HTTP 상태 코드

    .

  • header_size: 헤더의 크기입니다.
  • request_size: 요청의 크기입니다.
  • filetime: 파일이 생성된 시간입니다.
  • ssl_verify_result: SSL 확인 결과.
  • redirect_count: 점프 횟수.
  • total_time: 총 소요 시간입니다.
  • namelookup_time: DNS 쿼리에 시간이 걸립니다.
  • connect_time: 연결을 기다리는 데 소요된 시간입니다.
  • pretransfer_time: 편입 전 준비에 걸리는 시간입니다.
  • size_uplpad: 업로드된 데이터의 크기입니다.
  • size_download: 다운로드된 데이터의 크기입니다.
  • speed_download: 다운로드 속도.
  • speed_upload: 업로드 속도.
  • download_content_length: 다운로드 콘텐츠의 길이입니다.
  • upload_content_length: 업로드된 콘텐츠의 길이입니다.
  • starttransfer_time: 환승을 시작하는 시간표입니다.
  • redirect_time: 리디렉션 시간.
  • curl_getinfo() 함수에는 선택적 매개변수 $opt도 있으며, 이를 통해 위 필드에 해당하는 일부 상수를 설정할 수 있습니다. 두 번째 매개변수가 설정된 경우 지정된 정보만 반환됩니다. 예를 들어 $opt를 CURLINFO_TOTAL_TIME으로 설정하면, 컬_getinfo() 함수는 전체 전송에 소요되는 시간인 total_time만 반환하게 되는데, 이는 특정 전송 정보에만 주의하면 되는 경우 $opt 매개변수를 설정하는 것이 의미가 있다. .

使用CURL发送GET请求

如何使用CURL来发送GET请求,发送GET请求的关键是拼装格式正确的URL。请求地址和GET数据由一个“?”分割,然后GET变量的名称和值用“=”分隔,各个GET名称和值由“&”连接。PHP为我们提供了一个函数专门用来拼装GET请求和数据部分——http_build_query,该函数接受一个关联数组,返回由该关联数据描述的GET请求字符串。使用这个函数,结合CURL发送HTTP请求的一般流程,我们封闭了一个发送GET请求的函数——doCurlGetRequest,具体代码如下:

**
 *@desc 封闭curl的调用接口,get的请求方式。
*/
function doCurlGetRequest($url,$data,$timeout = 5){
 if($curl == "" || $timeout <= 0){
 return false;
 }
 $url = $url.&#39;?&#39;.http_bulid_query($data);
 $con = curl_init((string)$url);
 curl_setopt($con, CURLOPT_HEADER, false);
 curl_setopt($con, CURLOPT_RETURNTRANSFER,true);
 curl_setopt($con, CURLOPT_TIMEOUT, (int)$timeout);
 
 return curl_exec($con);
}

这个函数把使用http_build_query 拼装好的带GET参数的URL传给curl_init函数,然后使用CURL发送HTTP请求。

使用CURL发送POST请求

可以使用CURL提供的选项CURLOPT_POSTFIELDS,设置该选项为POST字符串数据就可以把请求放在正文中。同样我们实现了一个发送POST请求的函数——doCurlPostRequest,代码如下:

/**
** @desc 封装 curl 的调用接口,post的请求方式
**/
function doCurlPostRequest($url,$requestString,$timeout = 5){
 if($url == &#39;&#39; || $requestString == &#39;&#39; || $timeout <=0){
 return false;
 }
 $con = curl_init((string)$url);
 curl_setopt($con, CURLOPT_HEADER, false);
 curl_setopt($con, CURLOPT_POSTFIELDS, $requestString);
 curl_setopt($con, CURLOPT_POST,true);
 curl_setopt($con, CURLOPT_RETURNTRANSFER,true);
 curl_setopt($con, CURLOPT_TIMEOUT,(int)$timeout);
 return curl_exec($con); 
}

上面代码中除了设置CURLOPT_POSTFIELDS外,我们还设置了CURL_POST为true,标识这个请求是一个POST请求。在POST请求中也是可以传输GET数据的,只需要在URL中拼装GET请求数据即可秀。

curl实现的扩展功能:

1、实现远程获取和采集内容

2、实现PHP 网页版的FTP上传下载

3、实现模拟登陆:去一个邮件系统,curl可以模拟cookies

4、实现接口对接(API),数据传输等:通过一个平台发送短信啊,抓取和传递所传输的信息。

5、实现模拟Cookie等:登陆的状态下才可以操作一些属性。

如何使用CURL功能

默认情况加PHP是不支持CURL的,需要在php.ini中开启该功能

;extension=php_curl.dll前面的分号去掉

1  整个操作过程中第一步是用cur_init()函数进行初始化

$curl = curl_init(‘www.php.cn&#39;)

2.用curl_setopt()函数进行设置选项。

3.设置后,进行执行事务 curl_exec($curl);

4 最后关闭curl_close();

使用PHP CURL实现传输和获取功能(post传输方式):获取远程网页数据

$user = "admin";
$pass = "admin";
$curlPost = "user=$user&pass=$pass";
$ch = curl_init(); //初始化一个CURL对象
curl_setopt($ch, CURLOPT_URL, "http://localhost/edu/login.php");
//设置你所需要抓取的URL
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
//设置curl参数,要求结果是否输出到屏幕上,为true的时候是不返回到网页中
假设上面的0换成1的话,那么接下来的$data就需要echo一下。
curl_setopt($ch, CURLOPT_POST, 1);
//post提交
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
$data = curl_exec($ch);
//运行curl,请求网页。
curl_close($ch);
[/code]

实现远程模拟登陆最基础部分。

curl也还是需要配置用户名和密码的,只不过是被浏览器隐藏了。

============================================================================

curl模拟登陆

模拟登陆:就是不登陆到php的论坛,也能查看到相应的信息。

分析登陆字段--->登陆后保留cookie状-->读取cookie并跳转到相关页-->抓取数

1、模拟登陆后创建一个文件保存cookie内容

2、通过读取生成的cookie内容模拟用户登陆状态

3、到相关页面获取所需内容

tempname创建一个临时文件

tempnam() 函数创建一个具有唯一文件名的临时文件。 若成功,则该函数返回新的临时文件名。若失败,则返回 false。

tempnam(dir,prefix)

参数 描述

dir 必需。规定创建临时文件的目录。

prefix 必需。规定文件名的开头。

相当于,fopen  fwirte  fclose

它可以返回一个布尔值。使用第三方来登陆你的QQ、msn是很危险的,因为它可以记录你的登录状态,抓取你的用户名和密码。

使用CURL模拟登陆到PHP论坛

1、分析登陆所需input框字段名和所需字段数量

2、保存cookie 模拟登陆后获取会员金币数量

代码:

//初始化一个 cURL 对象
$curl = curl_init();
//设置你需要抓取的URL
curl_setopt($curl, CURLOPT_URL, " http://www.php.cn");
//设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);
//运行cURL,请求网页
$data = curl_exec($curl);
//关闭URL请求
curl_close($curl);
$user = "admin";
$pass = "admin100";
$curlPost = "user=$user&pass=$pass";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, " http://localhost/curl/login.php ");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
$data = curl_exec($ch);
curl_close($ch);
?>
if($_POST[&#39;user&#39;]=="admin"){
 echo "";
}else{
 echo "";
}
//print_r($_POST);
?>

相关内容推荐:

1. php get和post两种方式用curl调用接口方法详解

2. 什么是curl?curl使用方法总结

3.【php curl类库】10个php curl类库下载

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.