프로그래밍.../PHP | Posted by 고기킬러 2009. 12. 28. 13:52

cURL 이란??? (PHP)

차례
1. cURL이란?
2. cURL의 장점
3. cURL의 함수 설명
4. 기초사용법
5. 옵션 설명
6. cURL의 활용




1. cURL이란?

- cURL = Client URL
- cURL은 아래와 같은 프로토콜 등에 의해 전송되는 파일들을 위한 command line tool이다.
   FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, FILE
-  SSL, HTTP POST, HTTP PUT, FTP uploading, HTTP form기반의 upload, proxies, cookies, user+password인증도 제공한다.
- cURL은 무료이며, 많은 운영체제에서 컴파일되고 동작하는 open software이다.
- command line tool을 이용하거나
- libCURL을 이용할 수 있다.

아래는 원문이다.
 curl is a command line tool for transferring files with URL syntax, supporting FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS and FILE. curl supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP form based upload, proxies, cookies, user+password authentication (Basic, Digest, NTLM, Negotiate, kerberos...), file transfer resume, proxy tunneling and a busload of other useful tricks.

Curl is free and open software that compiles and runs under a wide variety of operating systems.

 Use the cURL command line tool or use libcurl from within your own programs.

[what can curl do]의 내용을 참조하기 바란다.(http://curl.haxx.se/docs/features.html)


2. cURL의 장점
- cURL의 PHP설정의 allow_url_fopen옵션과 상관 없이 작동한다.
- Proxy, Cookie, Header등을 손쉽게 세팅할 수 있다.
- 다양한 프로토콜의 사용이 가능하여 개발의 범위가 넓다.
- 핸들러 하나로 여러개의 접속을 할 수 있기 때문에 코딩을 단순화 할 수 있다.

3. cURL의 함수 설명
 
-curl_close —URL handle  을 닫습니다.
-curl_copy_handlecURL handle 을 속성채로 복사합니다.
-curl_errno에러번호를 리턴합니다.
-curl_error  에러메세지를 리턴합니다.
-curl_exec  설정된옵션으로 실행합니다.
-curl_getinfo통신의 정보를 표시합니다.
-curl_initcURL handle 을 생성합니다.
-curl_multi_add_handle  handle  배열에 cURL handle  을 추가합니다
-curl_multi_closecURL handle 배열 전체를 닫습니다.
-curl_multi_exec  여러 개의 설정된옵션으로 실행합니다.
-curl_multi_getcontent  통신결과 컨텐츠를 표시합니다.
-curl_multi_info_read통신 정보들을 표시합니다.
-curl_multi_init여러 개의 handle 을 생성합니다.
-curl_multi_remove_handle여러 개의 handle  을 삭제합니다.
-curl_multi_select  여러 개의 handle  중 사용할 handle  을 선택합니다.
-curl_setopt_array옵션을 배열로 한번에 설정합니다.
-curl_setopt한가지의 옵션을 설정합니다.
-curl_version  cURL의 버젼정보를 가져옵니다.


4. 기초사용법

<?php
//핸들을 생성한다.
$ch = curl_init();


//URL을 설정한다.
curl_setopt($ch, CURLOPT_URL, http://www.naver.com/);

//실행한다.
$html = curl_exec($ch);

//핸들을 닫는다.
curl_close($ch);
?>


5. 옵션 설명

옵션 설명을 시작하기 전에...

sample.php
<?
if($a != "x")
header("Location:sample.php?a=x");
else{
?>
<pre>
webTech입니다.
<? print_r($_SERVER); ?>
<? print_r($_COOKIE); ?>
</pre>
<?
}
?>


출력 결과(IE)
webTech입니다.
Array
(
    [HTTP_ACCEPT] => image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*
    [HTTP_ACCEPT_LANGUAGE] => ko
    [HTTP_ACCEPT_ENCODING] => gzip, deflate
    [HTTP_USER_AGENT] => Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
    [HTTP_HOST] => 192.168.0.43
    [HTTP_CONNECTION] => Keep-Alive
    [PATH] => /usr/local/bin:/usr/bin:/bin
    [SERVER_SIGNATURE] => 
Apache/2.2.11 (Ubuntu) PHP/5.2.6-3ubuntu4.2 with Suhosin-Patch Server at 192.168.0.43 Port 80
[SERVER_SOFTWARE] => Apache/2.2.11 (Ubuntu) PHP/5.2.6-3ubuntu4.2 with Suhosin-Patch [SERVER_NAME] => 192.168.0.43 [SERVER_ADDR] => 192.168.0.43 [SERVER_PORT] => 80 [REMOTE_ADDR] => 192.168.0.59 [DOCUMENT_ROOT] => /var/www/web_index [SERVER_ADMIN] => webmaster@localhost [SCRIPT_FILENAME] => /home/bridge/public_html/sample.php [REMOTE_PORT] => 5576 [GATEWAY_INTERFACE] => CGI/1.1 [SERVER_PROTOCOL] => HTTP/1.1 [REQUEST_METHOD] => GET [QUERY_STRING] => a=x [REQUEST_URI] => /~bridge/sample.php?a=x [SCRIPT_NAME] => /~bridge/sample.php [PHP_SELF] => /~bridge/sample.php [REQUEST_TIME] => 1257858849 [argv] => Array ( [0] => a=x ) [argc] => 1 ) Array ( )
5.1 CURLOPT_FOLLOWLOCATION
 
CURLOPT_FOLLOWLOCATION의 값을 TRUE로 설정하면 서버가 HTTP 헤더로 보내는 "Location :"헤더의 내용을 추한다. (이것은 반복적으로 수행됩니다. CURLOPT_MAXREDIRS가 지정되지 않은 경우, 보내는 "Location : "헤더의 내용을 계속 추적 함에 주의해야 한다.)

sample2.php
echo("기본형");
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, http://localhost/sample.php);
$html = curl_exec($ch);


echo("return " . $html);

curl_close($ch);

결과
기본형
return 1

위의 소스는 sample.php의 소스에서 [sample.php?a=x]로 이동하라고 되어 있지만, 이동하지 않는 다는 것을 알 수 있다.

그럼 CURLOPT_FOLLOWLOCATION옵션을 TRUE로 설정 해보면...

sample3.php
echo("CURLOPT_FOLLOWLOCATION 옵션 예제");
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, http://localhost/sample.php);
curl_seropt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
$html = curl_exec($ch);


echo("return " . $html);

curl_close($ch);

결과
CURLOPT_FOLLOWLOCATION 옵션 예제
webTech입니다.
Array
(
    [HTTP_ACCEPT] => image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*
    [HTTP_ACCEPT_LANGUAGE] => ko
    [HTTP_ACCEPT_ENCODING] => gzip, deflate
    [HTTP_USER_AGENT] => Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
    [HTTP_HOST] => 192.168.0.43
    [HTTP_CONNECTION] => Keep-Alive
    [PATH] => /usr/local/bin:/usr/bin:/bin
    [SERVER_SIGNATURE] => 
Apache/2.2.11 (Ubuntu) PHP/5.2.6-3ubuntu4.2 with Suhosin-Patch Server at 192.168.0.43 Port 80
[SERVER_SOFTWARE] => Apache/2.2.11 (Ubuntu) PHP/5.2.6-3ubuntu4.2 with Suhosin-Patch [SERVER_NAME] => 192.168.0.43 [SERVER_ADDR] => 192.168.0.43 [SERVER_PORT] => 80 [REMOTE_ADDR] => 192.168.0.59 [DOCUMENT_ROOT] => /var/www/web_index [SERVER_ADMIN] => webmaster@localhost [SCRIPT_FILENAME] => /home/bridge/public_html/sample.php [REMOTE_PORT] => 5576 [GATEWAY_INTERFACE] => CGI/1.1 [SERVER_PROTOCOL] => HTTP/1.1 [REQUEST_METHOD] => GET [QUERY_STRING] => a=x [REQUEST_URI] => /~bridge/sample.php?a=x [SCRIPT_NAME] => /~bridge/sample.php [PHP_SELF] => /~bridge/sample.php [REQUEST_TIME] => 1257858849 [argv] => Array ( [0] => a=x ) [argc] => 1 ) Array ( )

return 1

위에 보는 것 처럼 [sample.php?a=x]로 이동한 것을 알 수 있다.

5.2 CURLOPT_AUTOREFERER
 CURLOPT_AUTOREFERER의 값을 TRUE로 설정하면, LOCATION: 리디렉션을 따라갈 때 자동으로 Referer:필드를 요청에 추가 한다.




[출처] 웹테크 - http://webtech.tistory.com
보물들../아이폰(IPhone) | Posted by 고기킬러 2009. 12. 23. 18:06

내 핸드폰 바탕화면



내 아이폰 ㅋㅋㅋ
좀 럭셔리 한가요???

iPhone 에서 작성된 글입니다.

'보물들.. > 아이폰(IPhone)' 카테고리의 다른 글

귀여운 아이폰 테마 -picnic-  (0) 2009.12.28
나도 아이폰이다!!  (0) 2009.12.15
프로그래밍.../Smarty | Posted by 고기킬러 2009. 12. 23. 10:20

Smarty 한글 매뉴얼


Smarty - 컴파일링 PHP 템플릿 엔진

Monte Ohrt <monte at ohrt dot com>
Andrei Zmievski <andrei@php.net>
HeeMin Yang <heemin at naver dot com>

09-02-2009


차례
서문
I. 처음에
1장. Smarty란?
2장. 인스톨
필요 조건
기본적인 인스톨
확장 셋업
II. 템플릿 디자이너를 위한 Smarty
3장. 기본 문법
주석
변수
함수
속성
큰따옴표 내에 포함된 변수
연산자
Smarty의 파싱에서 벗어나기(이스케이프)
4장. 변수
PHP에서 할당된 변수
설정 파일로부터 로딩된 변수
예약된 변수 {$smarty}
5장. 변수의 변경자
capitalize
cat
count_characters
count_paragraphs
count_sentences
count_words
date_format
default
escape
indent
lower
nl2br
regex_replace
replace
spacify
string_format
strip
strip_tags
truncate
upper
wordwrap
6장. 변경자의 연결
7장. 내장 함수
{capture}
{config_load}
{foreach},{foreachelse}
{if},{elseif},{else}
{include}
{include_php}
{insert}
{ldelim},{rdelim}
{literal}
{php}
{section},{sectionelse}
{strip}
8장. 외장 함수
{assign}
{counter}
{cycle}
{debug}
{eval}
{fetch}
{html_checkboxes}
{html_image}
{html_options}
{html_radios}
{html_select_date}
{html_select_time}
{html_table}
{mailto}
{math}
{popup}
{popup_init}
{textformat}
9장. 설정 파일
10장. 디버깅 콘솔
III. 프로그래머를 위한 Smarty
11장. 상수
SMARTY_DIR
SMARTY_CORE_DIR
12장. Smarty 클래스 변수
$template_dir
$compile_dir
$config_dir
$plugins_dir
$debugging
$debug_tpl
$debugging_ctrl
$autoload_filters
$compile_check
$force_compile
$caching
$cache_dir
$cache_lifetime
$cache_handler_func
$cache_modified_check
$config_overwrite
$config_booleanize
$config_read_hidden
$config_fix_newlines
$default_template_handler_func
$php_handling
$security
$secure_dir
$security_settings
$trusted_dir
$left_delimiter
$right_delimiter
$compiler_class
$request_vars_order
$request_use_auto_globals
$error_reporting
$compile_id
$use_sub_dirs
$default_modifiers
$default_resource_type
13장. Smarty 클래스 메소드
append() -- 할당된 템플릿 배열에 요소를 추가합니다.
append_by_ref() -- 참조로서 값을 추가합니다.
assign() -- 템플릿에 값을 할당합니다.
assign_by_ref() -- 참조로서 값을 할당합니다.
clear_all_assign() -- 할당된 모든 템플릿 변수를 파기합니다.
clear_all_cache() -- 모든 템플릿의 캐시를 파기합니다.
clear_assign() -- 할당된 템플릿 변수의 값을 파기합니다.
clear_cache() -- 지정한 템플릿의 캐시를 파기합니다.
clear_compiled_tpl() -- 지정한 템플릿의 캐시를 파기합니다.
clear_config() -- 할당된 모든 설정 파일의 변수를 파기합니다.
config_load() -- 설정 파일 데이터를 로딩하여, 템플릿에 할당합니다.
display() -- 템플릿을 표시합니다.
fetch() -- 템플릿의 출력을 반환합니다.
get_config_vars() -- 로딩된 설정 파일 변수를 반환합니다.
get_registered_object() -- 등록된 오브젝트의 참조를 반환합니다.
get_template_vars() -- 할당된 변수의 값을 반환합니다.
is_cached() -- 템플릿이 유효한 캐시를 가질 경우에 TRUE를 반환합니다.
load_filter() -- 필터 플러그인을 로딩합니다.
register_block() -- 블록 함수 플러그인을 동적으로 등록합니다.
register_compiler_function() -- 컴파일러 함수 플러그인을 동적으로 등록합니다.
register_function() -- 템플릿 함수 플러그인을 동적으로 등록합니다.
register_modifier() -- 변수의 변경자 플러그인을 동적으로 등록합니다.
register_object() -- 템플릿 내에서 사용할 오브젝트를 등록합니다.
register_outputfilter() -- 출력 필터를 동적으로 등록합니다.
register_postfilter() -- 포스트 필터를 동적으로 등록합니다.
register_prefilter() -- 프리 필터를 동적으로 등록합니다.
register_resource() -- 리소스 플러그인을 동적으로 등록합니다.
trigger_error() -- 에러 메시지를 출력합니다.
template_exists() -- 지정한 템플릿이 존재하는지 아닌지를 체크합니다.
unregister_block() -- 동적으로 등록된 블록 함수 플러그인의 등록을 해제합니다.
unregister_compiler_function() -- 동적으로 등록된 컴파일러 함수의 등록을 해제합니다.
unregister_function -- 동적으로 등록된 템플릿 함수 플러그인의 등록을 해제합니다.
unregister_modifier() -- 동적으로 등록된 변수의 변경자 플러그인의 등록을 해제합니다.
unregister_object() -- 동적으로 등록된 오브젝트의 등록을 해제합니다.
unregister_outputfilter() -- 동적으로 등록된 출력 필터 플러그인의 등록을 해제합니다.
unregister_postfilter() -- 동적으로 등록된 포스트 필터 플러그인의 등록을 해제합니다.
unregister_prefilter() -- 동적으로 등록된 프리 필터 플러그인의 등록을 해제합니다.
unregister_resource() -- 동적으로 등록된 리소스 플러그인의 등록을 해제합니다.
14장. 캐시
캐시의 설정
페이지마다 복수의 캐시 파일
캐시의 그룹
캐시 가능한 플러그인의 출력의 제어
15장. 확장 기능
오브젝트
프리 필터
포스트 필터
출력 필터
캐시 핸들러 함수
템플릿 리소스
16장. 플러그인에 의한 Smarty의 확장
플러그인의 동작 원리
네이밍 규약
플러그인의 기술
템플릿 함수 플러그인
변경자 플러그인
블록 함수 플러그인
컴파일러 함수 플러그인
프리 필터/포스트 필터 플러그인
출력 필터 플러그인
리소스 플러그인
insert 플러그인
IV. 부록
17장. 트러블슈팅
Smarty/PHP 에러
18장. 팁 & 트릭
공백(비어있는) 변수의 취급
디폴트 변수의 취급
헤더 템플릿에 타이틀의 변수를 전달
날짜
WAP/WML
컴포넌트화된 템플릿
E-mail 주소를 알기 어렵게 하기
19장. 리소스
20장. 버그