공지가 있을때까지 구매요청/제휴/견적요청을 받지 않습니다.

5강. html에서 form 개념과 php, mysql 연관성 > PHP 강좌

본문 바로가기
사이트 내 전체검색

HOT - 펜션예약솔루션 - 그누보드5

HOT - 중고차매매솔루션 - 그누보드5

HOT - 중고차매매솔루션 - 그누보드4

HOT - 펜션예약솔루션 - 그누보드4

NEW - 인터넷뉴스 솔루션 - 그누보드5

계좌정보

  • 국민 : 028201-01-019932
  • 대구 : 068-07-021683-8
  •  
  • 예금주 : 림소프트/김상림
  •  

파트너쉽

PHP 강좌

5강. html에서 form 개념과 php, mysql 연관성

페이지 정보

작성자 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일12-02-27 05:14 조회4,579회 댓글3건

본문

html에서 table 태그는 기본으로, 그리고 요즘 웹2.0 시대에 div 코딩은 기본으로, 갖혀야 할 부분입니다.

그리고, 시대 변함과 상관없는 부분이 html 의 form 과 php를 이용한 mysql db에 저장하는 것들이라 할수 있겠습니다. 또 어떻게 변할지 모르지만 브라우져가 워낙에 많은지라, 잠정결론내리고 진행하겠습니다.


php만으로 브라우져 화면에 뭔가를 뿌리는 것에는 한계가 있습니다.

그래서 html과 javascript를 적절히 사용하여야 하는데요, php는 변수값이나 결과값을 모양새있는 html 영역에 뿌려주는 역할을 합니다. 적절하지 못할 경우 경고나 메세지를 친절하게 뿌려주거나 할때 javascript를 사용합니다. css 는 php보다 html 영역이지만, php 프로그래머라고 무시할수는 없는 부분인것은 확실합니다.

어떻게 보면 인건비 역할을 어느정도 해야한다는 샘이기도 합니다. 앞서 이야기했듯이, 화면에 뿌리는데 한계도 있고 디자이너한테 넘겨받아 작업하거나 작업해서 넘겨주거나 해야하기 때문입니다.

본격적으로 진행하기 앞서, form은 무엇인가 하는 부분에 대해 이야기해보겠습니다.

폼잡고있네라고 이야기를 들어본적 있을겁니다. 그런것과 비슷하게 브라우져 상에서 php든 asp든 데이터베이스로 넘기기 전까지의 html의 유일한 수단입니다. 이해되시나요?

로그인, 회원가입, 각종 신청서, 등록문서 등등 모든 것들은 form 태그로 이루어져 있습니다.

거기에 적절히 1차필터 2차필터 3차필터 등 기본적인 보안이 들어가고 php같은 서버프로그램을 통해 mysql같은 데이터베이스에 전달이 됩니다.

### form.php ###
<form method="POST" action="ok.php" name="form_name">
<input name="name" size="12">
<input type="submit" value"작성">
</form>

### ok.php ###
<?php

$name=addslashes($_POST["name"]);

mysql_query("insert into table_name set fild_name='$name'") or die(mysql_error());

$idx=mysql_insert_id();

echo "<script>alert('등록됐습니다.'); location.href='view.php?idx=$idx'</script>";
?>

### view.php ###
//넘어온 $idx 값이 1이라면

$member=mysql_fetch_array(mysql_query("select * from table_name where idx='1'"));//idx='$idx'

<div><?=$idx?>번에 등록된 이름은 <?=stripslashes($member[name])?>입니다</div>

그리고 앞서 잠깐 언급했던
php는 <?php , <? 로 시작합니다만, <?로 많이 사용을 합니다. <?php 는 xml에서 사용시 위한 것으로 일반적으로는 생략가능합니다. 그리고 간략화 할수 있는 부분은 <?echo $a;?> 는 <?=$a?> 로 표현할수 있습니다. 습관적으로 정석대로 하면 좋겠지만, 혹독한 사회에 굳이 정식을 따져간다고 누가 알아주는 이 없을겁니다. 한편으로 무방하다고 보는 부분이기때문에 그렇다는 것만 알고 편하게 사용하자는데 표를 두겠습니다. 대신, 성의있게? 코딩 하는것이 좋습니다.

이제 위 부분에 대해 간략적으로 설명을 해보겠습니다.

위에 언급을 했다시피 php가 html,javascript 와 엮어져? 있습니다. 위 예제는 간단하지만 아주 많은 개념들이 들어가있습니다.

먼저, form으로 데이터를 넘길때의 방식부터 보면,

method라고 POST , GET과 2가지입니다. 이 게시판 상단에 보시면 php?bo_table=study 라고 되어있습니다. bo_table이 변수명이고 study가 값이 되겠습니다. 상단 주소줄에 ? 이하 이와같은 형식으로 바로 보여지는 형태가 GET형태입니다. action은 데이터가 넘겨 받을 php나 asp주소 경로입니다.

넘겨받는 다는 의미는 변수와 값을 넘겨 받는 다는 뜻이고, form에서 변수와 값은 위로 예를 들면 "name"이 변수명이 되고, 홍길동이라 입력했으면 "홍길동"이 변수값이 됩니다.

ok.php 에서 변수와 값이 넘어오면 $_POST라는 전역 배열변수에 담겨져 $name이라는 변수에 다시 담아, query문을 사용하여 데이터베이스에 저장을 합니다.

mysql_insert_id()는 바로 최근에 새로 등록된(insert into) row의 고유키값을 의미합니다. mysql table 생성시 생성한 auto_increament 된 필드에 저장됩니다. 절대 중복되지 않는 차곡차곡 쌓이는 값이라는 것이고 그 값이 보통 게시판의 경우 글의 번호가 됩니다. 그누보드 경우 wr_id 를 사용합니다.

alert 로 멘트를 띄우고 view 할수있게 했습니다.


view.php에서 사용된 mysql 문은 앞서 강의에 있었지요. 1 rows 를 배열로 가져오게 됩니다.

"1번에 등록된 이름은 홍길동입니다."


ok.php 에서 addslashes php함수는 변수값(입력값)에 일부 특수문자열이 포함될경우 백슬러쉬를 붙이는 역할을 합니다. 왜냐면 mysql 은 저장될 값의 문자열중에 일부 특수문자열이 포함되면 포함된 이하문자열(글)들은 인식을 못해 cut되어 짤리게 됩니다. 그 특수 문자열들은 아래와 같습니다.

^ . [ ] $ ( ) | * + ? { } \

입력값들 위 애들이 포함되면 백슬래쉬를 문자앞에 포함해야 합니다. 예: rimsoft\.co\.kr

이렇게 입력된 백슬래쉬 것들은 html view에서는 제거해야 겠지요. stripslashes()함수입니다.

슬래쉬를 벗긴다?로 이해하시면 될겁니다.

생각해보면 일일이 슬래쉬붙이고 떼고 하는 것도 반복적일이라 힘들겁니다. 그래서 이런경우 아래와같이 편리하게 사용할수 있겠습니다.

입,출력시 array_map() 함수를 이용할수도 있습니다.
$_POST=array_map('addslashes', $_POST);
$_POST=array_map('stripslashes', $_POST);

입력시 php에서는 다르게 지원해주는 함수가 있습니다.  get_magic_quotes_gpc() 인데, 이것은 php.ini 에서 magic_quotes_gpc= on, off 에 따라 인식되지만 보안상 이유로 off를 권장하고 다소 불편해도 그나마 위 array_map()함수를 이용하는 것이 나은 방법이라 생각됩니다.

너무 복잡하게 들어가면 실증이 날수도 있으니, 간단하게 위 특수문자에는 백슬래쉬가 들어가고 노출시에는 제거한다.(escape,unescape) 이렇게 이해하시면 될겁니다.

일단, 여기까지 볼때 위 예제는 설명이 된듯 하네요.


제대로 된 예제는 안되지만, 중요한 부분은 나름 이야기한 듯합니다.

이번 form관련해서 view까지 알아봤습니다만, 관련된 것들 좀 더 붙여 이야기하자면 엄청날정도의 양일겁니다. 즉흥적으로 생각나는데로 작성은 했습니다만, 조금 부족한 듯도 하고 뒤 강좌에 이어질때 중간중간 살을 좀더 붙여보도록 하겠습니다.

사실 내용이 충실하면 좋기야 하겠지만, 정작 알고자하는 입장에서는 무엇보다 스스로의 자세가 중요하니 꼭 명심하시고 이번 강좌 이해못해도 좋으니 개념을 잘 파악하시길 꼭 권장드립니다.

주중에 올릴래다 부담될거 미리 작성해 봤습니다.

그럼 다음 강좌에 뵙겠습니다^^

[수정]
첫번째 소스에서 submit 버튼 추가했습니다.

댓글목록

Total 18건 1 페이지
PHP 강좌 목록
번호 제목 글쓴이 날짜 조회
공지 강좌 들어가기전에.. 댓글6 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 02-11 3188
17 php 초급에서 반드시 짜 보아야 할 것들 댓글1 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 07-09 3703
16 알고리즘과 경우의 수 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 06-02 3403
15 그누보드 게시판 테이블 그리고 댓글 댓글2 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 05-02 6862
14 웹표준? 댓글2 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 04-13 2962
13 특강. [그누보드를 알자4] 그누보드 스킨(board-list.skin.php) 댓글2 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 04-07 7913
12 특강. [그누보드를 알자3] 그누보드 스킨(board-write.skin.php) 댓글2 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 03-21 24929
11 특강. [그누보드를 알자2] 그누보드 스킨 댓글3 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 03-14 8679
10 특강. [그누보드를 알자1] 그누보드 루트파일들 댓글3 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 03-08 7591
9 7강. 썸네일 댓글5 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 03-07 3378
8 6강. 중간 마무리 댓글2 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 03-03 2357
열람중 5강. html에서 form 개념과 php, mysql 연관성 댓글3 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 02-27 4580
6 4강. [문법] 반복문 for, while 댓글7 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 02-25 3317
5 [그누보드관련] 쉬는 타임 댓글3 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 02-21 3416
4 3강. [문법] 조건문 if, else, elseif, switch 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 02-18 19447
게시물 검색

접속자집계

오늘
53
어제
130
최대
425
전체
364,727
그누보드5

림소프트 / 515-08-36933 / 제2014-경북경산-00079 / 양명주 / ifnelse@gmail.com
© Copyright rimsoft.co.kr . All Rights Reserved.

댓글이 달렸습니다.

모바일 버전으로 보기