MyAlbum   Pet
DirectX   openGL   Java   C/C++   STL   C#   Python   Window   ActiveX   SE & Refactoring   Game   Unicode   googleDesktop   Network   Database   Web   php   asp   asp.net   Library   QT   wxWidget   Something to read  
ToDo
zelon's WebAlbum
Google Tools
Google Naver map
ToRearrange
OpenOffice.org
Eclipse
Check W3 validator
php
e i R f
Anonymous

Contents

1 들어가기
2 인터넷과 PHP
2.1 인터넷
2.2 CGI, 웹 프로그래밍
2.3 Perl, ASP
2.4 PHP
2.4.1 PHP 역사
2.4.2 PHP 라이센스
2.4.3 PHP 언어의 특징
2.5 PHP4
3 Apache 웹서버
3.1 Apache 웹서버
3.2 Apache 웹서버의 설치
3.3 Apache http.conf
4 PHP Basics
4.1 PHP 프로그램 작성하기
4.2 변수
4.3 상수
4.4 배열
4.5 배열관련 함수들
4.6 연산자
4.7 출력
5 조건문, 반복문
5.1 조건문 if
5.2 조건문 switch
5.3 반복문 while
5.4 반복문 do.. while
5.5 반복문 for
5.6 반복문 break
5.7 반복문 continue
6 함수
7 문자열, 숫자, 난수, 시간, 암호화
7.1 문자열
7.2 숫자
7.3 난수
8 MySql 과 연동
8.1 쿼리 query
8.1.1 query(쿼리)가 뭐죠?
8.1.2 쿼리 요청하는 방식
8.1.3 쿼리에 적절히 반응하기
9 Reference
10 Link
11 eclipse 에서 php 개발하기

1 들어가기 #

무료이면서도 강력한 기능을 제공하는 웹 프로그래밍 언어, PHP! 같이 배워봅시다~!


이 사이트의 내용은 다른 언어를 공부한 사람(특히 C++)을 위주로 만들고 있습니다. 초보자님들은 약간의 선행 공부가 필요할지도 모릅니다. ^^; 죄송~
제가 PHP를 공부하면서 정보를 공유하기 위해서 홈페이지를 만들고 있습니다. 여기 있는 글들은 제가 PHP를 활용하면서 필요한 부분들을 배우면서 만들고 있습니다. 앞으로 다른 계속 공부를 하게 되면 그 부분을 여기에 첨가를 해서 활용 위주의 사이트가 될 수 있도록 노력하겠습니다.^^.


여기의 PHP 페이지들은 2000년도 가을에, 99학번 동기인 황교국과의 Cross Study 때 만들어졌습니다. Thanks to Purple!


Since 2000. 10. 15 - ZELON with Purple!

2 인터넷과 PHP #

2.1 인터넷 #

Inter + Network. 네트워크의 결합으로 이루어진 단어. TCP/IP이란 프로토콜을 바탕으로 연결되어있다.

프로토콜이란 통신에서 쓰이는 일종의 언어로써 같은 언어를 쓰는 사람끼리 대화가 가능하다. 즉, 같은 프로토콜을 쓰는 컴퓨터면 OS(리눅스인지, 윈도우인지)에 상관없이 통신이 가능하다.

IP는 32비트로 이루어진 인터넷상에서의 주소이다. 이 주소는 전 세계적으로 유일하며, 기억의 편의를 위해서 다음과 같이 여러단계의 형태가 있다. 먼저 32자리를 8자리씩 끊어서 10진수로 표현하며 쉼표(,)로써 구분짓는다.(예]155.145.161.1) 그리고 사람들이 이런 숫자를 쉽게 외울 수 없으므로 Domain Name 이란 것을 사용한다. DNS(Domain Name Server)가 각각의 IP에 해당하는 단어를 저장하고 있다가 누군가가 Domain Name을 전달해주면 해당하는 IP를 돌려준다. 그래서 하나의 Domain Name에는 단 하나의 IP를 가지고 있다.

클라이언트/서버 환경이란 예전에 쓰이던 [ 메인 프레임 ] 환경을 대체하기 위해 만들어진 환경이다. 예전의 메인 프레임은 서버 하나에 터미널을 연결해서 쓰던 환경이다. 하지만 이럴 경우 서버에 부하가 너무 많이 걸린다는 단점이 있다. 이것을 클라이언트/서버 환경으로 바뀌면서, 서버가 하던 일을 일부 클라이언트가 가져왔다. 그래서 자신이 훨씬 더 잘 할 수 있는 일을 각각 분담했다. 작업 환경을 꾸민다던지 하는 일은 클라이언트가, 자료를 처리하고 분석, 저장하는 일등은 서버가 맡아서 한다.

2.2 CGI, 웹 프로그래밍 #


인터넷에서 가장인기있는 서비스인 WWW는 HTML 구성된다. 하지만 HTML은 정적으로 항상 같은 정보를 준다는 단점이 있다. 흔히 쓰이는 게시판조차도 만들지 못하는 것이다. 그래서 나온 것이 CGI(Common Gatewat Interface)이다. 흔지 [ 시지아이 ] 라고 불린다.^^. HTML과 웹서버의 프로그래밍 언어로 만든 프로그램과 서로 자료를 나눌 수 있는 방법이다. 이 때 이 프로그램을 웹프로그램이라하고, 이 프로그램을 제작, 프로그래밍하는 것을 웹프로그래밍이라고 한다.

2.3 Perl, ASP #


  • Perl : 가장 널리 쓰였었던 언어. 쌓인 자료가 많음. 링크는 왼쪽의 링크 페이지 참고~!
  • ASP : MS에서 추진하는 웹프로그래밍언어. .NET의 중요분야 중 하나. PHP와 더불어 많이 사용되어지는 웹 스크립트 프로그래밍언어.

2.4 PHP #


2.4.1 PHP 역사 #

1994년 Rasmus Lerdorf라는 개인이 자신의 홈페이지에 쓰기위해서 개발. 명칭이 Personal Home Page Tolls였다. 그 후 Personal Home Page Construction Kit로 불려지게 된다. Netcraft라는 곳(Link페이지 참조)에서 조사한 바에 따르면 2000년 2월 현재 1,500,000개의 사이트에서 PHP를 쓰고 있는 것으로 조사됨. PHP3로 오면서 개인의 결과물에서 팀의 결과물이됨. 2000년 5월 22일 PHP4발표

2.4.2 PHP 라이센스 #

GNU General Public License 정책에 따라서 무료~~.. 다만 어떠한 보장을 하지는 않음. 링크 페이지에 GNU 선언문 번역본 링크가 있습니다.

2.4.3 PHP 언어의 특징 #

  • PHP는 서버측에서 실행되는 스크립트이다. 이 말은 스크립트가 서버측에서 실행된 후에 결과를 돌려준다는 것이다. 즉, 클라이언트에서는 전혀 스크립트가 실행되는지 알 수 없고, 받아보는 결과물은 단지 HTML일 뿐이다. 그러므로 클라이언트의 브라우저에 상관없이 프로그래밍할 수 있다. 클라이언트의 브라우저가 서버에 PHP로 이루어진 파일을 요청하면 PHP파일은 바로 클라이언트로 날아가는게 아니라, PHP 실행해석엔진에 의해서 해석된 파일을 보내준다. 그 해석된 파일은 당연히 순수한 HTML로 구성된 파일이다. 클라이언트는 결국 이렇게 해석된 파일을 받아보는 것이다. 그러므로 원래의 파일이 보호되는 역할도 된다.
  • Perl 및 C와 비슷해서 배우기 쉽다.
  • Database와 연동이 쉽다. 간단한 함수를 쓰면 연동이 쉽게 된다.
  • 멀티 플랫폼 언어이다. 리눅스, 유닉스는 물론 윈도우용 PHP도 있다.
  • 모듈을 이용한 다양한 작업이 가능하다. 그래픽 이미지를 쉽게 만들 수 있는 등.. 무궁무진하다.

2.5 PHP4 #

ZEND라는 엔진을 사용함으로써 엄청난 속도의 향상을 가져왔다. 거기다가 Zend Optimizer를 쓰면 더욱 속도를 높일 수 있다. 그리고 세션 기능이 추가되었다. PHP3와의 100%에 가까운 호환성을 보인다. 그리고 유닉스상에서 쉽게 동적 PHP모듈을 컴파일하여 사용할 수 있게되었다.

3 Apache 웹서버 #


3.1 Apache 웹서버 #


웹서버란 웹브라우저에서 요구하는 파일, 이미지, 동영상등을 제공하는 서버입니다. 웹브라우저와 같은 클라이언트가 워하는 웹서비스를 제공해 주는 것이 바로 웹서버입니다.

Apache는 A Patch Server에서 나온 말로, 이전에 많이 쓰이던 NCSA httpd 웹서버를 수정하여 나온 서버입니다. 현재 Apache는 전 세계적으로 많이 사용되고 있으며 우수함과 강력함을 널리 인정받고 잇는 웹서버입니다. 정식 명칭은 Apache HTTP Server이나 실제로는 Apache Webserver로 많이 불립니다. Apache는 무료입니다. 그렇다고 하자가 있는 제품은 아닙니다. 자료 공유와 개발에 대한 기쁨으로 보상받고 있답니다..^^

Apache 웹서버는 현재 약 60%의 서버시장을 점유하고있다. 그리고 MS의 IIS가 약 20%로 다음 주자자리를 지키고 있다.

레드햇 기반의 Apache 설치시 기본 폴더.

/usr/sbin/httpd실행파일
/ets/mine.types기본 MIME 형식
/etc/httpd/logs에러, 사용 기록 등을 남기는 디렉토리
/etc/httpd/modules동적 모듈들이 위치하는 디렉토리
/etc/httpd/conf/httpd.conf설정파일
/etc/httpd/conf/magicmime_magic 모듈이 사용하는 MIME형식
/etc/httpd/log는 실제로는 /var/log/httpd에 위치!
/etc/httpd/logs/access_log홈페이지에 접속한 기록을 저장하는 파일입니다. 나중에 접속자 분석, 트래픽 분석에 유용하게 사용됩니다.
/etc/httpd/logs/error_log서버에서 일어난 에러들을 저장하는 파일입니다. CGI 프로그램에서의 에러, HTML에서의 잘못된 경로 등이 모두 기록되므로, 에러 수정시 참고하면 쉽게 오류 원인을 알 수 있습니다.

Apache 1.3이 1.2와 다른 점은 동적 모듈 기능(Dynamic Shared Object)을 지원한다는 것입니다. 이를 지원함으로써 확장성을 향상시키고 메모리 사용 효율을 늘렸는데, 이 기능은 윈도우에서는 제공하지 못합니다.

1.3 버젼에서 윈도우를 지원합니다.

대부분의 소소를 모듈 방식으로 재구성하면서 성능이 향상되었습니다.

기존의 httpd.conf, srm.conf, access.conf로 나누어져있던 파일이 httpd.conf 하나로 합쳐졌습니다.

3.2 Apache 웹서버의 설치 #


root 유저로 다음 상황에 맞게 설치합니다. - Install시 : #rpm -ivh apache-1.3.12-2.i386.rpm #rpm -ivh apache-devel-1.3.12-2.i386.rpm

- Upgrade시 :
#rpm -Uvh apache-1.3.12-2.i386.rpm #rpm -Uvh apache-devel-1.3.12-2.i386.rpm

- Apache 시작
#httpd (혹은) httpd start

- Apache 재시작
#httpd restart

- Apache 종료
#httpd stop

FAQ는 링크 메뉴에서~^^;


3.3 Apache http.conf #


ServerType standaloneApache의 실행을 서비스 요청에 반응하여 독자적으로 실행되게 할 지(standalone), inetd라는 별도 관리 데몬의 명령에 의해 서비스되어질 것인지를 결정합니다. 보안상으로는 inetd가 좋지만 속도가 떨어집니다. inetd방식으로 사용하는 경우는 거의 없습니다.
Port 80기본적으로 http(WWW)의 포트는 80입니다. 다른 포트를 설정한다면 접속할때도 그 포트로 접속해야합니다.
MinSpareServers 9웹서버 기능을 할 프로세스를 속도를 위해서 미리 만들어놓고 대기하는데, 그 프로세스의 최소대기수와 최대수, 그리고 웹서버 시작시 쓸 프로세스 숫자입니다. 프로세스 상황을 알아보려면 #ps ax 해보세요~
MaxSpareServers 20웹서버 기능을 할 프로세스를 속도를 위해서 미리 만들어놓고 대기하는데, 그 프로세스의 최소대기수와 최대수, 그리고 웹서버 시작시 쓸 프로세스 숫자입니다. 프로세스 상황을 알아보려면 #ps ax 해보세요~
StartServers 10웹서버 기능을 할 프로세스를 속도를 위해서 미리 만들어놓고 대기하는데, 그 프로세스의 최소대기수와 최대수, 그리고 웹서버 시작시 쓸 프로세스 숫자입니다. 프로세스 상황을 알아보려면 #ps ax 해보세요~
MaxClients 150동시 최대 프로세스 수 256개가 한계이고 넘어서는 수는 새로 컴파일해야한다.
MaxRequestsPerChild 100한 프로세스가 몇 번의 서비스를 하고 소멸된 것인지를 정하는 값이다. 0을 적으면 한 번 생성한 프로세스는 서비스를 계속하여도 소멸되지 않는다.
#BindAddress *웹 호스팅을 하거나 한 개의 도메인이 아니라 여러 개의 도메인을 사용한다면 위의 주석을 제거해야한다.
User nobody서버를 구동할 User와 Gruop입니다. nobody인지 확인하고 사용!
Group nobody서버를 구동할 User와 Gruop입니다. nobody인지 확인하고 사용!
ServerAdmin root@localhost관리자의 주로 쓰는 주소를 쓰면 되겠죠?
#ServerName minky.msql.co.krApache가 한개의 도메인을 서비스할 때는 그 도메인의 이름을 적고 주석(#)을 제거하면 됩니다. 여러 개의 도메인을 서비스하는 경우에는 대표 도메인 네임을~
DecumentRoot "/home/httpd/html"메인 홈페이지의 위치
UserDir public_html다른 유저들의 기본 홈페이지 디렉토리. 요즘은 "WWW"을 많이 쓰네요.
DirectoryIndex index.html index.shtml index.cgi디렉토리까지만 인덱스했을 때 자동으로 표시될 파일명 순서.
#CustomLog logs/referer-log referlogs/referer-log, agent_log, access_log 등은 파일명이다. 각각 [ 홈페이지 접근시 어디를 통해서 들어왔는지를 기록 ] , 페이지 접근에 사용한 웹브라우저와 사용자 정보가 기록 , [ 모든 것이 합쳐진 access_log 파일 ]이다.
#CustomLog logs/agent_log agentlogs/referer-log, agent_log, access_log 등은 파일명이다. 각각 [ 홈페이지 접근시 어디를 통해서 들어왔는지를 기록 ] , 페이지 접근에 사용한 웹브라우저와 사용자 정보가 기록 , [ 모든 것이 합쳐진 access_log 파일 ]이다.
#CustomLog logs/access_log combinedlogs/referer-log, agent_log, access_log 등은 파일명이다. 각각 [ 홈페이지 접근시 어디를 통해서 들어왔는지를 기록 ] , 페이지 접근에 사용한 웹브라우저와 사용자 정보가 기록 , [ 모든 것이 합쳐진 access_log 파일 ]이다.


4 PHP Basics #


4.1 PHP 프로그램 작성하기 #


PHP 부분은 <php, ?> 혹은 <? , ?> 로 묶여있어야 한다.

<?php
   ..................
   PHP 명령어들
   ..................
?>

주석은 프로그램 실행에는 전혀 영향이 없고, 소스를 보는 사람을 위해서 만드는 것이다. 주석은 C++ 스타일과 같은 것을 사용한다. 한줄 주석일 경우 //를 쓴다. // 이후의 모든 명령들은 주석처리. 여러 줄이나, 부분일 경우에는 /*, */를 쓴다. /*와 */ 사이의 모든 명령들은 주석처리가 된다.
<?php
   ..................
   PHP 명령어들
   // 주석문장들
   /* 이 부분은 실행되지 않습니다.
   여기도 실행되지 않습니다.*/
   이 문장은 실행됩니다.. 결국 에러를 일으키겠지만..--;
   ..................
?>

4.2 변수 #


PHP에서는 변수를 특별한 형(int, double)으로 지정하지 않아도 알아서 그 형태를 결정한다.
   <?
       $a = 1234;
       $b = "zelon";
   >?
위에서 a라는 변수에는 1234를 넣어서 a는 정수를 넣는 변수가 됩니다. b는 물론 문자열을 넣을 수 있는 변수가 되겠죠. 변수의 이름(여기서는 a, b가 변수의 이름입니다. 보통 '변수명'이라고 부르죠)은 숫자와 영문자 그리고 밑줄('_')로 구성하세요. 그리고 밑줄과 숫자는 맨앞에 올 수 없습니다. 규칙입니다~!!! 그리고 변수명은 소문자와 대문자를 구분합니다. 그러므로 Name과 name, NAME은 다른 변수라는 거죠.

문자열을 표현할 때는 약간의 규칙이 있습니다. C++과 비슷한 규칙입니다.
\n 커서를 다음 라인 처음으로 넘깁니다.
\r 엔터입니다.
\t 탭키입니다.
\\ \를 출력할 때 쓰입니다.
\$ $를 출력할 때 쓰입니다.
" "를 출력할 때 쓰입니다.

문자열을 가지고 있는 변수앞에 $를 붙이면 그 문자열이 변수명이 되는 변수가 만들어집니다. 그러니까 $a = "abc" 인 변수가 있다면 $$a = "test"라고 하면 결과적으로 $abc = "test" 인 셈이 됩니다. 좀 헛갈리죠? 되짚어가면서 잘 보면 됩니다..^^

4.3 상수 #


상수란 정해져 있는 값이며, 변수와 상반되는 개념입니다. MAX_LENGH라는 상수가 있다면 그 상수는 늘 어떤 값(100)을 가지고 있죠. 그리고 PHP에서는 이미 정해놓은 변수가 있습니다. PHP_VERSION이라든지 PHP_OS라든지 말이죠. 그리고 참을 뜻하는 TRUE와 FALSE가 있습니다. 다음과 같은 것을 실행해봅시다.
<?
 // 상수 지정 Test
 define("zelon", "aaa@aaaa.com");
 $a = zelon;
 echo($a);
?>

4.4 배열 #


배열
$a[1] = "zelon"; 이렇게 쓰면 일차원 배열 a의 두번째 칸에 "zelon"을 넣습니다.
$b[0][0] = "zelon"; 이렇게 쓰면 이차원 배열 b의 첫번째, 첫번째 칸에 "zelon"을 넣습니다. $c = array("id", "name", "address"); 이렇게 쓰면 세칸짜리 배열 c에 각각 id, name, address를 넣습니다.


연관배열 - 하나의 키와 값이 매치를 이루고 있는 배열
$applecolor = "red"; $appletaste = "sweet"; $b = array("color" => "red", "taste" => "brilliant"); echo($applecolor); 따옴표(", ")는 생략가능합니다.

4.5 배열관련 함수들 #


sizeof(배열명)배열이 몇 개의 구성요소로 되어있는지 반환
array_push(배열이름, 추가요소, 추가요소....)배열의 끝에 계속 추가합니다.
array_unshift(배열이름, 추가요소, 추가요소....)배열의 앞에 추가합니다.
array_pop(배열명)제일 마지막 요소를 삭제. 그 요소를 반환
array_shift(배열명)제일 앞의 요소를 삭제. 그 요소를 반환
array_slice(뽑아낼 배열, 위치, 길이)배열의 일부만을 뽑아내어서 반환
array_splice(배열 이름, 위치, 길이, 바꿀 내용)배열의 일부를 지우거나, 바꾸기
array_keys(배열 이름)연관 배열의 키 값을 뽑아서 배열로 반환
array_values(배열)연관 배열의 값들을 배열로 반환
array_merge(배열1, 배열2, ..)배열을 합칩니다.
asort(배열)연관 배열을 정렬하고 인덱스를 유지
ksort(배열)연관 배열을 키로 역순 정렬

4.6 연산자 #


C++ 에서와 같이 +, -, /, * 가 사용됩니다.

4.7 출력 #


print("출력할 내용");
내용을 출력합니다.

printf(찍을 포맷, 인자);
C의 printf와 같습니다.

echo (인자1, 인자2);

가장 많이 쓰입니다. print와 같습니다.


TIP - 많은 내용을 변수로 담기.
 $a = >>> TEXT
 <html>
 <body>
 Hi~
 </body>
 </html>
 TEXT;
 echo $a;

5 조건문, 반복문 #


5.1 조건문 if #


[ if (조건) 조건이 참일때 실행될 명령; ] [ if (조건) { 명령들....... } ] [ if (조건) { ... } else { ... } ]

5.2 조건문 switch #




switch (조건) {
case 해당조건1:
조건1의 상황 break;

case 해당조건2:
조건2의 상황 break;

default:
기본적인 실행문 [ break; ]
}

5.3 반복문 while #


[ while(조건) { 조건이 참일 동안에 실행될 명령들... } ]

5.4 반복문 do.. while #


[ do { 조건이 참일 동안 실행되는 명령들... } while(조건) ] 앞의 while과는 다르게 do안의 명령들이 꼭 한번은 실행된다.

5.5 반복문 for #


[ for ( 문장1; 문장2; 문장3; ) { 조건이 참일 동안 실행되는 명령... } ]

문장1 : for가 처음실행될때 딱 한번 실행되는 명령 문장2 : 조건식 문장3 : for가 반복될 때마다 실행

5.6 반복문 break #


[ break; ] 반복문을 완전히 빠져나갈 때 씀.

5.7 반복문 continue #


[ continue; ] 반복문의 처음으로 바로 가버림.

6 함수 #

함수는 다음과 같은 형식으로 선언할 수 있습니다.

function 함수 이름($arg1, $args2....) { 프로그램 코드들.... }

위의 '프로그램 코드들'이라는 곳에서는 다른 함수를 사용할 수 있고, PHP에서 기본 제공되는 모든 함수를 사용할 수 있습니다. 그리고 '함수 이름'은 대소문자를 가리지 않습니다. Sum, sum, SUM은 모두 같은 함수로 취급됩니다.

return을 쓰면 함수의 결과를 돌려줄 수 있습니다. C++ 과 같이 계산식을 돌려 줄 수도 있습니다. 그리고 배열을 돌려줄 경우 많은 인자를 돌려줄 수 있습니다.

함수가 정의되어 있는 지를 알려면 fuction_exist(함수 이름);을 쓰면 됩니다. 존재하는 함수라면 1(true)를, 아니면 0(false)를 돌려줍니다.

PHP에서도 C++에서처럼 지역변수, 전역변수 개념이 적용됩니다. 일반적으로 쓰이는 변수는 함수에서는 받아올 수 없으며, global $변수명, 이라고 써주면 함수 안에서도 전역 변수로 선언할 수 있습니다.


7 문자열, 숫자, 난수, 시간, 암호화 #


7.1 문자열 #

  :: 문자열 합치기
  [ $a = $b . %c ] 점 연산자('.')를 쓰면 문자열을 합칠 수 있다. 여기서는 b와 c를 합쳐서 a에 넣는다. 간단한 방법으로 [ $a .= $c ]를 하면 a의 뒤에 c를 붙인 a를 만들어낸다.

  :: 문자열 길이 알아내기
 [ strlen(변수 혹은 문자열); ]을 하면 문자열의 길이를 반환해준다.

  :: 문자열을 역순으로 바꾸기 ::
 [ strrev(변수 혹은 문자열); ]를 하면 앞뒤가 바뀐 문자열을 돌려줍니다. 원래의 변수에는 영향이 없습니다. 단, 한글은 지원하지 않습니다.

  :: 문자열의 공백, 한 자 제거
 [ chop(변수 혹은 문자열); ] 문자열 끝의 공백과 \n을 제거한 문자열을 돌려줍니다.

  :: 문자열 시작 공백을 제거합니다.
 [ ltrim(변수 혹은 문자열); ] 앞의 공백을 제거한 값을 돌려줍니다.

  :: 문자열의 처음과 끝의 공백을 동시에 제거
 [ trim(변수 혹은 문자열); ] 처음과 끝의 공백을 제거한 문자열을 돌려줌. chop과 ltrim의 동시적용효과

  :: 아스키문자로
 [ chr(변수 혹은 숫자); ]

  :: 아스키코드로
 [ ord(변수 혹은 문자); ]

  :: 백슬래시 추가
 [ addslashes(변수 혹은 문자열); ] 특수문자 ', ", \등에 \(백슬래시)를 덧붙여주는 역할을 한다. 이 함수는 크게 두 가지로 사용될 수 있는데 기존에 출력을 위해서 \를 사용하였던 경우 addslashes 함수를 사용하면 이 \들마저 출력된다. 웹프로그래밍 시에 사용자가 입력한 특수문자등이 포함되어있다면 그 값을 그대로 사용하면 문제가 생기므로, 저장 전에 한번 addslashes로 가공하여 저장.

  :: 백슬래시 제거
 [ stripslashes(변수 혹은 문자열); ] addslashes로 가공해서 가져온 것을 복원시키는 함수
  :: 바이너리를 16진수로
 [ bin2hex(변수 혹은 문자열); ] 일반 텍스트가 아닌 2진 바이너리 데이터를 16진수로 변환합니다.

  :: \n을 <br>로
 [ nl2br(변수 혹은 문자열); ] 웹이 아닌 프로그래밍에서는 \n이 다음줄로 넘어가는 코드입니다. 하지만 웹에서는 br태그가 그 역할을합니다. 이 함수를 쓰면 간단히 \n을 br태그로 바꿔줍니다.

  :: HTML태그 모두 지우기
 [ strip_tag(변수 혹은 문자열); ] 문자열 안에 있는 html 태그들만 모두 지워줍니다.

  :: 구분자를 기준으로 문자열을 나누기
 [ explode(구분자, 변수 혹은 문자열); ] 'TEXT:111:ass' 라는 문자열이 있다면 구분자를 ":"로 주면 쉽게 나눠낼 수 있음.

  :: 구분자를 이용해서 배열을 문자열로
 [ implode(구분자, 변수 혹은 문자열); ] 구분자를 이용해서 배열을 문자열로 합칩니다.

  :: 문자열의 일부만 뽑아내기
 [ substr(변수 혹은 문자열, 시작 위치, 뽑아낼 길이); ] 시작위치는 0이 첫번째 문자입니다. 위치가 -1이면 문자열의 마지막 문자입니다. 뽑아낼 길이가 생략되면 나머지 문자열을 모두 뽑아줍니다.

  :: 소문자로 바꾸기
 [ strtolower(변수 혹은 문자열); ] 문자열을 소문자로 바꿉니다.

  :: 대문자로 바꾸기
 [ strtoupper(변수 혹은 문자열); ] 문자열을 대문자로 바꿉니다.

  :: 첫글자를 대문자로 바꾸기
 [ ucfirst(변수 혹은 문자열); ] 첫글자만 대문자로~

  :: 각단어의 첫글자를 대문자로
 [ ucwords(변수 혹은 문자열); ] 각 단어의 첫글자를 대문자로 모두 변환

  :: 단어를 찾아서 다음 문자열까지
 [ strstr(변수 혹은 문자열, 찾을 문자열); ] 변수에서 찾을 문자열을 제일 처음 가진 곳을 찾아서 그 뒷부분까지 반환해줍니다. 대소문자를 구분합니다.

  :: 단어를 뒤에서부터 찾기
 [ strchr(변수 혹은 문자열, 찾을 문자열); ] 위의 함수와 비슷하나 뒤에서부터 찾아냅니다.

  :: 다 개의 문자열 사이의 같은 글자수 찾기
 [ similar_text(문자열1, 문자열2); ]

7.2 숫자 #

삼각함수
코사인 	cos(값);
사인 	sin(값);
탄젠트 	tan(값);
진수변환
2진수 => 10진수 	bindec(2진수);
10진수 => 2진수 	decbin(10진수);
10진수 => 16진수 	dechex(16진수);
10진수 => 8진수 	decoct(10진수);
16진수 => 10진수 	hexdec(16진수);
8진수 => 10진수 	octdec(8진수);
다양한 진접 변환 	base_convert(값, 값의 진법, 변환할 진법)


  :: 최대
 [ max(값1, 값2, 값3, 값4, ...); ] 만약 첫번째 값이 배열이라면 그 배열 중에서 최대 값을 찾아서 돌려준다.

  :: 최소
 [ min(값1, 값2, 값3, 값4, ...); ] 만약 첫번째 값이 배열이라면 그 배열 중에서 최소 값을 찾아서 돌려준다.

  :: 제곱
 [ pow(진수, 지수); ] 2의 3제곱이라면 pow(2,3)

  :: 소수의 올림
 [ ceil(실수); ]

  :: 소수의 내림
 [ floor(실수); ]

  :: 소수의 반올림
 [ round(실수); ]

7.3 난수 #

  :: 난수 발생시키기
 [ rand(최소값, 최대값); ] 최소값과 최대값사이의 난수 발생. 난수를 발생시키기위해서는 srand라는 함수를 먼저 선언해줘야함.

  :: 난수 초기화
 [ srand((double)microtime()*1000000); ]

  위에서의 함수 앞에 둘다 'mt_'를 붙이면 조금 더 좋은 알고리즘의 난수가 발생한다.

  :: 시간 알아오기
 [ time(); ] 유닉스 시간 알아오기. 1970년 1월 1일 0시 0분 1초부터 지금시간까지의 초입니다. 나중에 다른 함수를 써서 알아보기 쉬운 형태로 가공합니다.

  :: 날짜 알아오기
 [ getdate(유닉스 시간); ] 현재 시간과 날짜 정보를 연관배열로 넘겨줍니다. 인자를 주지 않을 경우 현재 시간에 대한 정보를 넘겨줍니다.
seconds	초
minutes	분
hours	시
mday	날짜
wday	현재 요일을 숫자로, 0은 일요일, 1은 월요일
mon	달
year	연도
yday	오늘이 해당 년도의 몇번재 날인지.
weekday	요일을 영문자로 알려줌.
month	달을 영문자로 알려줌.

8 MySql 과 연동 #



  :: 접속하기
 [ 접속 구분자 = mysql_connect(접속서버이름[:포트번호], userID, 패스워드); ]
[ $db = mysql_connect("localhost", "zelon", "111"); ]

  :: 접속끊기
 [ mysql_close(접속 구분자); ]

  :: DB 선택하기
 [ mysql_select_db(DB이름, 접속 구분자); ]

  :: 질의 하기
 [ mysql_query(SQL 질의, 접속 구분자); ]
 [ $result = mysql_query("select * from computer", $db); ]

  :: 질의 결과 보기
 [ mysql_affected_rows(접속 구분자); ]
 [ $rows = mysql_affected_rows($db); ]

  :: 질의 결과 보기
 [ mysql_fetch_row(질의 구분자); ] 가장 많이 쓰이는 형태, 결과를 열 단위의 배열로 돌려주는 함수. 처음 시작은 0부터 시작하며 다시 사용하면 다음 줄을 돌려줌. 그러므로 보통 for 등 루프를 이용하여 데이터를 가져오게 됨. 더 이상의 데이터가 없을 때는 0을 돌려줌.


$db = mysql_connect("localhost", "zelon", "zelon");
mysql_select_db("zelon", $db);
$rs = mysql_query("select * from aTable;", $db);
echo mysql_error($db);
while ( $row = mysql_fetch_arrray($rs) )
{
echo $row["ColumnName"];
}
mysql_close($db);

8.1 쿼리 query #


8.1.1 query(쿼리)가 뭐죠? #


쿼리란 일반적으로 어떤 요청을 뜻합니다. 쿼리란 넓은 의미로 어떤 요청을 하는 모든 경우를 뜻하지만 여기서는 웹서버에 어떤 자료를 요청하는 경우로 한정하겠습니다. 여기서는 어떻게 웹서버에 요청을 하고, PHP로 어떻게 그 요청을 알아채서 그에 따른 반응을 하는지를 알아보겠습니다.

8.1.2 쿼리 요청하는 방식 #


쿼리는 폼 형식(post)과 주소 방식(get)으로 할 수 있습니다. 일반적으로 form tag를 쓰면 post를 쓰고 주소 방식으로 쓰면 홈페이지를 부를 때 쓰는 URL(흔히 주소라 적혀있죠)를 이용해서 씁니다. http://meteor.knu.ac.kr/zelon/query.php?name=kim 이런 식으로 주소를 가는게 있죠? 저기 뒤에 있는 물음표 후에 name=kim이라는게 그 요청을 하는데 이름이 kim인 것을 요청(쿼리)한다는 뜻이죠. 야후 같은 검색 엔진을 홈페이지에 달때 이런 것들을 적절히 쓰면 쉽게 야후와 연동할 수 있는 홈페이지를 만들 수 있죠. 하여튼 이렇게 주소를 써서 요청을 할 수 있습니다. from tag를 쓸 때는 직접 name은 name이라고 적고 value=kim이라고 씁니다.


8.1.3 쿼리에 적절히 반응하기 #


위에서 저런식으로 넘겨온 값("kim"이겠죠?)을 어떻게 알 수 있을까요? php에서는 자동으로 $name이라는 변수를 만들어서 그 변수에 kim을 넣어버립니다. 그러니까 $name가 생긴다는 거죠. 쉽죠? 위의 경우 query.php 에서 echo $name을 할 경우 그 요청에 따른 반응을 보여줍니다. if문 등을 써서 그에 따른 반응을 해주면 되겠죠? 직접 해보세요~!
<?

      echo $name;

?>
}}}

9 Reference #


10 Link #

PHP Homepagehttp://www.php.net
PHP Referencehttp://www.php.net/manual/kr/
Perl Homepagehttp://www.perl.org
Perl 보물창고 CPANhttp://www.cpan.prg
인터넷자료 통계 Netcrafthttp://www.netcraft.com
GNU License 번역판http://kldp.org/root/gnu/gpl-k.html
Apache Webserver Homepagehttp://www.apache.org
Apache Webserver FAQhttp://www.apache.org/docs/misc/FAQ.html

11 eclipse 에서 php 개발하기 #


  • 마이크로소프트웨어 2007년 2월호 참고