Form과 php - nada.pe.kr

Download Report

Transcript Form과 php - nada.pe.kr

Form과 php
1. <FORM> 태그
• <FORM>태그는 일정한 형식을 통해 사용자로부터 데이타를 입력
받을 수 있는 태그
• <FORM>태그에 삽입 가능한 형식 : 한줄 텍스트창, 암호화된 데이타
입력 창, 라디오 버튼, 체크박스, 폼 내용 전송 버튼, 폼 내용 리셋 버튼,
여러줄 텍스트 창, 풀다운 메뉴, hidden.
<FORM METHOD=[GET|POST] ACTION=“위치이동” NAME=“폼 이
름”>
….
</FORM>
2
<Form> 태그의 속성
• action : 폼 데이터를 처리할 CGI프로그램의 이름(파일명)을 지정하는
URL
• method : 폼을 전송할 방식으로 어떤 방식으로 데이터를 넘겨줄지 결정.
- post : 내부적으로 환경 변수로 넘어 감.(폼의 본문에 포함하여)
- get : 주소 표시줄에 표시되면서 넘어간다.
사용자가 그 결과값을 알 수 있도록 출력해주는 것.
보통 간단한 인수 전달 시 사용
• Name : 폼의 이름.
• enctype = “MIMETYPE”
- method의 값이 post일 때, 전송되는 폼의 형식을 지정.
- 기본값은 “application/x-www-form-urlencoded”이며
<input type=file>을 썼을 때는 “multipart/form-data”를 써야함.
• accept-charset = “CHARSETLIST”
- 데이터를 전송 방을 서버에게 사용자가 입력하는 데이터의 언어
코드 목록을 알려준다. 두개이상의 코드를 쓸때 쉼표(,)로 구분.
• accept = “MIMETYPELIST”
- <input type = file>을 썼을 때, 서버가 받아들이는 파일의 종료를 제한
할 수 있음. 두개이상의 코드를 쓸때 쉼표(,)로 구분.
3
2. INPUT 태그
• <FORM> 태그는 <INPUT>태그를 실행시킨 후 실제적으로 적용하기 위
해서 METHOD 속성을 지원한다.
• 종료 태그 </input>이 없다.
<Input> 태그의 속성
•
•
•
•
•
•
•
•
•
Name=“문자열” : 이름부여, PHP에서 변수로 사용
Value=“문자열” : 초기값
size=숫자 : 폭설정
maxlength=숫자 : 사용자가 입력할 수 있는 최대 문자수
checked :체크박스나 radio에서 선택여부 초기화
src=URL : 단추로 사용될 그림파일
readonly : 읽기전용으로 되어 변경되니 않음. Tabindex를 갖지 않음
disabled : 사용자가 입력을 못하도록 한다.
tabindex = 숫자 : 탭키 이동 순서
4
◈ 텍스트 입력 양식
• 텍스트 박스로 문자열을 입력 받거나 출력하는 경우에 사용되는 기본 양식
<INPUT TYPE=text NAME="이름" SIZE=크기
MAXLENGTH=최대길이 VALUE="초기값">
-
TYPE : 디폴트 값은 "text“
NAME : 폼 변수 이름(변수 명)
SIZE : 텍스트 입력 창의 크기
MAXLENGTH : 입력가능 최대문자수
VALUE : 입력 창에 출력될 텍스트 초기값 (변수에 들어갈 값)
◈ 암호 입력 양식
• 암호를 넣는 텍스트 박스를 만듬. 문자를 입력하면 문자대신
“*”모양이 출력됨.
<INPUT TYPE=password NAME="이름" SIZE=크기
MAXLENGTH=최대길이 VALUE="초기값">
5
◈ 라디오 버튼 양식
• 같은 그룹내의 목록 중에서 하나의 항목만 선택할 수 있다.
<INPUT TYPE=radio NAME="이름" VALUE="초기값“ CHECKED>
- TYPE : radio
- NAME : NAME 속성이 다르면 다른 그룹의 radio로 처리됩니다.
그러므로 동일한 그룹의 radio 목록의 NAME속성의 [이름]은 동일(변수
명을 동일하게 처리 )해야 합니다.
- VALUE : 속성의 [초기값]은 각각 다르게 설정해야 한다.
- CHECKED : Checked 유무
◈ 체크 박스 양식
• 사용자에게 선택할 수 있는 목록들을 열거하여 목록 중 여러 개를 선택할
수 있게 해줌.
• radio와는 다르게 name값은 다르게 설정해야 함.
<INPUT TYPE=checkbox NAME="이름" VALUE="초기값“ CHECKED>
6
◈ Reset 버튼
• 사용자가 입력한 정보를 새로 다시 입력받을 수 있게 한다.
• form의 내용을 초기값으로 초기화
<INPUT TYPE=“reset" NAME="이름" VALUE=“문자열“>
- VALUE : reset 버튼에 나타나는 문자열
◈ Submit 버튼
• 데이터 보내기 버튼.
<INPUT TYPE=“submit" NAME="이름" VALUE=“문자열“>
7
◈ image Submit 버튼
• HTML 문서에서 폼 출력 방법을 버튼 대신 그림 사용.
• 이미지가 버튼 대용으로 쓰인다면 폼은 sub_x와 sub_y의 두 개의 변수가
추가되어 서버에 전송.-> 이때 두 변수의 값은 이미지에서 사용자가
클릭한 위치 정보를 담게 됨.
<input type=image src=“image.gif” name=“sub”>
<form method=“post” action=“image_sub.php”>
이름 : <input type=text name=“name”><br>
<input type=image src=“image.gif” name=“sub”>
</form>
8
◈ 숨겨진 입력 양식(Hidden)
• 사용자를 위해서 사용하는 것이 아니라 데이터 처리를 위해서 사용.
그렇기 때문에 브라우저에는 보이지 않고 내부적으로만 존재한다.
• 상태를 표시하거나 꼭 저장되어 있어야 할 부분을 숨겨진 입력 양식으로
내용을 보관한다.
<INPUT TYPE=“hidden" NAME="이름" VALUE=“문자열“>
◈ 여러줄 택스트 창
• 여러 라인에 문자열을 넣을 수 있는 메모장과 같이 사용하는 양식.
<TEXTAREA NAME ="이름" ROWS=열수 COLS =행수>
초기 출력할 문자열
</TEXTAREA>
9
◈ <SELECT> 태그
• 콤보 박스와 리스트박스를 만들 수 있게 해줌.
• SIZE를 설정하지 않았을 경우는 콤보 박스가되고,
1로 설정하면 리스트 박스가 됨
<SELECT NAME=“종류” SIZE=크기 MULTIPLE>
<OPTION VALUE= 옵션값 SELECTED>옵션 스트링
…..
</SELECT>
- NAME : 변수이름.
- SIZE : 선택된 옵션을 보여주는 창에 출력될 옵션의 개수.
- MULTIPLE : shift,ctrl키를 이용하여 여러 개의 항목을 다중 선택
-<OPTION> 속성의 VALUE : 이 옵션이 선택되었을 때 전달될 값.
-<OPTION> 속성의 SELECTED : selected 채크.
10
예제1)
<html>
<head><title>HTML 보기 : 폼태그 </title></head>
<body>
<b>폼태그의 예</b>
<hr>
<br>
<form method="POST" action=“/cgi-bin/insert.php">
이름: <input type="text" name="username"><p>
주소:<input type=“text" name=“address" ><p>
전화번호 :<input type=“text" name=“tel" ><p>
<input type=“submit” value=“보내기”><input type=“reset” value=“다시쓰기”><p>
</form>
</body>
</html>
11
GET / POST
• 클라이언트에서 서버로 데이터가 전달되는 방식
– GET 방식
•
•
•
•
•
•
•
•
데이터가 URL 끝에 key=value 형태로 전달된다.
여러 데이터가 전송될 때는 & 로 구분된다.
보안이 취약하다.
데이터 수에 제한이 있다. ( 255 자 )
기본 방식이다.
사용이 간편하다.
폼 태그가 아닌 직접 URL에 입력해서 전송도 가능하다.
ex) http//comnet.pcu.ac.kr/index.php?name=brown 과 같이
파일이름 다음에 "?"를 통해서 ?변수명=전달될값&변수명=전달될값 과
같은 식으로 전달하는 방식이다
– POST 방식
•
•
•
•
데이터가 전송 header에 숨겨져 넘어간다.
보안관련 문제발생이 적다.
데이터 수에 제한이 없다.
GET 방식보다 상대적으로 처리 속도가 떨어진다.
(1) Form문을 이용한 PHP사용
◈ 미리정의된 변수(PHP_SELF) 이용하기
: 자기 자신의 파일을 뜻하며 한 파일로 여러 기능을 하게 하는
문서를 만들 때 유용하게 쓰임.
Ex) 화일명 : form1.html
<html><body>
<form action=“<? echo $PHP_SELF ?>” method=post>
<input type=text name=info>
<input type=submit value=submit>
</form>
<br>
<? echo “폼을 이용해 전송된 값 : $info”; ?>
</body></html>
결과
화면
◈ form문을 이용한 php사용
Ex) 화일명 : form2.html
<html><body>
<form method=“post” action=“/cgi-bin/insert.php”>
<table border=1>
<tr><td>이름<td><input type=text name=“name”>
<tr>
<td>성별<td><input type=radio name=“sex” value=“남자”>남자
<input type=radio name=“sex” value=“여자”>여자
<tr>
<td>E-MAIL<td><input type=text name=“email”>
<tr>
<td>주소<td><input type=text name=“address” size=50>
<tr>
<td>자기소개<td><textarea name=“introduction” rows=7 cols=40></textarea>
</table> <p>
<input type=“submit” value=“확인”>
<input type=“reset” value=“다시작성”>
</form></body></html>
화일명 : insert.php
<?
echo “이름 : $name”. “<br>”;
echo “성별 : $sex”. “<br>”;
echo “E-MAIL : $email”. “<br>”;
echo “address : $address”. “<br>”;
echo “자기소개 : $introduction”
?>
(2) 변수 값을 전달
◈ form문에서 인수 전달 방식(1)
Ex) 화일명 : form3.html
<form method="POST" action=“insert.php?age=22&nicname=kk”>
이름: <input type="text" name="username"><p>
주소:<input type=“text" name=“address" ><p>
전화번호 :<input type=“text" name=“tel" ><p>
<input type=“submit” value=“보내기”><input type=“reset” value=“다시쓰
기”><p>
</form>
화일명 : insert.php
<? echo "이름 : $name"."<br>";
echo "주소 : $address"."<br>";
echo "전화번호 : $tel"."<br>";
echo "나이 : $age"."<br>";
echo "닉네임 : $nicname"; ?>
◈ form문에서 인수 전달 방식(2)
Ex) 화일명 : form4.html
<form method="POST" action="insert.php">
이름: <input type="text" name="username"><p>
주소:<input type="text" name="address" ><p>
전화번호 :<input type="text" name="tel" ><p>
<input type="hidden" name="age" value="22">
<input type="hidden" name="nicname" value="kk">
<input type="submit" value="보내기">
<input type="reset" value="다시쓰기"><p>
</form>
화일명 : insert.php
<? echo "이름 : $name"."<br>";
echo "주소 : $address"."<br>";
echo "전화번호 : $tel"."<br>";
echo "나이 : $age"."<br>";
echo "닉네임 : $nicname"; ?>
◈ 한 php 파일에서 다른 php파일로 변수 값을 전달
Ex) 화일명 : trans1.php
<?
echo “ <a href=trans3.php?id=3> 더하기 </a> ”;
// $id=3의 값을 trans3.php에 전달한다.
// trans3.php안에서 $id값은 3으로 된다.
?>
Ex) 화일명 : trans2.php
<?
echo “ <a href=trans3.php?id=3&name=lee&i=9> & 사용하기
</a> ”;
// 여러 값을 더 넘겨 주고 싶으면 &를 써야 한다.
?>
(3) 파일 업로드
Ex) 화일명 : upload.html
<form enctype="multipart/form-data" action="upload.php"
method=post>
<input type="hidden" name="MAX_FILE_SIZE"
value="10000000">
Send this file: <input name="userfile" type="file">
<input type="submit" VALUE="Send File">
</form>
• enctype은 꼭 “multipart/form-data”로 지정.
• MAX_FILE_SIZE : upload할 파일의 최대 크기를 지정.(단위 byte)
• 업로드가 성공적으로 되면 지정된 파일에는 다음과 같은 변수들이 정의되어
넘어 간다.
$userfile - 업로드된 파일 내용이 저장되어 있는 서버의 임시 파일명
(임시 디렉토리에 저장된 파일이름)
$userfile_name - 업로드한 시스템에서 사용하는 파일의 원래 이름
$userfile_size - byte단위의 Upload된 파일의 크기.
$userfile_type – browser에 인식된 업로드된 파일의 mime 형식.
화일명 : upload.php
<?
if( !$userfile_name ) {
echo ("file select error!!");
} else {
$copy_file = copy($userfile, 'upload/'.$userfile_name);
if(!$copy_file) {
echo ("file copy error");
} else {
echo ("업로드가 성공적으로 수행되었습니다.<BR>");
echo ("저장된 파일명(\$userfile_name) : $userfile_name"."<br>");
echo ("파일 크기(\$userfile_size) : $userfile_size"."<br>");
echo ("파일 타입(\$userfile_type) : $userfile_type"."<br>");
echo ("파일의 내용이 저장된 임시 파일명(\$userfile) : $userfile"."<br>");
}
}
?>
• upload라는 디렉토리는 퍼미션은 777 이여야 함.