PHP
DB 연동 회원가입
회원가입 페이지를 만들고 기입한 정보를 DB에 넣어보기
저번 강의때 post방식으로 입력한 정보를 다른 페이지에서 출력하는 연습을 했었는데요.
회원가입 페이지를 만들고 그 회원가입 폼에 기입한정보를 DB에 입력되게끔 만들어 봅시다.
그럼 DB안에 회원정보를 저장할 테이블을 만듭니다.
DB의 이름은 myService로 하고 테이블의 이름은 account_info로 하겠습니다.
테이블의 필드는 아이디, 비밀번호, 이름, 주소, 성별, 생년월일, 이메일, 직업으로 하겠습니다.
요즘은 회원가입 정보가 간소화 되어있죠. 하지만 이것은 연습용이기 때문에 이것 저것 정보를 넣어 보겠습니다.
MySQL에 접속해서 myService 데이터베이스를 생성 하고 아래의 테이블 생성문을 이용해서 테이블을 만들어 줍니다.
comment는 해당 필드가 무엇을 하는 역할인지 설명문을 넣습니다. 넣지 않아도 무관합니다.
not null은 null값을 즉 빈값인 상태를 허용하지 않는것입니다 default null의 경우 값이 들어오지 않으면 기본으로 null값이 들어갑니다.
default로 다른값을 넣으면 그 값이 기본값이 됩니다.
charset=utf8은 중요합니다. 지정해 주지 않으면 라틴계열 인코딩이 설정됩니다.
한글이 깨지기 때문에 꼭 유니코드로 해주는게 좋습니다.
이것을 모를경우 심하면 몇일 시간낭비 할 수 있습니다.
CREATE TABLE `account_info` ( `memberSeq` int(11) NOT NULL AUTO_INCREMENT, `id` varchar(30) NOT NULL COMMENT '회원 아이디', `pwd` varchar(20) NOT NULL COMMENT '회원 비밀번호', `name` varchar(10) NOT NULL COMMENT '회원 이름', `addr` varchar(80) DEFAULT NULL COMMENT '회원 주소', `sex` varchar(3) NOT NULL COMMENT '회원 성별', `birthDay` int(8) DEFAULT NULL COMMENT '회원 생년월일', `email` varchar(20) DEFAULT NULL COMMENT '회원 메일 주소', PRIMARY KEY (`memberSeq`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
아래는 정보를 넣을 폼 소스 입니다 input태그에 값을 입력할 페이지 입니다.
우리는 아래와 같은 페이지로 많은 사이트의 회원가입을 해왔습니다.
아래 파일명의 이름을 signUp.php로 저장합니다. 저는 htdocs폴더에 join이라는 폴더를 만들어서 진행하겠습니다.
htdocs/join/signUp.php
<doctype html> <html> <head> <title>sign up page</title> </head> <body> <form name="join" method="post" action="memberSave.php"> <h1>input your information</h1> <table border="1"> <tr> <td>ID</td> <td><input type="text" size="30" name="id"></td> </tr> <tr> <td>Password</td> <td><input type="password" size="30" name="pwd"></td> </tr> <tr> <td>Confirm Password</td> <td><input type="password" size="30" name="pwd2"></td> </tr> <tr> <td>name</td> <td><input type="text" size="12" maxlength="10" name="name"></td> </tr> <tr> <td>address</td> <td><input type="text" size="40" name="addr"></td> </tr> <tr> <td>sex</td> <td><input type="text" size="6" maxlength="2" name="sex"></td> </tr> <tr> <td>birth day</td> <td><input type="text" size="6" maxlength="8" name="birthDay"></td> </tr> <tr> <td>e-mail</td> <td><input type="text" size="30" name="email"></td> </tr> </table> <input type=submit value="submit"><input type=reset value="rewrite"> </form> </body> </html>
결과는 바로 아래에서 확인할 수 있습니다.
실행을 하게 되면 아래의 회원가입 양식이 출력됩니다. 값음 임의의 값을 입력 하면 됩니다.
폼태그에 action="memberSave.php"을 우리는 입력했습니다.
우리가 회원가입 폼에서 값들을 입력하면 그 값들은 POST방식으로 memberSave.php로 전달됩니다.
submit버튼을 누르면 memberSave.php로 이동을 합니다. 하지만 없는 페이지로 나오겠죠? 당연히 그 다음 페이지가 작성되어있지 않기 때문이다.
위에서 적은 내용들이 데이터베이스로 저장될 수 있도록 memberSave.php파일을 생성해봅시다.
htdocs/join/memberSave.php
<?php $host = 'localhost'; $user = 'root'; $pw = 'root'; $dbName = 'myService'; $mysqli = new mysqli($host, $user, $pw, $dbName); $id=$_POST['id']; $password=md5($_POST['pwd']); $password2=$_POST['pwd2']; $name=$_POST['name']; $address=$_POST['addr']; $sex=$_POST['sex']; $birthDay=$_POST['birthDay']; $email=$_POST['email']; $sql = "insert into account_info (id, pwd, name, addr, sex, birthDay, email)"; $sql = $sql. "values('$id','$password','$name','$address','$sex','$birthDay','$email')"; if($mysqli->query($sql)){ echo 'success inserting'; }else{ echo 'fail to insert sql'; } ?>
상단에는 데이터베이스 접속 정보를 적었습니다.
사실 다른 파일에 저장을 디비 접속 정보를 저장하고 필요할 때 include 명령문으로 불러와야 하지만 지금은 맛보기 라서 이렇게 합니다.
$password=md5($_POST['pwd']); 비밀번호를 md5라는 함수로 감싸줍니다. 데이터베이스에 회원분들의 비밀번호가 그대로 들어가면 큰일납니다.
그렇기 때문에 md5라는 암호화 함수를 이용하여 암호화 하여 넣어줍니다.
이렇게 하면 관리자도 모르는 방법으로 안전하겠죠?
이렇게 회원정보를 데이터베이스에 넣어보는 것 까지 해봤습니다.
지금은 맛보기이고 다음에 프로젝트로 회원가입 및 로그인 기능을 제대로 해보는걸로 합시다.
아참! 비밀번호와 비밀번호 확인 이렇게 비밀번호 값을 2개 받았죠? 원래는 2개가 일치하는지 확인하는 소스도 있어야 합니다만,
다음에 하기로 하고 패스했습니다.
아무튼 이렇게 디비에 회원정보 넣는 방법을 알아보았네요... 다음은 파일업로드 하고 파일 열고 등등에 대해서 공부해 봅시다.
//=$langList['bottomThankyou'][$langMode]?>