이번에는 DB 연동을 통해 간단한 회원가입 페이지를 만들어보겠습니다
우선 회원가입 및 로그인과 관련된 데이터들을 저장할 데이터 베이스를 만들어야 합니다
저는 login
이라는 데이터베이스를 만들겠습니다
CREATE DATABASE login DEFAULT CHARACTER SET UTF8;
한글도 처리할 수 있도록 UTF8 기반의 데이터베이스를 생성했습니다
데이터베이스를 만들었으니 이제 데이터베이스 안에 테이블을 만들어 줘야겠죠?
계정정보를 저장할 테이블을 만들어야 하니 이름이 account
인 테이블을 생성해 보겠습니다
그럼 이제 이 테이블에 어떤 데이터를 저장할 것인지, 그 데이터의 형식은 무엇인지 정해야 합니다
저는 아이디, 비밀번호, 이름, 전화번호, 이메일 주소를 저장하고, 데이터 형식은 모두 문자열로 설정하려고 합니다
그리고 각 데이터들을 고유하게 구분지어 줄 수 있는 번호를 각 데이터에 할당하겠습니다
CREATE TABLE student_score (
id INT(20) PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(32) NOT NULL,
password VARCHAR(32) NOT NULL,
name VARCHAR(32) NOT NULL,
phone VARCHAR(20) NOT NULL,
email VARCHAR(50) NOT NULL
);
데이터베이스는 이제 다 준비되었으니, 회원가입 페이지만 만들면 됩니다
우선 회원가입 시 아이디, 비밀번호, 이름, 전화번호, 이메일을 받기로 했으니 해당 정보를 받을 폼을 작성합니다
<form action="" method="post">
<div class="input-group">
<label for="userId">아이디</label>
<input type="text" id="username" name="username" placeholder="아이디 입력" required>
</div>
<div class="input-group">
<label for="password">비밀번호</label>
<input type="password" id="password" name="password" placeholder="비밀번호 입력" required>
</div>
<div class="input-group">
<label for="name">이름</label>
<input type="text" id="name" name="name" placeholder="이름 입력" required>
</div>
<div class="input-group">
<label for="phone">전화번호</label>
<input type="tel" id="phone" name="phone" placeholder="전화번호 입력" required>
</div>
<div class="input-group">
<label for="email">이메일</label>
<input type="email" id="email" name="email" placeholder="이메일 입력" required>
</div>
<button type="submit">회원가입</button>
</form>
저는 입력받은 데이터를 같은 페이지 내에서 처리하는 로직을 작성할 예정이라 action = “”
으로 작성하였습니다
또, 계정 정보는 URL로 노출되면 안되니까 method = “POST”
로 설정합니다
각각의 데이터는 모두 꼭 필요하므로 required를 설정하여 꼭 입력받도록 하였습니다
이제 DB에 입력받은 정보를 저장하여 실제로 회원가입을 진행하는 로직을 PHP로 작성합니다
# 상수로 DB 주소, 아이디, 비밀번호, DB 이름 선언
define('DB_SERVER','localhost');
define('DB_USERNAME','admin');
define('DB_PASSWORD','admin1234');
define('DB_NAME','login');
#DB 연결
$db_conn = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);
$username = $_POST['username'];
$password = $_POST['password'];
$name = $_POST['name'];
$phone = $_POST['phone'];
$email = $_POST['email'];
if ($username != "" and $password != "" and $name != "" and $phone != "" and $email != ""){
$sql = "INSERT INTO account VALUES (NULL, '".$username."','".$password."','".$name."','".$phone."','".$email."');";
$result = mysqli_query($db_conn, $sql);
}
PHP 내에서 조건에 따라 html 요소를 출력하고 싶다면 ,우선 html 요소 전에 PHP 구간을 닫은 뒤 html을 작성하고, 이어지는 PHP문을 작성할 때 다시 PHP 구간을 열면 됩니다
<?php
# 성공메세지 출력
if($result) { ?>
<!-- 이제 회원가입 완료 문구 띄워주면 됨(리다이렉션 하던 지 등등)-->
<div class="success-message">
회원가입 완료
</div>
<?php
} else { ?> # 실패메세지 출력
<div class="error-message">
아이디 또는 비밀번호를 입력해주세요
</div>
<?php
}
?>
위의 내용을 종합하면 전체 코드는 아래와 같습니다
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>회원가입 페이지</title>
<!-- Google Fonts 사용 -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@100..900&display=swap" rel="stylesheet">
<!-- 외부 CSS 파일 연결 -->
<link rel="stylesheet" href="signUp.css">
</head>
<body>
<div class="login-container">
<h2>회원가입</h2>
<form action="" method="post">
<div class="input-group">
<label for="userId">아이디</label>
<input type="text" id="username" name="username" placeholder="아이디 입력" required>
</div>
<div class="input-group">
<label for="password">비밀번호</label>
<input type="password" id="password" name="password" placeholder="비밀번호 입력" required>
</div>
<div class="input-group">
<label for="name">이름</label>
<input type="text" id="name" name="name" placeholder="이름 입력" required>
</div>
<div class="input-group">
<label for="phone">전화번호</label>
<input type="tel" id="phone" name="phone" placeholder="전화번호 입력" required>
</div>
<div class="input-group">
<label for="email">이메일</label>
<input type="email" id="email" name="email" placeholder="이메일 입력" required>
</div>
<button type="submit">회원가입</button>
</form>
<?php
# 상수로 DB 주소, 아이디, 비밀번호, DB 이름 선언
define('DB_SERVER','localhost');
define('DB_USERNAME','admin');
define('DB_PASSWORD','admin1234');
define('DB_NAME','login');
#DB 연결
$db_conn = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);
$username = $_POST['username'];
$password = $_POST['password'];
$name = $_POST['name'];
$phone = $_POST['phone'];
$email = $_POST['email'];
if ($username != "" and $password != "" and $name != "" and $phone != "" and $email != ""){
$sql = "INSERT INTO account VALUES (NULL, '".$username."','".$password."','".$name."','".$phone."','".$email."');";
$result = mysqli_query($db_conn, $sql);
if($result) {
?>
<!-- 이제 회원가입 완료 문구 띄워주면 됨(리다이렉션 하던 지 등등)-->
<div class="success-message">
회원가입 완료
</div>
<?php
}
}
?>
</div>
</body>
</html>