반응형
지난 로그인/로그아웃 기능에 회원 가입기능을 추가했습니다.
PHP] 세션을 이용한 로그인/로그아웃 포스트 보러가기!!
물론 암호가 암호화되진 않고, 회원 정보도 아이디와 패스워드 뿐입니다.
그리고 사용자별로 table이 따로 존재하게 하였습니다.
무조건 로그인 페이지부터 시작하므로 로그인페이지에 database와 table을 만들도록 하였습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?php try{ $conn=new pdo('mysql:host=localhost','root','0157'); }catch(PDOException $e){ echo 'could not connect:'.$e->getMessage(); } $selDb=$conn->exec('use answerofgod'); if(!$selDb){ $createDB=$conn->exec('create database answerofgod'); $useDB=$conn->exec('use answerofgod'); $conn->exec('create table user( id int not null auto_increment, user text not null, pw text not null, constraint pk primary key(id) )'); } ?> | cs |
table은 회원정보용 table만 생성하고 회원 가입할때 회원별로 table을 생성합니다.
그리고 회원가입을 위한 버튼을 하나 만듭니다.
1 2 3 | <form action='regist.php' method='POST'> <input type='submit' value='REGIST'/> </form> | cs |
회원가입을 위한 regist.php입니다.
비밀번호 체크를 위해 입력칸이 하나 더 있습니다.
여기서 id와 pw그리고 pwchk 변수 3개가 regist_proc.php 로 전달됩니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | <?php session_start(); if(($_POST['id']!=null)&&($_POST['pw']!=null)&&($_POST['pwchk']!=null)){ if(($_POST['pw'])!=($_POST['pwchk'])){ $_SESSION['msg']='exactly input password'; header('Location: ./regist.php'); }else{ try{ $conn=new pdo('mysql:host=localhost;dbname=answerofgod','root','0157'); }catch(PDOException $e){ echo 'could not connect:'.$e->getMessage(); } $chkid=$conn->prepare('select user from user where user=:user'); $id=filter_input(INPUT_POST,'id'); $chkid->bindParam(':user',$id,PDO::PARAM_STR); $chkid->execute(); if($chkid->fetch(PDO::FETCH_ASSOC)){ $_SESSION['msg']='already exist id'; header('Location: ./regist.php'); }else{ $insert=$conn->prepare('insert into user (user,pw) value (:user,:pw)' ); $user=filter_input(INPUT_POST,'id'); $insert->bindParam(':user',$user,PDO::PARAM_STR); $pw=filter_input(INPUT_POST,'pw'); $insert->bindParam(':pw',$pw,PDO::PARAM_STR); $insert->execute(); $conn->exec('create table '.$_POST['id'].'( id int not null auto_increment, url text not null, description text null, constraint pk primary key(id) )'); $_SESSION['msg']='regist successfully try login!!'; header('Location: ./login.php'); } } }else{ $_SESSION['msg']='null id or pw'; header('Location: ./regist.php'); } ?> | cs |
Line 3~36 : 모든 항목이 정상적으로 입력된 경우이고,
Line 37~40 : 항목이 모두 작성되지 않아 이전 페이지로 이동합니다.
Line 4~6 : pw와 pwchk가 일치하지 않아 이전페이지로 이동합니다.
Line 8~16 : database에 접속을 하고 id가 가입되어 있는지를 확인합니다.
Line 17~19: 이미 있는 아이디라면 이전페이지로 이동합니다.
Line 20~34 : 없는 아이디이면 table을 만들어 db에 저장한 후 로그인페이지로 이동합니다.
서로 다른 아이디로 접속했을 경우입니다.
실제 DB를 보시면 서로 다른 table이 생성되어 있습니다.
반응형
'Study > php' 카테고리의 다른 글
PHP ] 간단한 PHP CHART (0) | 2015.10.14 |
---|---|
PHP TIP] 편리한 변수의 사용 (0) | 2015.10.13 |
PHP] 세션을 이용한 로그인/로그아웃 (4) | 2015.10.08 |
PHP] PDO익스텐션 이용하기( 간단한 예제) (2) | 2015.10.07 |
PHP] MySqli익스텐션 이용하기( 간단한 예제) (0) | 2015.10.07 |