반응형

게시판에 글을 쓰는것은 대부분 회원에게만 부여된 권한이다. 회원가입을 받아보자.

 

게시판에서 했던 글쓰기랑 비슷하다. 우선 테이블을 대충 만들어보자. 간단하게 만들고 후에 필요한것들을 추가할 것이다.

 

CREATE TABLE `members` (
  `mid` int(11) NOT NULL AUTO_INCREMENT,
  `userid` varchar(145) DEFAULT NULL,
  `email` varchar(245) DEFAULT NULL,
  `username` varchar(145) DEFAULT NULL, 

  `passwd` varchar(200) DEFAULT NULL,
  `regdate` datetime DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`mid`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;

 

테이블을 만들었으면 가입 화면을 아래와같이 만든다. 이번엔 member 라는 폴더를 만들고 그 안에 만들었다.

 

 

/member/signup.php

 

<!doctype html>
<html lang="en">
  <head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <!-- Bootstrap CSS -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script>

    <title>회원가입</title>
  </head>
  <body>
    <div class="col-md-8" style="margin:auto;padding:20px;">

        <form class="row g-3 needs-validation"  method="post" action="signup_ok.php">
        <div class="col-12">
            <label for="validationCustom01" class="form-label">이름</label>
            <input type="text" class="form-control" id="userame" name="username" placeholder="" required>
        </div>
        <div class="col-12">
            <label for="validationCustom02" class="form-label">아이디</label>
            <input type="text" class="form-control" id="userid" name="userid" placeholder="" required>
        </div>
        <div class="col-12">
            <label for="validationCustom02" class="form-label">비밀번호</label>
            <input type="password" class="form-control" id="passwd" name="passwd" placeholder="" required>
        </div>
        <div class="col-12">
            <label for="validationCustomUsername" class="form-label">이메일</label>
            <div class="input-group has-validation">
            <span class="input-group-text" id="inputGroupPrepend">@</span>
            <input type="email" class="form-control" id="email" name="email" placeholder="" required>
            </div>
        </div>
        
        <div class="col-12">
            <button class="btn btn-primary" type="submit">가입하기</button>
        </div>
        </form>
    
    </div>
</body>
</html>            

 

이렇게 만들고 저장한 후 /member/signup.php를 열어 확인해보자

 

http://localhost:8008/member/signup.php

 

localhost뒤에 8008이 있는 이유는 xampp에서 아파치를 설정할때 80으로 하지 않고 8008로 했기때문이다. 80은 다른 서비스에서 사용중이어서 80으로 하지 못했다. 보통은 80으로 하면 되니까 나처럼 8008은 쓰지 않아도 된다.

 

만약 80도 아니고 8008도 아니라면 스스로 정한 포트 번호를 넣어주면 된다.

 

이렇게 뜨면 된다. 이번엔 여기에 값을 입력해 디비에 입력해보자. 만들어 놓은 members 테이블에 입력할 것이다. 지금은 스크립트 처리는 전혀 하지 않았다. 그런건 나중에 해보자.

 

게시판에 글쓰기 할때처럼 form태그의 action에 들어간 파일명으로 파일을 만들자.

 

signup_ok.php

<?php
include $_SERVER["DOCUMENT_ROOT"]."/dbcon.php";

$userid=$_POST["userid"];
$username=$_POST["username"];
$email=$_POST["email"];
$passwd=$_POST["passwd"];
$passwd=hash('sha512',$passwd);

$sql="INSERT INTO members
        (userid, email, username, passwd)
        VALUES('".$userid."', '".$email."', '".$username."', '".$passwd."')";
$result=$mysqli->query($sql) or die($mysqli->error);

if($result){
    echo "<script>alert('가입을 환영합니다.');location.href='/index.php';</script>";
    exit;
}else{
    echo "<script>alert('회원가입에 실패했습니다.');history.back();</script>";
    exit;
}

?>

 

게시판 글쓰기 할때랑 똑같다. 대신 받는 변수가 달랐고 그걸 넣는 테이블이 달라졌다. 비밀번호는 암호화 했다.

 

이렇게 저장한 후 가입을 진행해보자.

 

이름과 아이디, 이메일등을 입력하고 가입하기 버튼을 클릭하면 환영 메세지가 나타난다. 그럼 성공!

 

디비에서 아래 쿼리로 입력된 값을 확인해본다.

 

select * from members;

 

개발하다 힘들면 눌러.

https://www.zzarbang.com

반응형

+ Recent posts