본문 바로가기

프로그래밍/PHP49

[본문스크랩] [설치/설정] 리눅스php 로 MS-SQL 프로시져를 을 잡자 .. 이번에 새로운 프로젝트를 하게 되었습니다. 리눅스,php5.x,freetds 0.6x ->윈도우2000 MSSQL2000 입니다. freetds 을 통하여.. mysql_connect,mysql_select_db,mysql_close,mysql_query 등은 무난히 가능 했습니다.. 허나 여기서 잠깐.. 프로시져를 사용하기 위한 중요한 함수... mssql_execute 이 넘의 문제였답니다. mssql_execute(): stored procedure execution fail 이러한 에러가 발생하며 작업이 진행되지 않았습니다.. 머.. 문서가 많은 것도 아니고, 원인도 알수 없었고... 그 문제를 php스쿨의 어느분한테서 힌트를 얻었고... freetds.conf 파일에서 # A typical Mi.. 2010. 4. 23.
[문법] PCRE 정규표현식 예제로 개념잡기.v3 PCRE 정규표현식 예제로 개념잡기. http://kr2.php.net/manual/en/ref.pcre.php http://kr2.php.net/manual/en/reference.pcre.pattern.syntax.php http://kr2.php.net/manual/en/reference.pcre.pattern.modifiers.php 위 링크가 이해가 안되어도 스크롤을 천천히 내려가며 한번 읽어주고 본문을 읽어주세요. 본문에 없는건 묻지 마세요. 모릅니다. pattern syntax1. [0-9] 는 \d 로 표현하는것이 편리하다. 글 수정시에 글번호를 체크해 보자. 2. ' '(공백)은 알아보기 쉽도록 \s 로 써주면 좋다. 3. \(백슬래시) 를 표현할때 버그인지 \\ 로 하면 안된다. \\\.. 2010. 4. 23.
[기타] cron을 사용하지않고 화일 캐쉬 DB 억세스가 많은 인덱스화일을 html로 저장했다가 보여주는 방식의 인덱스화일 캐쉬는 팁텍에서도 여러번 거론 되었던 방법이고 스쿨에서도 이미 사용하고 있는 방법입니다만... 비록 뒷북일지라도... -------------------------------------------------------------------------------------------------------- function make_cache($file,$script,$duration=60) { $limit=time()-$duration*60; if(!file_exists($file) || filemtime($file) 페이지를 몇개로 분할한 다음 각부분을 별도로 캐쉬할 수 있습니다. 시간은 분단위입니다. 하지만 스쿨처럼 글을 .. 2010. 4. 23.
아이폰 유저에이전트 (USER_AGENT) 아이폰 3GS에서 사용하는 유저에이젼트(USER-AGENT)는 다음과 같습니다. Mozilla/5.0 (iPhone ; U; CPU iPhone OS 3_1_2 like Mac OS X;ko-kr) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7D11 Safari/528.16 유 저에이젼트에 보면 Ko-Kr 라고 들어가 있는데 한국에서 유통되는 아이폰이라서 그런듯하네요. 미국등 다른 나라에서는 다르게 사용되겠군요. (참고로 USER_AGENT는 소프트웨어에 fix되어 있는거라서 사용자가 바꾸는것이 쉽지 않습니다. PC의 경우 클라이언트 프록시(Paros등)및 로칼 프록시로 USER_AGENT를 조작하는 것이 가능합니다.) 인터넷 익스플로러 8.0.. 2010. 4. 16.
PHP 컨스트럭터와 디스트럭터 컨스트럭터와 디스트럭터 (Constructors and Destructors) Constructor void __construct ([ mixed $args [, $... ]] ) PHP 5 에서는 개발자가 클래스의 컨스트럭터 메소드를 선언할 수 있다. 컨스트럭터메소드를 가진 클래스는 새로운 오브젝트가 생성될때마다 이 메소드를 호출한다. 이 호출에 의해서 오브젝트를 사용하기전에 필요한 초기화를 행할 수 있다. 주의: 자식 클래스가 컨스트럭터를 가지고 있는 경우 부모클래스의 컨스트럭터가 암묵적으로 호출되지 않는다. 부모클래스의 컨스트럭터를 실행하기위해서는 자식 클래스내에서 parent::__construct() 를 호출하여야 한다. 새롭게 통합된 컨스트럭터 사용 예 하위 호환성을 유지하기 위하여 PHP 5.. 2010. 3. 17.
소켓연결이나 fopen등을 이용할때의 timeout 처리 회사일중에 소켓을 이용해서 다른 웹서비스의 xml데이터를 받아서 처리하는 작업이 있었다. 별 문제 없이 처리했으나 서비스를 하던중 문제가 발생했다. xml을 제공하는 웹서비스의 서버 상태가 불안해서 처리 작업이 진행이 안되고 멈춰있는 경우가 종종 발생한 것이다. 소켓 연결 실패 라던가 무한 루프 등의 예외 처리는 해 놓은 상태였지만 소켓 연결이 성공한 상황에서 데이터를 받지 못해서 처리작업이 신호대기 상태로 멈춰있는 경우였다. 방법이 없을까 고민하던중 php.net에서 다음과 같은 함수를 찾았다. stream_set_timeout와 socket_set_timeout이다. 다른 함수처럼 보이지만 결과는 같다. stream_set_timeout은 데이터 스트림 수신 대기시간의 타임 아웃을 설정하는것이고 so.. 2010. 1. 22.
PHP 작업시 도움이 되는 함수 PHP로 작업을 하다 보면 여기저기서 인클루드하는 경우도 있고 함수 정의 및 클래스 선언 하는 경우도 있고 해서 일일이 찾아보기 어려울 경우가 있다 그럴때 다음 함수를 사용하면 유용하다. get_included_files() : include나 require한 파일명의 배열을 모두 반환 get_defined_functions() : 유저가 선언한 함수 목록을 배열로 모두 반환 get_declared_classes() : 유저가 선언한 클래스목록을 배열로 모두 반환 2010. 1. 20.
PHP 이미지 변환 BMP to JPG Convert BMP to JPG The PHP GD library contains many wonderful tools for creating images and converting them. Sadly the ability to convert BMP images to JPG is not one of them. Here is a function that I find a little slow, but works well and has suffered several incarnations. If you have a better script, or a modification to for this one, just let us know. 번역 PHP의 GD library는 이미지 변환과 생성과 관련된 좋은 기.. 2009. 12. 9.
php 정규식 문자열 체크 출처 : http://blog.shypepe.com/150021787717 2009. 10. 23.
Smarty에서 javascript 처리 하기 PHP Smarty 메뉴얼을 보면 자바스크립트를 처리하기위해 {literal}{/literal} 구문과 {rdelim}{ldelim}이 준비되어 있다. 그냥 자바스크립트만 있는경우, 자바스크립트안에 스마티 변수를 사용하는 경우 나누어서 테스트해 봤다. 이렇게는 별로 사용되지 않을거지만 필요한 경우에는 유용한듯 하다. [1.php] [1.html] Template Test Page 위의 html의 자바스크립트 부분을 보면 {literal}{/literal} 구문과 {rdelim}{ldelim} 구문이 쓰여진것을 확인할수 있을것이다. display_str()함수안에 스마티 변수를 사용했는데 {literal}{/literal}로 묶었을경우나 {literal}{rdelim}{ldelim}{/literal}로 묶었을경우.. 2009. 10. 21.
함수 존재 확인, 메소드 존재 확인 작업을 하다보면 간혹 이 함수가 존재하는지 혹은 클래스 내에 이 메소드가 존재하는지 로직상에서 확인해야 할 경우가 발생한다 그럴때에는 다음과 같이 한다. 함수가 존재하는지 확인하기 위해서는 function in_there(){ ... } if(function_exists('in_there')) //yes else //no 클래스의 경우 메소드가 존재하는지 확인하기 위해서는 class test{ function t1(){ } function t2(){ echo method_exists($this,'t1'); } } 2009. 10. 1.
.htaccess 파일 관련 이하.. xoopscube korean 사이트에.. 게재한..글입니다만.. 동일하게..적용되니.. 참고하세요! ---------------------------------- 제가..위에서..언급한..것처럼.. register_globals 을.. off 로..설정해.. 사용하는....것이.. 근본적..해결책이니... 이번..패치를...계기로.. register_globals 을 off 로.. 설정하시기..바랍니다. 음.. 아파치서버를..사용하시는 경우라면.. 루트디렉토리에.. .htaccess 파일을..다음과 같이..작성해..업해두시면.. php_flag register_globals Off 전체적..설정변경없이도.. register_globals off 를..구현하실..수 있으니.. php.ini 의 .. 2009. 9. 25.
XML파싱때 주의할점 회사일로 XML파싱관련 작업을 처리하던 중에 문제가 생겼다. 바이너리 코드가 XML데이터에 포함될경우 파싱이 중간에 중단되는 현상이 발생한 것이다. 해결책이 없는지 이리저리 알아보던중 다음과 같은 내용을 발견했다. xml_parse() crashes when xml file contains chars \x00 - \x1f, so be careful! I solve this problem simple: 대충 직역해 보면 xml_parse를 이용해서 파싱할 경우에 \x00에서 \x1f까지의 무자코드를 가진 글자를 만나게 되면 충돌이 나니 주의해라 정되 되겠다. 글을 남긴 사람은 해결책으로 해당 캐릭터를 변경시켰다가, 다시 되돌리는 방법을 취하고 있다. 하지만 멀티바이트 문자에서는 동작을 안하니 일본어나 한국.. 2009. 8. 19.
xml 파서 php5에서는 xml lib를 제공하지만 4.x는 제공하지 않는걸로 알고있습니다. 결국 xml파서를 만들어 사용해야는데요. 고맙게도criticaldevelopment.net 에서 GNU라이센스를 사용하여 배포하고있습니다. 참고문서 : http://www.criticaldevelopment.net/xml/doc.php 파일다운 : parser_php4.php parser_php5.php 1. 속성 tagData : 태그값 tagAttrs : 태그 속성값 tagParents : This member contains the number of parents this object has before the document root. This number, currently, is only used to deter.. 2009. 6. 15.
if문의 새로운(?) 문법. 난 항상 if문을 코딩할 땐, if ($a == "a") echo "test"; else echo "test2"; 라던가, if ($a == "a") { echo "test"; } else { echo "test2"; } 로 쓰곤 했다. 그러나 얼마전, 한줄로 여러 명령을 쓰고 싶은데 { } 를 안쓰고 어떻게 방법이 없을까 하고 찾아보다가, 이렇게 새로운 문법을 발견했다. if ($a == "a"): echo "test"; exit; else: echo "test2"; echo "test3"; endif; echo "EOF"; 이렇게 { } 가 없이 간단한 if문을 작성할땐 이런 문법이 쓰일 수 있다. {}이 없고 : 과 endif; 가 생겼다. 이 문법은 이럴때 편하게 쓰일 수 있다. if ($a ==.. 2009. 6. 3.
플로이드 알고리즘 : 최단거리검색 ** 플로이드 알고리즘 : 최단거리검색 ** 출처 : http://rhio.tistory.com/56 2009. 5. 26.
다익스트라 알고리즘 : 최단거리 검색 다익스트라 알고리즘 : 최단거리 검색 지하철 역간 최단 거리 검색 프로그램을 만들어 보려고 검색하다보니 유명한 알고리즘 중 다익스트라 알고리즘이라는 걸 알게 되었습니다. 소스는 델파이와 C로 된거 밖에 없어서, 해당 소스를 PHP 버전으로 바꿔봤습니다. 참고하세요. 출처 : http://rhio.tistory.com/57 2009. 5. 26.
PHP 소켓 POST로.. XML 값 $fileHost = "URL";$filePath = "나머지주소";$port = 포트번호;$param = "a=11&b=22&c=33"; //넘길값$len = strlen($param); //길이 $fp = fsockopen ($fileHost, $port, $errno, $errstr, 30); if ($fp) { fputs($fp,"POST $filePath HTTP/1.1\n"); fputs($fp,"Host: $fileHost\n"); fputs($fp,"User-Agent: ".$_SERVER[HTTP_USER_AGENT]."\n"); fputs($fp,"Content-type: application/x-www-form-urlencoded\n"); fputs($fp,"Content-length.. 2009. 4. 14.
[정보] HTTP/1.1 METHOD 의 종류와 아파치에서의 제어 RFC 2068 문서를 보던중 호기심에 HTTP/1.1 METHOD중 DELETE method 를 이용해보려고 telnet 으로 접속시도해 보았다. ]$ telnet localhost 80 DELETE /test.gif HTTP/1.1 Host: www.domain.com Content-Length: 0 그러나 해당 화일은 삭제 되지 않았다. 물론 test.jpg 의 권한은 apache 가 읽고쓸수 있는 권한이었다. 그래서 http method 를 찾아보던중... 생각보다 많은 method들이 있었다. 아래의 URL은 http method 종류를 확인할수 있으며 실시간으로 특정 도메인에 method별로 스켄을 한다. http://www.askapache.com/online-tools/request-met.. 2008. 10. 16.
[펌]PHP socket을 이용한 파일 전송 송신 function socketTrans($host,$sendPort,$receivePath,$file_name,$tfile){ $port = $sendPort; // 원격 서버 포트 $path = $receivePath; // 화일을 받아서 처리해주는 화일명 /reomote_url srand((double)microtime()*1000000); $boundary = "---------------------------".substr(md5(rand(0,32000)),0,10); // Build the header $header = "POST $path HTTP/1.0\r\n"; $header .= "Host: $host\r\n"; $header .= "Content-type: multipart/form.. 2008. 10. 16.
파일 전송 인터페이스 만들기 출처 : http://pgmer.com/pooh/30 파일 전송 인터페이스 만들기 FTP는 아주 오래된 프로토콜이지만 아직도 많은 프로젝트에서 사용되는 범용적인 프로토콜이다. 애플리케이션이 현재처럼 개발되지 않았을 시에는 콘솔에서 일일이 로그인하는 과정과 검색 및 업/다운을 진행했지만 요즘에는 그런 명령어조차 기억할 필요없을 정도로 편한 인터페이스가 많이 개발되었다. FTP는 프로젝트에서 데이터의 이중 백업이나 파일의 이동을 필요로 하는 기능을 구현하는데 유용하다. 가장 기본적인 FTP 프로토콜 아키텍처는 로그인→디렉토리찾기→파일찾기→업로드(다운로드)→로그아웃 과정이다. PHP에서는 간단하게 몇 줄만으로 이 과정을 프로그래밍할 수 있다. 다음의 코드를 보자. 이처럼 간단히 5줄의 코딩으로 파일을 가져오는.. 2008. 10. 16.
PHP 코드를 최적화하는 40가지 팁 1. If a method can be static, declare it static. Speed improvement is by a factor of 4. 메쏘드가 static이 될 수 있다면 static으로 선언하라. 4배 빨라진다. 2. echo is faster than print. echo가 print보다 빠르다. 3. Use echo’s multiple parameters instead of string concatenation. 문자열을 이어붙이지 말고, echo를 이용하여 여러 개의 파라미터를 적어라. 4. Set the maxvalue for your for-loops before and not in the loop. for 루프을 위핸 최대값(탈출조건)을 루프 안에서가 아니고 루프 시작.. 2008. 8. 21.
[함수] 본문에서 주민번호 패턴 찾아내기... 출처 : PHPSCHOOL 게시글 본문 내용중 주민번호 검색 해 냅니다. 주민번호를 * 로 변환 하도록 해도 되겠네요... 나름 머리를 쓰면서 만들다가.. 요즘은 하드웨어를 이용해서 변환시킨다길래.... 한번 써보지도 못하고...쓸모없는 소스가 되어버렸네요... 여튼, 그래도.. 꼭 필요하신 분이 계실거 같아.. 공개합니다. 주민번호 체크(function RegiNum)하는 것은 phpschool.com에 어느분께서 올리신걸 이용했습니다. 죄송합니다만, 어느분이 올리셨는지 까먹었네요..^^; 검색해서 찾아보세용.. 2008. 8. 12.
PHP에서 유동변수(?) 사용하기 PHP로 프로그래밍을 하다 보면 간혹 유동 변수를 사용할 일이 생긴다. 유동변수라는 말은 그냥 내가 지어서 부르는 말인데 대략적인 개념을 설명하자면 다음과 같다. $a1, $a2~~~, $a10 위와같은 변수가 존재한다고 할때 루프 문을 돌려서 처리하면 좀더 편해진다. 이때 $a를 제외한 숫자 부분이 변하게 되는데 이것을 유동 변수라고 부른다. 기본적인 문법은 다음과 같다. ${'변수명'.$.'변수명'} 위와같이 처리하면 된다. 2008. 7. 30.