강좌
클라우드/리눅스에 관한 강좌입니다.
프로그램 분류

디. php 기초 -2 php 기초함수

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

[강좌] php+mysql 게시판 만들기 #디-2

안녕하세요. 디망쉬입니다.

두번째 강좌군요.
날씨는 더운데 사무실도 덩달아 매우 더워서 강좌 쓰기 무진장 힘들군요.
의욕도 안생기고. 밤에 쓰자니 밤에 해야할 일들이(..-_-; 이상한 일이 아니에요) 많고.
하지만 꿋꿋하게 무시하고 쓰는 망쉬군임다.
자 시작!

icon04.gif 디. 기초 - b. php 기초 함수들

php 기초 함수들이래봐야 별거 없습니다.
그냥 흔히들 사용하는 것들만 알아보도록 하겠습니다.
정말 징하게 많이 쓰이는 것들이죠.


echo();

에코 함수입니다.
아. 중학생때 echo 가 뭔지 몰라서 에초라고 발음했던 기억이 나는군요. ^^;
(도스 시절에도 징하게 많이 쓰던 기억이) 각설하고 이 함수는 지난 회에서 간단히 언급했듯이 출력 함수입니다. 뭘 출력하느냐.
변수, 문자열, 숫자. 모두 다요.
예제를 볼까요?

$string = "I'm cute dimanche";
echo ("$string

");
echo ("cute dimanche

");
echo ("cute dimanche, no.");
echo ("1");


이걸 웹상에서 보면 이렇게 보입니다.

I'm cute dimanche
cute dimanche
cute dimanche, no.1



저기서 $string 이 뭔지 아시죠? 네 . 변수입니다.
그것도 I'm cute dimanche 라는 문자열이 저장된 변수지요. 간단하군요. :)


include();

이것도 꽤 자주 쓰일 법한 함수입니다. include 문은 내부/외부의 파일을 읽어오거나 실행시킨 뒤 해당 결과를
가져오는 역할을 해줍니다.
예제를 보도록 하죠.

include ("config.txt");



이라고 하면 config.txt 의 내용을 가져옵니다.
그런데 만약 외부의 cgi 결과값을 가져오고 싶다면 충분히 가능하죠.

include ("http://creple.com/dimanche/hello.php3?aw=wd");

 


이런 게 가능하다는 겁니다. 위와 같이 하면 위의 결과값을
가지고 오죠. 상당히 유용합니다.


require();

include 문과 거의 유사한 일을 합니다.
하지만 다른 점이 있다면 include 문은 해당 문을 만날 때마다 해당 위치의 파일을 재실행하거나 그러는데 require 문은 처음 require문을 접하게 되었을 때, 지정된 파일로 된다는거죠.
때문에 require 함수는 루프(반복)을 돌려서 매번 다른 파일을 읽어오거나 하는게 되지 않는다고 합니다.
이럴 때는 include 문을 쓰면 되겠죠.
더 자세한거요? 글쎄요. ^^;


Header();

HTTP 의 헤더 데이터를 보냅니다.
사용자가 지정한 것으로요.
이러한 헤더 데이터에는 여러 가지가 있습니다.
또 여러 사용법이 존재하구요.
헤더 타입을 어떻게 하느냐에 따라 해당 페이지, 또는 데이터를 다운로드 할지 웹 브라우저상에서 열건지가 정해지기도 하고 그럽니다. 저의 경우 이렇게 많이 사용하지요.

Header("Location: http://creple.com/dimanche");



내용은 간단합니다. http://creple.com/dimanche 로 이동 시켜주는거죠.

Header 함수를 사용할 때는 주의하실 점이 있습니다.
Header 함수 사용하기 전에는 어떠한 내용도 출력되서는 안됩니다.

echo ("hello dimanche");
Header("Location: http://creple.com/dimanche");

 


라고 하면 여지없이 에러가 난다는거죠. 주의하세요.


Setcookie();

쿠키를 구워주는 함수입니다. 그렇다고 실제로 구워주는건 아니구요. ^^; 쿠키가 뭔지 먼저 설명드릴까요?

동적인, 즉 응답 형태의 웹 페이지는 서버와 클라이언트간의 정보 교환이 있습니다.
그런데 특정 정보를 어느 경로로 가던 유지시켜줄 필요가 있을 수 있습니다.
쇼핑몰을 예로 들 경우 어떠한 쇼핑 카테고리로 이동하건 상관없이 이용자의 id 와 이름, 구입한 물품 정도는 갖고 있을 필요가 있는거죠.
그렇지 않으면 매번 해당 정보를 체크해야하고 검사해야하기 때문에 서버는 서버대로 버벅댈 것입니다.

이런 정보를 클라이언트건 서버건간에 한쪽이 갖고 있다면 편하겠죠?
그걸 클라이언트 측에서 갖고 있는 걸 쿠키라고 합니다.
쿠키 하나당 크기는 최고 4096 bytes 지요.
이렇게 용량 작은 정보 조각들인 탓에 쿠키라고 부르나봅니다. :)
하지만 말이 4096 bytes지 이것을 모두 서버가 갖고 있다고 하면 만만치 않을 겁니다.
만약 100만명의 정보를 갖고 있다면?
1,000,000 x 4,096 = 4,096,000,000 .. 와우. 4기가군요.
서버가 죽어나겠는걸요? :)

보통 인증쪽에서 자주 쓰입니다. 회원 id 와 비밀 번호를 치고 로그인하면 유저의 id 와 이름 등등의 정보를 쿠키로 갖고 있는거죠. 쿠키의 모습을 볼까요?


setcookie (쿠키이름,저장될내용,저장기간,해당경로,해당도메인,secure);


입니다. 쿠키 이름은 변수명이 될 것이고, 저장될 내용은 해당 변수의 내용이 되겠죠.
저장 기간은 초단위입니다.
하루가 3,600 초니까 3600*3 하면 3일간 저장하겠죠?
어디에 저장되냐구요?
하드 디스크죠. 만약 -1 로 하면 웹 브라우저가 닫힐 때 저절로 소멸되며, 그 정보는 하드가 아닌 메모리
상에 존재합니다.
해당 경로는 쿠키가 적용될 경로명이죠.
도메인도 마찬가지. 만약 creple.com/~dimanche/kr 에 적용시킬 경우, 도메인은 creple.com , 경로명은
/~dimanche/kr 이 됩니다.

아. 그나저나 맨 마지막 secure 은 저도 아직 모르겠내요.
사용해본 적이 없어놔서리. 맨마지막 secure 가 뭔지 아시는 분 있으시면 제게 가르침 부탁드릅니다. ^^;


eregi_replace();

문자열 치환 함수입니다. 특정 문자열에서 I am 을 You are 로 바꿀 경우 이 함수를 쓰면 편리하겠죠.

$text = "I am cute dimanche";
eregi_replace("I am", "You are", $text);


로 하시면 되실 겁니다. ^^


time();

시간을 잡아주는 함수입니다. 이 함수가 실행된 바로 그 순간의 시간을 잡아내는거죠.
그런데 이 시간이 우리가 생각하는 2000.6.15.2.57.23 식이 아니라는거죠.
어떤 규칙인지는 저도 모릅니다. 다만 확실한건 11자리의 숫자라는거죠.


date();

time() 함수로 나온 시간을 date 함수로 분리해줍니다.
년도, 월, 일, 시간, 분, 초까지 아무 세밀하게 나오죠.


$nowtime = time();
$tt = date("Y년 m월 d일,h시", $nowtime);


이라고 하시면 2000년 6월 15일,3시 라고 $tt 에 저장될 겁니다. 이런 date 의 형태는 매우 다양합니다.

a : am, pm 형식으로
A : AM, PM 형식으로
d : 날짜
D : 요일 (Mon, Fri, 이런식)
F : 월(달) 이름으로 (January, November 이런식)
h : 12시간 타입의 시간으로. 15시는 3시로 출력 같은.
H : 24시간 타입의 시간으로. 오후 3시는 15시로.
i : 분
m : 숫자형 월 출력. (1 ~ 12)
M : Jan, Nov 형식으로 월 출력
s : 초

이외 몇 개 더 있지만 잘 안쓰여서 생략했습니다.
궁금하신 분은 php3 manual 을 참조하세요. kldp.org 에 있심다.


이걸로 php3 기초/기본 함수는 끝났습니다.
더 다루고 싶지만 게시판 만드는데는 더 다룰 게 없군요. -_-;
사실 게시판이라는게 if 문의 반복이라서요.
하지만 이대로 끝내기에는 뭔가 아쉬우니 번외 형식으로 더 다뤄보죠.

b-#. 사용자 정의 함수

사실 프로그래밍을 하다보면 프로그래밍 언어 자체가 지원하는 함수만 필요하진 않습니다.
조금 다른 형식의 함수도 필요하고 특정 작동을 위해서는 직접 함수를 만들 필요도 있습니다.

대부분의 프로그래밍 언어는 사용자 정의 함수를 지원하며 php 역시 마찬가지입니다.
그 사용법은 매우 간단하고 쉽죠.


function 함수명() {
}

 


매우 간단하군요. 만약 dimanche 라는 이름의 함수를 만들고 싶다면


function dimanche() {
}

 


하면 끝입니다. 이걸 사용하려면 어디서건 dimanche(); 라고 해주면 끝나지요.
하지만 단지 함수만 만들어 쓰는 것은 별 의미가 없습니다.
함수를 쓸 필요가 없어지죠.
함수를 쓰는 이유는 특정 값을 함수로 보내어 처리하고 해당 값을 가져올 때 편하기 때문이죠.
같은 기능을 하는 부분을 소스 이곳 저곳에 붙이는 것보다 함수로 정의한 뒤, 해당 기능을 작동시킬 필요가 있을 때마다 값을 함수로 보내주면 되거든요.

간단하게 사칙연산을 하는 것부터 짜보죠.
소스부터 보겠습니다.

<?
function processit(
$x, $y, $type) {
if ($type == "p") {
$z = $x + $yl
}
elseif ($type == "n") {
$z = $x - $yl
}
elseif ($type == "m") {
$z = $x * $yl
}
elseif ($type == "d") {
$z = $x / $yl
}
else {
echo ("사칙연산만 된답니다");
exit;
}

return $z;
}

$result = processit(9, 3, "m");

echo ("$result");
?>


위의 결과는 무엇일까요? 눈치채셨을려나. 27 입니다.

$result = processit(9, 3, "m");


여기에서 m 대신 n 을 넣으면 6, p 를 넣으면 12, d 를 넣으면 3이 나옵니다.
뭐가 어떻게 돌아간건지 알아보죠.

일단 함수를 어떻게 호출하나보죠.
processit(9, 3, "m") 이군요.
이것은 processit 함수를 호출할 때 9 와 3, m 을 보내어 호출한다는 겁니다.
자. 그럼

function processit($x, $y, $type) {


이렇게 정의되어있는 함수 부분으로 값이 넘어가면서 실행되겠죠.

processit(9, 3, "m");


이렇게 호출했으므로

function processit($x, $y, $type) {


에서 $x 는 9, $y 는 3, $type 은 m 이 됩니다.
그런뒤 사칙 연산의 과정을 거친 뒤 나온 결과값 $z 를 되돌려줍니다.
어디로? 함수를 실행한 곳으로.

$result = processit(9, 3, "m");


이렇게 되어있ㅅ브니다. $z 이 값이 되돌아오는데 이 되돌아오는 값을 $result 에 저장하라고 되어
있으니 결과적으로


$result = $z


처럼 되었군요. :]


아직 잘 모르시겠다면 일단은 그냥 넘어가세요.
방법은 하나입니다. 이걸 자주 써보는 수밖에. :)



자. 드디어 두 번째 편도 끝났습니다.
다음 회에서는 RDBMS (관계형 데이터베이스 관리 시스템)에 대해서 간단하게 알아보도록 하죠.
어흑. 그나저나 벌써 6월 15일인데 내일까지 나머지 다 쓸 수 있을까. T_T

아무튼 '디-3' 에서 뵙도록 하죠. :]

----------------------------
함께하면 즐거운 사이트들 (-_-; 광고임 -_-;)
http://game.creple.com/delthia
http://creple.com
http://coco.st
----------------------------


- ?! 디망쉬

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,159 명
  • 현재 강좌수 :  36,519 개
  • 현재 접속자 :  320 명