happy cat image

everdevel

우리 모두의 웹 입문, 에버디벨

에버디벨이 책을 냈어요.!!
눌러주세요.

지은이 : 에버디벨 운영자

UI 변경

함수 1

다른 프로그래밍 언어에서도 그렇듯이 PHP에도 함수가 있습니다.
함수는 왜 사용할까요? 음.. 프로그래밍을 더 편하게 하기 위해서 사용합니다. 중복된 기능을 함수로 만들면 다음에 중복된 기능을 사용할 때 또 코딩할 필요 없이 그 함수를 사용하면 됩니다.
이러한 함수는 자신이 직접 제작도 가능하고 또한 기본 내장함수라는 것이 있습니다. 그 기본 내장함수는 이미 만들어져 있는 함수를 의미합니다.

그럼 예를 들어서 간단하게 어떠한 숫자 2개를 더해야 하는 업무를 부여 받았다고 합시다.
그 어떠한 수를 더하기 위해서 우리는 어떠한 수를 계속 더해야 하는 소스를 만들어내야 합니다.
하지만 대신 더하기를 해주는 함수를 한번 만든다면 그 이후는 함수에게 부탁하면 됩니다. 2개의 숫자를 함수에 넣고 그 함수는 더한값을 토해내면 그 값을 사용하면 됩니다.
간단히 설명하기 위해서 더하기를 하지만 실전으로 가면 여러가지 복잡한 상황이 많겠죠? 그럼 직접 함수를 만들어 볼까요?
함수를 만드는 방법은 간단합니다 함수를 영어로 function이라고 하는데요.

 function 함수이름(처리해야할 값){
   //함수가 처리해야할 명령 작성
 }

그럼 간단하게 hello world를 출력하는 함수를 만들어 보겠습니다.

 <?php
 function helloWorld(){
   echo 'hello world';
 }
 ?>

함수를 만들었습니다. 그럼 만들었으면 사용을 해야겠죠?

함수 호출

함수 호출은 매우 간단합니다. 함수명(); <-- 이렇게요 즉, 함수명을 작성하고 괄호를 열고 닫고 끝
그럼 hello world를 함수를 호출해볼까요?

 <?php
 function helloWorld(){
   echo 'hello world';
 }
 helloworld(); //함수 호출
 ?>

hello world함수를 보면 ()안에 아무것도 없죠? ()안에 넣는 값을 한국어로 인자값 영어로 파라미터 라고 부릅니다.
파라미터가 필요한 함수이면 파라미터를 넣고, 필요하지 않는 함수라면 안넣어도 됩니다. 파라미터를 넣은 함수를 만들어 볼까요?

 <?php
 function hello($name){
   echo $name.'님 안녕하세요.';
 }
 hello('유저'); //함수 호출
 ?>

파라미터로 문자열 유저를 넣었습니다. 결과는 '유저님 안녕하세요.'가 출력되었죠? 이렇게 파라미터를 스트링(문자열)로 넣을수도 있고 변수로 넣을수도 있죠.
그럼 이번엔 파라미터를 변수로 넣어 볼까요?

 <?php
 function hello($name){
   echo $name.'님 안녕하세요.';
 }
 $parameter1 = '태영';
 hello($parameter1); //함수 호출
 ?>

결과는 '태영님 안녕하세요.'로 나옵니다. 함수 호출 하는 부분의 파라미터는 $parameter1로 적어서 보내면 parameter1의 내용인 태영만 날아가며 함수 선언부의 $name의 값이 '태영' 으로 변합니다.

그러하니 $parameter1으로 보냈는데 $name로 받네 왜 이러지 이러한 고민은 하지 않으시면 됩니다. 또한 파라미터를 받는 함수인데 파라미터값 없이 받을 경우 파라미터에 기본값을 지정할 수 있습니다.

 <?php
 function hello($name = '유저'){
   echo $name.'님 안녕하세요.';
 }

 hello(); //함수 호출
 ?>

위와 같이 함수를 선언한 파라미터값에 기본값을 설정해주면 파라미터 없이 함수를 할 시 기본값이 출력됩니다.

return

return은 함수가 무언가의 결과를 반환합니다 함수안에서 return문을 만나면 함수는 기능을 끝냅니다.

지금 까지 공부한 함수는 return문이 없었습니다. 함수 안에서 echo문이 있어서 출력을 해주었습니다.
그럼 이번엔 return을 사용해서 함수를 만들어 봅시다. 2가지의 수를 더해주는 함수 입니다.

 <php
 function plus($num1, $num2){
   $plus = $num1 + $num2;
   return $plus;
 }

 echo plus(42,20);
 ?>

위의 소스를 보면 함수 호출에 42와 20을 보냅니다. 그럼 함수 받는 부분에선 첫번째 파라미터를 $num1에 저장 두번째 파라미터를 num2에 저장 하고 $plus라는 변수를 선언 후에 2개의 값을 더하며 $plus를 반환합니다.
그러면 합한값을 반환하고 echo에 의해 합한 값이 출력됩니다. 이런식으로 자신이 마이너스를 하는 함수 등등 여러가지 함수들을 만들 수 있습니다. ^^

하나의 함수를 더 만들어 볼까요?

2개의 수를 넣고 2개의 수 사이의 수를 출력하는 함수를 만들어 봅시다.

 <php
 function numList($num1, $num2){
   for($i = $num1; $i <= $num2; $i++){
    echo $i.'
'; } } numList(42,80); ?>

그 외에도 아래의 여러 내장함수 들이 있습니다.
문자열 관련 함수

crypt() 단방향 암호화
strtoupper() 문자열의 알파벳을 모두 대문자로 변환
strtolower() 문자열의 알파벳을 모두 소문자로 변환
strlen() 문자열의 길이 반환
ord() 문자에 해당하는 아스키 코드값을 반환
chr() 아스키 코드값에 해당하는 문자를 반환
nl2br() "New Line To HTML. <br />" 태그로 엔터를 입력한 부분의 줄 바꿈
echo(), print() 문자열 출력
printf(), sprintf() 형식이 있는 문자열 출력
substr() 문자열에서 자르기를 시작할 위치를 왼쪽에서부터 배열 수로 설정
strchr() 문자열을 자르기 시작할 문자열의 문자로 위치를 표시
chop() 문자열의 뒷부분에 있는 공백을 제거
trim() 문자열의 앞과 뒤에 있는 공백을 제거 (앞 ltrim(), 뒤 rtrim() 로 제거)
explode() 문자열을 배열로 반환
str_replace() 임의의 문자열에서 특정 문자를 다른 문자로 변경
preg_match() 임의의 문자열에서 찾을 문자열이 존재한다면 1, 아니면 0을 반환
ereg() 문자열 검색에서 알파벳 대/소문자를 정확히 구별하여 검색
eregi() 문자열 검색에서 알파벳 대/소문자의 구분 없이 검색
strcmp() 두 개의 문자열에서 첫 글자의 아스키 코드값에 따라 1, 0, 01을 반환
addslashes() 역슬래시 삽입
strslashes() 역슬래시 제거
문자열 암호화 함수 :crypt()
단방향 암호화 함수로 개인정보 유출을 막기 위한 도용방지에 효과적인 함수이다.
사용자가 등록한 비밀번호는 데이터 베이스에 암호화 되어 저장되기 때문에 비밀번호는 사용자에 의해 원래 비밀번호와
함께 있을 때만 유효하다

 <?php
 echo "단방향 암호화 crypt() 함수 <br />";

 $char = "arigatou";
 echo  "현재 암호화가 되어있지 않은 상태의 비밀번호 : {$char} <br /> ";

 $passwd = crypt($char); // 변수 선언후 $char을 암호화 처리
 echo  "암호화 처리된 비밀번호 {$passwd} <br />";
 ?>

위의 소스에서 $char 변수에 arigatou라는 비밀번호를 저장하였고
$passwd = crypt($char)로 해서 암호화처리를 하였다.
위의 페이지를 출력해서 새로고침을 하면 암호화된 비밀번호는 값이 계속 바뀌게 된다.

암호화된 암호가 바뀌지 않고 나오게 할려면
crypt()안에 두개의 인자를 넣어줍니다. 첫번째는 암호화시킬 문자이며 2번째는 임의의 알파벳입니다. 2자까지 입력가능
예를 들어서 아래와같이 표현

 <?php
 $passwd = "abc123";
 $char = "as";

 echo "암호로 지정한 문자열 : abc123 <br /><br />";
 echo "암호화 : ";
 echo  crypt($a, $b);
 ?>

위와 같이 해주면 출력시에도 암호화된 비밀번호가 바뀌지 않습니다.
2번째 인자는 자신이 임의로 정하면 됩니다.
고객들의 암호화된 비밀번호가 전부 pw로 시작하게 하고 싶다면 pw를 입력하면 됩니다.


문자를 대,소문자로 변환

 <?php
 echo "대, 소문자 변환하기 <br />";

 $a = "Hello World!! <br />";

 echo "제시된 문자열 {$a}  <br />";

 $str1 = strtoupper($a);
 echo "1. 대문자로 변환 {$str1} <br />";

 $str2 = strtolower($a);
 echo "2. 소문자로변환 {$str2} <br />";
 ?>

$a로 Hello World!!! 를 입력해 준후 $str1 = strtoupper($a)로 대문자로 변환해준다. 결과에서 보듯이 이미 대문자인것은 그대로 대문자로 있다.
strtolower로 사용한것도 마찬가지


문자열 길이 반환 함수 : strlen() 아스키코드값 반환

 <?php
 echo "문자열의 길이와 아스키코드 값의 반환 함수 <br />";

 $a = "2012 런던 올림픽";

 echo "길이를 알아볼 문자는 ? : {$a} <br />";

 $str1 = strlen($a);

 echo "\$a의 문자열의 길이는 : {$str1} <br />";

 $b = 'B';

 echo "아스키코드로 반환할 알파벳은 ? : $b ";

 $str2 = ord($b);

 echo "b의 아스키코드값 : $str2 <br />";
 ?>

strlen()함수로 문자열의 길이를 출력할때 16이라고 나오는 이유는
"2012 런던 올림픽" 에서 영문,숫자,띄어쓰기는 1byte를 차지하고 한글은 한글자에 2byte를 차지하기때문입니다.
즉 2012는 4byte 런던 도 4byte 올림픽은 6byte 빈칸 2개는 2byte 그러므로 16이 출력됩니다.
아스키코드는 네이버에서 아스키코드값을 검색하시면 나옵니다.

nl2br() 함수

form태그안에서 엔터를 입력하면 줄을 바꾸어서 입력해도 실제로는 입력될때는 줄바꿈이 일어나지 않습니다.
하지만 이 함수를 사용하면 엔터를 치면 출력문에도 줄바꾸기가 이루어집니다.

 <form method="post" action="test1.php">

 <textarea rows="3" cols="30" name="a">
 </textarea>
 <input type="submit" value="send">
 </form>

위 파일을 test.php 파일로 저장을 하고 다른 새파일을 열어서 아래를 test1.php로 저장합니다.

 <?php
 $a = $_POST['a'];  //<form>태그에서 post방식으로 전송 받음.(반드시 선언해야 함)
 $a = nl2br($a);
 echo " ▼ 추천하는 글<hr>";
 echo "$a";
 ?>

test.php파일에서 1라인 method = "post"는 post방식으로 값을 전달해주는것입니다. 나중에 자세히 나옵니다. 지금은
그냥..
action="test1.php"는 값을 test1.php로 보내는 것입니다.
textarea 에서 name="a"인데 저 텍스트에리어에 입력된 값이 a이며 그 값은 포스트 방식으로 test1.php로 submit버튼을 누르면 제출됩니다.

그러면 test1.에서는 그 a값을 받고 출력 해줍니다.

test1.php에서는 $a = nl2br($a) 를 하지 않는다면 엔터를 쳐도 결과에서는 줄바꿈이 일어나지 않습니다.

에버디벨의 완성 :: 웹코딩 시작하기

안녕하세요.
에버디벨 운영자입니다.
여러분이 늘 이용해 주셔서 하루 5명 오는 사이트가 1000명이 오는 사이트가 되었고,
또 그 이유로 사이트를 운영을 멈추지 않아 저같은 평범한 사람이 책까지 쓸 수 있게 되었습니다.
여러분이 찾지 않았다면 진작 사이트 접었습니다.
저의 웹개발 경력 2년을 쏟아내어서 6개월의 집필, 8개월의 교정기간을 거쳐 [웹코딩 시작하기]가 출간했습니다.
웹코딩 시작하기는 HTML5를 시작으로 CSS3 -> jQuery를 학습합니다.
그리고 앞에서 배운 내용으로 간단한 소통사이트를 반응형으로 제작합니다.
보통의 책은 HTML5 + CSS3로 끝나고 혹은 HTML5 + CSS3 + jQery로 끝나지만 웹코딩 시작하기는 여기서 끝내지 않았습니다.
그 다음 바로 데이터베이스중 하나인 MySQL를 학습하고, 그 이후 PHP를 학습니다. 그리고 앞에서 만든 소통사이트에 회원가입, 로그인 기능은 기본으로 진행하며, 스크롤이벤트를 이용하여 스크롤을 내리면 AJAX를 작동시켜 게시물을 더 불러오는 기능을 구현하고 자기의 로그기록을 파일에 쓰기, 그 밖에 자신의 프로필사진, 커버사진 등록, 댓글 쓰기등의 기능을 적용합니다.
본서는 웹코딩을 처음하는 사람이 하나에서 끝나지 않고 처음부터 시작해 프로젝트까지 완성해가며 전체적으로 시스템이 어떻게 작동하는지 전반적으로 알게하기 위해 태어났습니다.
적어도 지구에서 가장 친절한 웹 입문서라고 생각하는 책입니다.
에버디벨로 부족하셨다면 웹코딩 시작하기를 추천합니다.

어제보다 나은 나, 오늘 보다 나을 내일의 나를 만드는 :: 웹코딩 시작하기

목차보기

종이책 구입하기

전자책 구입하기

PART 1. 프론트엔드 HTML5 + CSS3 + jQuery

CHAPTER 1. HTML5

1. HTML5 소개

2. 메타 태그

3. 텍스트 태그

4. 이미지 태그

5. 하이퍼링크 태그(a 태그)

6. 리스트 태그

7. form 태그

8. 공간 태그

9. video 태그

11. svg와 canvas

12. table 태그

CHAPTER 2. CSS3

1. CSS 소개

2. CSS를 적용하는 세 가지 방법

3. 선택자(selector)

4. 텍스트를 꾸미는 CSS 요소

5. 가로 길이와 세로 길이 조정하기

6. 텍스트가 영역을 벗어날 때

7. HTML 엘리먼트의 위치 변경하기

8. 배경 꾸미기

9. 외곽선 긋기

10. float와 clear

11. 박스의 바깥 여백 설정하기

12. 박스의 안쪽 여백 설정하기

13. CSS 리셋

14. 애니메이션

15. transform

16. transition

17. display

18. 반응형 웹

19. 반응형으로 간단한 레이아웃 만들기

20. SVG 태그

CHAPTER 3. jQuery

1. jQuery 시작하기

2. 셀렉터

3. 엘리먼트 보이기와 숨기기

4. 클릭했을 때 무언가 하기

5. 마우스 포인터를 요소 위에 올릴 때 무언가 하기

6. 제이쿼리로 CSS 적용하기

7. 변수 사용하기

8. HTML 엘리먼트에 있는 텍스트 변경하기

9. HTML 태그 제어하기

10. 애니메이션 기능

11. 엘리먼트에 클래스 추가, 삭제하기

12. 엘리먼트의 이동

13. 폼 태그의 값 조정

14. 포커스

15. this 사용하기

16. 연산자

17. 함수 만들기

18. 변수에 대해서

19. 글로벌 변수와 로컬 변수

20. 조건문

21. 반복문

22. 스크롤 이벤트

23. AJAX

24. canvas 태그(HTML5)

project 나의 첫 웹서비스 만들기

CHAPTER 1. 나의 첫 웹서비스 프로젝트 소개

CHAPTER 2. 나의 첫 웹서비스 만들기 프로젝트 - front end

1. 메인 페이지 만들기(index.html)

2. 나의 페이지 만들기(me.html)

3. 모두의 페이지 만들기(all.html)

PART 2. 백엔드 MySQL + PHP

CHAPTER 1. MySQL

1. 데이터베이스란?

2. MySQL 시작하기

3. 데이터베이스 만들기

4. 테이블

5. 필드의 데이터 크기와 데이터형 지정하기

6. 테이블 생성하기

7. 필드의 추가, 수정, 삭제

8. 테이블 삭제하기

9. 테이블에 데이터 입력하기

10. 데이터 불러오기

11. 데이터의 값을 변경, 삭제하기

12. 테이블 초기화

13. 2개 이상의 테이블 사용하기(JOIN)

14. 집계함수

15. 그룹별 집계

16. 출력 결과의 정렬

17. 불러올 레코드 수 지정하기

18. 2개 이상의 테이블을 묶어 사용하기

19. 쿼리문 안의 쿼리문 서브쿼리

20. 특정 필드에 같은 값을 넣지 않는 방법

21. 서로 다른 필드의 값을 합쳐서 출력하기

22. 검색을 더욱 빠르게 하는 인덱스

CHAPTER 2. PHP

1. PHP 소개

2. 출력문

3. 주석

4. 변수

5. 연산자

6. 배열>

7. 데이터형

8. 조건문

9. 반복문

10. 함수

11. 함수 만들기

12. POST와 GET

13. 기능의 사물화

14. 코드의 재활용

15. PHP와 MySQL의 연동

16. 상수

17. 정규 표현식

18. 파일 업로드

19. 디렉터리 함수

20. 파일 함수

21. Anchor 태그의 ping 속성과 AJAX

22. 쿠키와 세션

23. 객체지향 프로그래밍

project 나의 첫 웹서비스 만들기

CHAPTER 3. 나의 첫 웹서비스 만들기 프로젝트 - back end

3-1. 회원가입 기능

3-2. 로그인, 로그아웃 기능

3-3. 게시물 등록하기

3-4. 게시물 불러오기

3-5. 댓글 등록하기

3-6. 댓글 불러오기

3-7. 게시물 공감하기

3-8. 모두의 페이지

3-9. 포토 업로드 기능

3-10. 나의 로그 만들기

강좌로 돌아가기