Chap 4.
앞서 회원가입 페이지에서 필요한 정보들을 입력받을 수 있도록 했습니다.
이제 그 정보들을 mysql 데이터베이스(이하 DB)에 저장하는 방법을 알아보겠습니다.
우선 DB에 정보들을 저장할 공간을 마련해 둬야겠지요.
회원 가입 정보들을 저장할 ap_member 라는 이름의 테이블을 만들고, 몇개의 필드들을 설정해 놓겠습니다.
phpMyAdmin 이라는 웹툴을 이용해서 DB에 테이블 생성 작업을 할 수 있습니다. 사용방법은 각자 찾아보시구요.
위 형태로 일단 간단하게 가봅시다.
signup.php 에서 form 에 사용되었던 값들과 ap_member 테이블의 필드와 연관성은 아래와 같습니다.
회원가입 폼 | ap_member 테이블의 필드 |
user_id |
id |
user_pw |
pw |
user_email |
email |
그럼, 이제 signup_check.php 를 작성해 봅시다.
php의 mysql 관련 함수들이 하나씩 나오기 시작할텐데요. 간단 사용예들은 PHP 카테고리에서 살펴볼 수 있습니다.
첫번째: php 가 mysql 에게 관련 작업을 시키려면 권한이 필요한데요, 거창하지만, 사용할 수 있는 DB로 접근할 수 있는 계정 정보가 필요하다는 말입니다.
www 디렉토리에 config.php 파일을 만들어서 계정 정보를 설정해 줍시다.
<?php |
위에서 작성한 config.php 는 DB 작업을 하려면 반드시 필요한 정보입니다. 여러 파일들에서 공통적으로 사용될 수 있지요. 작성하는 파일마다 매번 적어줄게 아니라, config.php 파일 하나로 만들어 주고, 필요하면 include() 함수를 이용해서 포함시키는 방법이 효율적이겠죠.
php.net 가서 mysql 관련 검색을 해보니, 이젠 mysqli 를 사용하라고 강력히 권장하는군요. 공부할게 늘었습니다. ㅎㅎ
php 는 mysqli 를 통해서 mysql 서버와 상호 작용을 합니다. 그러니까, 앞서 이야기한 DB 접근할 수 있는 계정 정보를 이용해서 서버와 연결한 후, 그 연결의 끈을 놓으면 안 되겠네요.
접속하는 방법 :
$mysqli = new mysqli($DB['host'], $DB['id'], $DB['pw'], $DB['db']);
연결의 끈이 $mysqli 입니다. 이름이 마음에 안 들면 원하시는대로 ㅎㅎ
이 변수를 이용해서 DB 관련 작업들을 수행하게 됩니다.
접속 끊는 방법 :
$mysqli->close();
signup_check.php 에 아래 내용이 우선 필요하겠군요.
<?php include_once ('../config.php'); $mysqli = new mysqli($DB['host'], $DB['id'], $DB['pw'], $DB['db']); if (mysqli_connect_error()) { exit('Connect Error (' . mysqli_connect_errno() . ') '. mysqli_connect_error()); } $mysqli->close(); ?> |
mysql 서버 접속시에 에러가 발생할 경우 메세지를 출력하고 실행을 중단하는 코드가 추가되었습니다.
signup.php 에서 form을 통해 전달된 값들을 signup_check.php 는 어떻게 얻어낼 수 있을까요?
웹에서 값을 전달하는 방법은 두가지가 있습니다.
앞서 signup.php 의 form에는 method='post' 라고 되어있지요. 브라우저의 주소창에 값이 표시되지않는 방법입니다.
그리고, 다른 방법은 get 방법입니다. 이 방법은 브라우저의 주소창에 전달되는 값들이 노출됩니다. 아래의 형태로 전달되는 겁니다.
http://mydomain.com/signup_check.php?user_id=myid
그럼, 전달 받은 쪽에서는 그 값을 이용하기 위해서 php 변수로 담기 위한 작업을 해야하겠지요?
POST 방식으로 전달된 값은 아래와 같이 값을 가져올 수 있습니다.
$user_id = $_POST['user_id'];
GET 방식으로 전달되었다면, 아래처럼 하면 됩니다.
$user_id = $_GET['user_id'];
전달받은 내용을 위의 방법처럼 하나하나 변환할 수도 있겠지만, 더 쉬운 방법이 있습니다.
다음의 함수를 이용해서 post 또는 get 방식으로 전달된 내용을 php 변수에 담아낼 수 있습니다.
extract($_POST);
extract($_GET);
각 배열의 인덱스명대로 변수가 생성됩니다.
우리의 예에서 extract($_POST); 를 실행하면, $user_id, $user_pass, $user_pass2, $user_email 이라는 변수가 자동으로 생기며 전달된 값을 가지고 있습니다.
signup_check.php 를 아래와 같이 작성하고 테스트를 해봅시다.
<?php include_once ('../config.php'); $mysqli = new mysqli($DB['host'], $DB['id'], $DB['pw'], $DB['db']); if (mysqli_connect_error()) { exit('Connect Error (' . mysqli_connect_errno() . ') '. mysqli_connect_error()); } extract($_POST); echo $user_id. '<br />'; echo $user_pass. '<br />'; echo $user_pass2. '<br />'; echo $user_email. '<br />'; $mysqli->close($mysqli); ?> |
signup.php
signup_check.php
값을 전달하고, 전달된 값을 변수로 뽑아낼 수 있게 되었습니다.
이제 전달된 값을 DB 에 저장을 해 봅시다.
mysqli 을 이용해서 저장을 위한 쿼리를 실행하면 됩니다.
SQL Query 도 내용이 방대하니, 나올 때마다 조금씩 살펴보겠습니다.
DB에 데이터를 입력할 때 사용하는 쿼리는 INSERT 입니다.
예>
INSERT INTO 테이블명 (속성1, 속성2,...) VALUES (값1, 값2, ...)
우리의 예에서는 아래처럼 됩니다.
$q = "INSERT INTO ap_member ( id, pw, email ) VALUES ( '$user_id', '$user_pass', '$user_email' )";
그리고, 이 쿼리를 실행시키는 방법은 아래와 같습니다.
$mysqli->query( $q);
<?php include_once ('../config.php'); $mysqli = new mysqli($DB['host'], $DB['id'], $DB['pw'], $DB['db']); if (mysqli_connect_error()) { exit('Connect Error (' . mysqli_connect_errno() . ') '. mysqli_connect_error()); } extract($_POST); echo $user_id. '<br />'; echo $user_pass. '<br />'; echo $user_pass2. '<br />'; echo $user_email. '<br />'; $q = "INSERT INTO ap_member ( id, pw, email ) VALUES ( '$user_id', '$user_pass', '$user_email' )"; $mysqli->query( $q); $mysqli->close(); ?> |
테스트를 해 봅시다.
signup.php
signup_check.php
phpMyAdmin 을 통해서 확인할 수 있습니다.
이상! ㅎㅎ
'PHP 게시판 만들기' 카테고리의 다른 글
6. 가입 정보 저장 후 완료 페이지로 전환하기 (13) | 2012.12.12 |
---|---|
5. 사용자 암호를 암호화 하기 (8) | 2012.12.11 |
3. 회원 가입 페이지 만들기 (6) | 2012.12.11 |
2. 홈페이지의 페이지는 어떻게 구성되나 (2) | 2012.12.10 |
1. PHP, mySql을 이용해서 홈페이지 만들기 (5) | 2012.12.10 |
댓글