이 글의 예제에서는 PHP 컬 캡슐화 클래스의 두 가지 사용 예를 설명합니다. 이 두 함수를 사용하면 PHP 컬 관련 기능을 매우 편리하게 사용할 수 있습니다. 참고할 수 있도록 모든 사람과 공유하세요. 세부 내용은 다음과 같습니다.
기능을 사용하기 전에 PHP 컬 모듈(libeay32.dll, ssleay32.dll, php5ts.dll, php_curl.dll)을 열어야 합니다
PHP 컬 함수 라이브러리를 활성화하는 단계
1) windows/php.ini 파일에서 ;extension=php_curl.dll을 제거합니다. /*php.ini의 경로를 보려면 echo phpinfo()를 사용하세요.
2) php5/libeay32.dll 및 ssleay32.dll을 시스템 디렉터리 windows/
에 복사합니다.
3).아파치를 다시 시작하세요
코드는 다음과 같습니다.
include_once('curl.class.php');
$aa =new Curl('');
$curlOptions = 배열(
CURLOPT_URL => "http://www.xx.com/addTicket.jsp", //접속 URL
CURLOPT_RETURNTRANSFER => true, //결과를 얻어 문자열로 반환
CURLOPT_REFERER => "ww.ww.ww/zw2",
CURLOPT_HTTPHEADER => array('X-FORWARDED-FOR:139.197.14.19', 'CLIENT-IP:127.0.0.1','Proxy-Client-IP:139.197.14.19','WL-Proxy-Client-IP:139.197 .14.19' ),
CURLOPT_HEADER => 1, //반환 헤더 정보 가져오기
//CURLOPT_SSL_VERIFYPEER => false, //SSL 암호화 지원
CURLOPT_POST => true, //POST 매개변수로 전송
CURLOPT_POSTFIELDS => 'ids=897&Submit=vote', //요청된 POST 매개변수 문자열
CURLOPT_TIMEOUT => $aa->timeout //응답을 기다리는 시간
);
echo $aa->getResponseText($curlOptions);
cul 처리 클래스:
클래스 컬
{
공개 $cookieFile;
공개 $timeout = 160;
공용 함수 __construct($dir){
$this->cookieFile = $this->getTemporaryCookieFileName($dir);
}
/**
* CURL 매개변수를 설정하고 요청을 보내 응답 콘텐츠를 가져옵니다.
* @액세스 비공개
* @param $curlOptions 배열 컬 설정 매개변수 배열
* @return string|false 접속에 성공하면 획득한 정보를 문자열 형식으로 반환하고, 그렇지 않으면 false
*/
공용 함수 getResponseText($curlOptions) {
/* CURLOPT_RETURNTRANSFER를 true로 설정 */
if(!isset($curlOptions[CURLOPT_RETURNTRANSFER]) || $curlOptions[CURLOPT_RETURNTRANSFER] == false) {
$curlOptions[CURLOPT_RETURNTRANSFER] = true;
}
/* 컬 모듈 초기화 */
$curl = 컬_init();
/* 컬 옵션 설정 */
컬_setopt_array($curl, $curlOptions);
/* 요청 보내기 및 응답 정보 받기 */
$responseText = '';
시도해보세요 {
$responseText = 컬_exec($curl);
if(($errno = 컬_errno($curl)) != CURLM_OK) {
$errmsg = 컬_오류($curl);
새로운 예외 발생($errmsg, $errno);
}
} 잡기(예외 $e) {
//ExceptionDisposeFunction($e);
//print_r($e);
$responseText = 거짓;
}
/* 컬 모듈 닫기 */
컬_닫기($curl);
/* 결과 반환 */
$responseText를 반환합니다.
}
/**
* 유니코드 문자열(u0000)을 utf-8 문자열로 변환, 도구 기능
* @액세스 비공개
* @static
* @param $string string 유니코드 문자열
* @return 문자열 utf-8 문자열
*/
공용 함수 unicodeToUtf8($string) {
$string = str_replace('u', '', strtolower($string));
$length = strlen($string) / 4;
$stringResult = '';
for($i = 0; $i
$charUnicodeHex = substr($string, $i * 4, 4);
$unicodeCode = hexdec($charUnicodeHex);
$utf8Code = '';
if($unicodeCode < 128) {
$utf8Code = chr($unicodeCode);
} else if($unicodeCode < 2048) {
$utf8Code .= chr(192 (($unicodeCode - ($unicodeCode % 64)) / 64));
$utf8Code .= chr(128 ($unicodeCode % 64));
} 그 밖의 {
$utf8Code .= chr(224 (($unicodeCode - ($unicodeCode % 4096)) / 4096));
$utf8Code .= chr(128 ((($unicodeCode % 4096) - ($unicodeCode % 64)) / 64));
$utf8Code .= chr(128 ($unicodeCode % 64));
}
$stringResult .= $utf8Code;
}
$stringResult를 반환합니다.
}
개인 함수 getTemporaryCookieFileName($dir='.') {
return (str_replace("", '/', tempnam($dir, 'tmp')));
}
}
코드 복사 코드는 다음과 같습니다.
//컬类
클래스 컬
{
함수 컬(){
true를 반환합니다.
}
함수 실행($method, $url, $fields='', $userAgent='', $httpHeaders='', $username='', $password=''){
$ch = Curl::create();
if(false === $ch){
false를 반환합니다.
}
if(is_string($url) && strlen($url)){
$ret = 컬_setopt($ch, CURLOPT_URL, $url);
}그밖에{
false를 반환합니다.
}
//是否显示头부信息
컬_setopt($ch, CURLOPT_HEADER, false);
//
컬_setopt($ch, CURLOPT_RETURNTRANSFER, true);
if($username != ''){
cur_setopt($ch, CURLOPT_USERPWD, $username . ':' . $password);
}
$method = strtolower($method);
if('post' == $method){
컬_setopt($ch, CURLOPT_POST, true);
if(is_array($fields)){
$sets = 배열();
foreach($fields AS $key => $val){
$sets[] = $키 . '=' . urlencode($val);
}
$fields = implode('&',$sets);
}
컬_setopt($ch, CURLOPT_POSTFIELDS, $fields);
}else if('put' == $method){
컬_setopt($ch, CURLOPT_PUT, true);
}
//curl_setopt($ch, CURLOPT_PROGRESS, true);
//curl_setopt($ch, CURLOPT_VERBOSE, true);
//curl_setopt($ch, CURLOPT_MUTE, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);//设置curl超时秒数
if(strlen($userAgent)){
컬_setopt($ch, CURLOPT_USERAGENT, $userAgent);
}
if(is_array($httpHeaders)){
컬_setopt($ch, CURLOPT_HTTPHEADER, $httpHeaders);
}
$ret = 컬_exec($ch);
if(curl_errno($ch)){
컬_닫기($ch);
반환 배열(curl_error($ch), 컬_errno($ch));
}그밖에{
컬_닫기($ch);
if(!is_string($ret) || !strlen($ret)){
false를 반환합니다.
}
$ret 반환;
}
}
함수 포스트($url, $fields, $userAgent = '', $httpHeaders = '', $username = '', $password = ''){
$ret = Curl::execute('POST', $url, $fields, $userAgent, $httpHeaders, $username, $password);
if(false === $ret){
false를 반환합니다.
}
if(is_array($ret)){
false를 반환합니다.
}
$ret 반환;
}
함수 get($url, $userAgent = '', $httpHeaders = '', $username = '', $password = ''){
$ret = Curl::execute('GET', $url, '', $userAgent, $httpHeaders, $username, $password);
if(false === $ret){
false를 반환합니다.
}
if(is_array($ret)){
false를 반환합니다.
}
$ret 반환;
}
함수 생성(){
$ch = null;
if(!function_exists('curl_init')){
false를 반환합니다.
}
$ch = 컬_init();
if(!is_resource($ch)){
false를 반환합니다.
}
$ch 반환;
}
}
?>
용법
사용 방법 받기:
$curl = new Curl();
$curl->get('http://www.jb51.net/');
게시물 사용법 :
$curl = new Curl();
$curl->get('http://www.jb51.net/', 'p=1&time=0′);
希望本文所述对大家的PHP程序设计有所帮助。