본문 바로가기
Study/php

PHP] 회원가입 페이지 추가하기

by Answer Choi 2015. 10. 8.
반응형

예제 프로그램


지난 로그인/로그아웃 기능에 회원 가입기능을 추가했습니다.


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이 생성되어 있습니다.


반응형

인기글