안녕하세요!
2016년도에 작성한 문서입니다.
기존에 PHP5에 익숙하신 분들이 새로이 PHP7이 나오면서,
간략하게 나마 무엇이 바뀌었는지,
그리고 PHP 프레임워크를 시작하기 전에 표준적인 코딩은 어떤 것인지 알아보기 위해 문서를 작성하였습니다.
많은 분들에게 도움이 되길 바라며!! ^^
* 참고 : PHP 5.5.9 이상 버전에서도 위 예제코드가 됩니다! >.<
크고 아름다운 Java 기반의 레거시 시스템. 하지만 매일 같이 반복되는 Java 코드를 찍어내기에 지쳤다면? 레거시 시스템에 Django를 들이밀어 한DB 두살림을 구축해보자. 아 그거 inspectdb 하나만 쓰면 되는 거 아닌가? 크고 작은 삽질들을 모아모아 공유합니다.
2. FORM
• HTML의 태그 중에 하나
• <FORM>…</FORM>
• 사용자로부터 값을 입력 받을 수 있는 방법
• 하위 Form 요소에 대한 콘테이너
<FORM NAME="폼이름"
ACTION="데이터를 보낼 주소"
METHOD="전송방식“
ENCTYPE=“암호화방식”>
하위 FORM 요소
</FORM>
한림대학교 웹데이터베이스 - 이윤환
3. FORM
Form 태그의 속성.
• NAME : HTML 문서 내에서 구별지을 이름
• ACTION
• 사용자가 입력한 폼 정보를 전달할 주소를 지정하는 항목.
• 데이터를 전달받는 주소는 반드시 PHP와 같은 서버 스크립트 파
일이어야 함.
• METHOD
• 데이터를 전달하는 방식을 정의
• POST와 GET 방식이 있음.
• POST : HTTP 바디(Body)에 데이터를 실어 보냄.
• GET : URL을 통해 데이터를 전달.
• ENCTYPE
• 폼 데이터의 인코딩(encoding) 방법 지정.
• 데이터 전송 방식이 POST일 경우에만 적용됨.
• application/x-www-form-urlencoded 와 multipart/form-data 두 가
지 종류가 있음.
한림대학교 웹데이터베이스 - 이윤환
4. FORM : GET VS. POST
GET 방식 : URL로 전달 (길이 제약)
• 파일 이름 다음에 물음표(?) 기호를 사용하여 “?변수명=전달될 값”
과 같은 방식으로 동작.
• ex: /index.php?name=brown
• 두 개 이상의 값을 전달하고자 할 때는 & 기호를 통해 전달.
• ex: ?name=brown&homepage=http://ezphp.net
POST 방식 : REQUEST BODY를 통해 전달
• 데이터의 길이에 대한 제약이 없어 매우 큰 용량의 정보 전송 시 사
용 가능.
• PHP 설정에서 POST 방식으로 전송할 수 있는 크기를 제한하
고 있음.
• php.ini 파일에서 max_post_size 값을 조절하여 제한을 변경
할 수 있음.
한림대학교 웹데이터베이스 - 이윤환
6. FORM 하위 요소 : <INPUT>
Text Type
• 한 줄짜리의 Text 입력상자를 만든다(최대 255자).
• <INPUT TYPE="text" NAME="email" VALUE="id@domain"
SIZE="40" MAXLENGTH="50">
• NAME : 전달될 Form의 이름(전달받는 PHP File에서는 변수명이된
다.)
• VALUE : 초기값
• MAXLENGTH : 최대길이
• SIZE : 박스의 길이
PASSWORD
• Text와 동일하나 입력시 문자열이 ***로 나타난다.
• Example : inputPwd.html
한림대학교 웹데이터베이스 - 이윤환
7. FORM 하위 요소 : <INPUT>
HIDDEN
• Browser에는 나타나지 않으며 미리 정한 값이
전달된다.
• Source 보기로는 나타난다.
SUBMIT
• Form이 전달된다.
RESET
• 입력한 Form의 값을 모두 지운다.
한림대학교 웹데이터베이스 - 이윤환
8. FORM 하위 요소 : <INPUT>
RADIO
• 여러 개의 선택요소중 한 개만 선택한다.
<INPUT TYPE=“RADIO” NAME=“gender” VALUE="M"
checked>남성
<INPUT TYPE=“RADIO” NAME=“gender” VALUE="F"> 여성
• checked : 기본 선택 값에 붙힌다.
• 여러 개의 구성요소는 동일한 NAME을 통해
Group이 이루어 지고 실제 전달되는 값은
VALUE에 의한 값이 전달된다.
• Example : inputRadio.html
한림대학교 웹데이터베이스 - 이윤환
9. FORM 하위 요소 : <INPUT>
CHECKBOX
• 여러 개의 구성요소를 선택하는 데 사용한다.
<INPUT TYPE=“CHECKBOX” NAME=“check1” VALUE=“win98”
checked> win98
<INPUT TYPE=“CHECKBOX” NAME=“check2”
VALUE=“win2k”> win2k
• NAME이 동일할 경우 나중에 선택된 변수만 선택이 된다.
• Checkbox는 사용자가 어떤 것을 선택할 지 모르므로 어떤 값
을 선택했는지 알려면 어떻게 해야 할까?
• 다음 예제를 강의 보조 자료에서 확인바랍니다.
• Example : check-from.php, check.php
한림대학교 웹데이터베이스 - 이윤환
10. FORM 하위 요소 : <TEXTAREA>
TEXTAREA
• 여러줄에 걸친 Text를 입력받는다.
<TEXTAREA NAME="comment" ROWS="4"
COLS="30" >기본값</TEXTAREA>
• ROWS : Text 입력 상자의 줄 수
• COLS : Text 입력 상자의 열 수
• Example : inputTextArea.html
한림대학교 웹데이터베이스 - 이윤환
11. FORM 하위 요소 : <SELECT>
SELECT
• 여러 개의 구성 요소중 선택한다.
• 구성 요소는 <option>을 이용하여 지정한다.
• 전달되는 것은 역시 value의 값이 전달
<select name="age">
<option value="10">10 - 20세 사이</option>
<option value="20" selected>21 - 30세 사이
</option>
</select>
• SELECTED : 미리 선택된 요소
• Example : inputSelect.html
한림대학교 웹데이터베이스 - 이윤환
12. 배열
“변수 보따리”
• PHP 프로그래밍에서 유용하게 사용할 수 있는 자료형.
- PHP에서는 다양한 배열 함수가 제공되어 편리함.
• 하나 이상의 데이터를 저장할 수 있음.
<?php
- 배열 속에 배열을 다시 저장할 수 있음. $a[0]="abc";
$a[1] ="def";
$b["foo"]=13;
?>
배열의 구조
• 기존 변수 이름 뒤에 “[인덱스]”를 덧붙인 모양을 가짐.
• 하나의 변수 이름에 여러 가지의 값을 가지기 때문에 “배열의 몇 번째 값”과
같은 뜻의 인덱스를 사용함.
• 두 값의 구분은 [0],[1] 등으로 몇 번째에 저장되어 있는지를 표기하여 구분.
• 숫자 인덱스를 사용하지 않고 사용자가 지정한 구분자를 두어 배열
의 값을 구분할 수 있음
한림대학교 웹데이터베이스 - 이윤환
14. 배열
배열의 종류
• 일반 배열(Index사용 : 숫자에 의한 접근)
• 할당 : $fruit = array(“사과”, “배”, “복숭아”, “딸기”);
• 사용 : $fruit[0];
• 연관 배열(Key 사용 : 문자열로 접근)
• 할당 : $phone = array(“home” => “123-4567”, “office” =>
“765-4321”);
• 사용 : $phone[“home”];
• Example : arrex.php
관련 함수
• array array ( [mixed ...])
• bool print_r ( mixed expression [, bool return] )
• Example : print_r.php
한림대학교 웹데이터베이스 - 이윤환
15. 배열 관련 함수
http://www.php.net/manual/en/ref.array.php
정렬하기 : 낮은 값에서 높은 값으로 정렬
• sort : 배열의 값에 따라 정렬한다.
• bool sort ( array &array [, int sort_flags] )
• sort_flags는 PHP4 부터 추가된 상수로 다음과 같다.
• SORT_REGLUAR : 일반적인 방법으로 원소 비교(자료형을 바꾸지 않
는다.)
• SORT_NUMERIC : 숫자형으로 비교
• SORT_STRING : 문자열형으로 비교
• 정렬을 한 후의 Index는 값의 순서에 맞춰진다.
• asort : 연관 배열의 값에 따라 정렬한다.
• bool asort ( array &array [, int sort_flags] )
• 정렬을 한 후의 Key는 값이 원래 가지고 있는 key를 유지한다.(키와
데이터의 연관성 유지)
한림대학교 웹데이터베이스 - 이윤환
16. 배열 관련 함수
• ksort : 연관배열의 Key에 따라 정렬한다.
• bool ksort ( array &array [, int sort_flags] )
• 키와 데이터의 연관성 유지
• Ex. sort.php
• 다음의 코드를 실행 시키면 어떤 결과가 나오리라 예상되나?
• 본인의 예상과 일치하는지 반드시 강의보조자료를 통해 확인하기바
랍니다.
<?php
$arr = array(“orange”, “apple”, “lemon”);
$arr2 = array(“yellow”=>”lemon”, “red”=>”apple”,
“orange”=>”orange”);
print_r($arr);
print_r(sort($arr));
print_r($arr2);
print_r(asort($arr2));
print_r($arr2);
print_r(ksort($arr2));
?>
한림대학교 웹데이터베이스 - 이윤환
17. 배열 관련 함수
배열 재배치
• shuffle : 배열을 임의대로 섞는다.
• bool shuffle ( array &array )
• 임의로 배열을 섞기 위해 PHP 4.2.0 미만에서는 srand()와 mt_srand()
를 이용해서 난수값 생성기를 초기화하여야 하나 4.2.0 이상부터는
난수값 생성기 초기화.
• array_reverse : 배열을 받아서 역순으로 저장한 배열 반환.
• array array_reverse ( array array [, bool preserve_keys] )
• preserve_key가 TRUE일 경우 키를 보존한다.
• 인덱스를 0, 1, 2를 가지는 배열을 array_reverse(배열명, TRUE)라
고 하면 인덱스도 2, 1, 0 이런 식으로 역순으로 갖는다.
• array_flip : 배열의 키와 해당 값을 서로 바꾼 배열 반환.
• array array_flip ( array trans )
• 키와 값을 바꿀때 서로 같은 값이 있는 배열의 경우 충돌이 일어나게
되고 가장 마지막에 바꾼 것만 결과로 남는다.
한림대학교 웹데이터베이스 - 이윤환
18. 배열 관련 함수
배열의 기본 정보
• count : 배열의 원소의 개수를 반환한다.
• int count ( mixed var [, int mode] )
• http://www.php.net/manual/pt_BR/function.count.php
• array_keys : 배열의 모든 키를 배열로 반환한다.
• array array_keys ( array input [, mixed search_value] )
• http://www.php.net/manual/pt_BR/function.array-keys.php
• array_values : 배열의 모든 값들을 반환한다.
• array array_values ( array input )
• http://www.php.net/manual/pt_BR/function.array-values.php
• Ex. array_info.php
한림대학교 웹데이터베이스 - 이윤환
19. 배열 관련 함수
배열 탐색 함수
• current : 현재의 배열 커서(포인터)가 가리키는 원소 반환
• http://www.php.net/manual/pt_BR/function.current.php
• reset : 배열의 내부 포인터(커서)를 처음으로 이동하고 값 반환
• http://www.php.net/manual/pt_BR/function.reset.php
• end : 배열의 내부 포인터를 가장 끝 원소로 이동하고 값 반환
• http://www.php.net/manual/pt_BR/function.end.php
• prev : 배열의 내부 포인터를 이전 원소로 이동시키고 해당 원소의
값 반환
• http://www.php.net/manual/pt_BR/function.prev.php
• next : 배열의 내부 포인터를 다음 원소로 이동시키고 해당 원소의
값 반환
• http://www.php.net/manual/pt_BR/function.next.php
• Ex. array_walking.php
한림대학교 웹데이터베이스 - 이윤환