회원가입을 할 때
ID 중복 검사 기능까지 넣겠습니다!
즉 ID, PW를 만들면 lOGIN_INFO 데이터베이스에 들어가지고
만들 때 ID 중복 검사까지 해주는 것까지 하겠습니다!
최종 코드는 아래에다가 적겠습니다.
.
.
.
.
우선 저는 join.php 회원가입하는 페이지를 만들겠습니다.
#sudo touch join.php
그리고 저는 로그인창에 회원가입 하는 버튼 새로 만들겠습니다.
이제 join.php 코드를 짜는데 label 함수 이용해서 input 앞에 뭘 적어야 되는지 적겠습니다!
그리고 id, pw 칸 따로 만들고 로그인화면으로 돌아가는 코드까지 짜겠습니다.
누르면 process_join.php(회원가입 해주는 용)로 적은 id와 pw를 POST방식으로 보내겠습니다.
로그인 창에서 거의 베껴 왔습니다!
회원가입 과정을 하는 용도로 process_join.php 파일을 만들겠습니다!
#sudo touch process_join.php
만든 사진은 이제 생략하겠습니다!
그리고 process_join.php 작성을 하겠습니다!
처음에 DB_INFO 정보랑 session 시작하고 $conn에 데이터베이스 연결하겠습니다
그리고 mysqli_real_escape_string으로 sql문으로 장난질(sql 인젝션 공격) 하는 걸 막겠습니다.
$check_id 와 result_id는 중복 ID 찾기 위한 코드입니다!
그리고 if else 문으로 중복 있으면 join_error 세션 통해 메시지 전달하겠습니다
$sql은 id와 pw을 데이터베이스에 넣는 sql문입니다!
마지막 란에 if else로 sql문 실행하게 했습니다.
그리고 이 과정 페이지는 보여줄 이유가 없죠! 그러니 마지막에 exit() 로 닫게 했습니다.
한번 실행해보겠습니다!
로그인 화면에 회원가입 버튼 눌러보겠습니다.
ID: rerange 적고 보내보겠습니다
그리고 새로운 아이디로 작성해 보겠습니다!
ID:rerange3
이제 잘 들어갔는지 phpmyadmin통해 확인해보겠습니다.
좋습니다 이렇게 ID 중복검사, 회원가입해 주는 기능까지! 코딩을 마치겠습니다.
.
.
.
.
여기서 질문이 있겠죠!
ID 중복 검사하는 버튼 만들어서 join페이지에 적은 글씨는 안 없어지게 못하나요?
가능합니다! 근데 새로운 함수를 알아야 합니다.
AJAX 요청이라는 기능입니다. 이 함수는 자바스크립트를 이용해야만 하고요.
이 함수는 웹 서버와 비동기적으로 통신하면서 ID 중복 검사를 수행하고
결과를 웹페이지에 동적으로 업데이트하는 방식이라고 합니다!
그러니깐 서버에 잠깐 접속해서 확인만 하고 나온 결과를 웹페이지에 추가해주는 것입니다.
이 기능은 다음에 구현하도록 하겠습니다! 이 기능 넣으면 복잡해지기 때문이죠!
.
.
.
.
.
.
글을 마치겠습니다 감사합니다!
-join.php
<!DOCTYPE html>
<html>
<head>
<title>회원가입</title>
</head>
<body>
<h1>회원가입</h1>
<form action="process_join.php" method="POST">
<label>ID:</label>
<input type="text" name="id"><br><br> <!--id 작성 -->
<label>비밀번호:</label>
<input type="password" name="pw"><br><br> <!--pw 작성 -->
<input type="submit" value="회원가입">
</form>
<form action="login.php" method="POST">
<p><input type="submit" value="로그인하러 가기"></p> <!--로그인페이지로 -->
</form>
<p>
<?php session_start();
if (isset($_SESSION['join_error'])) {
echo $_SESSION['join_error'];
unset($_SESSION['join_error']);
}
?>
</p>
</body>
</html>
-process_join.php
<?php
include 'DB_INFO.php'; //데이터 베이스 정보
session_start(); //세션 시작
//데이터베이스 연결
$conn = mysqli_connect($host,$username,$password,$dbname);
//데이터베이스 오류시 종료
if(mysqli_connect_errno()) {
die("데이터 베이스 오류: ". mysqli_connect_error());
}
//POST로 전달된 정보 받기
$login_id = mysqli_real_escape_string($conn,$_POST['id']);
$login_pw = mysqli_real_escape_string($conn,$_POST['pw']);
//ID 중복 검사용 sql문
$check_id = "SELECT id FROM LOGIN_INFO WHERE id='$login_id' ";
//중복 검사 sql문 실행
$result_id = mysqli_query($conn, $check_id);
if(mysqli_num_rows($result_id) > 0 ) {
//중복이 있을때
$_SESSION['join_error'] = '아이디가 중복입니다!';
header("Location: join.php");
} else {
//중복이 아닐때
//새로운 사용자를 데이터베이스에 삽입문
$sql = "INSERT INTO LOGIN_INFO (id, pw)
VALUES ('$login_id','$login_pw')";
//sql문 실행
if(mysqli_query($conn,$sql)) {
$_SESSION['join_error'] = '회원가입이 완료되었습니다!';
header("Location: join.php");
} else {
$_SESSION['join_error'] = '회원가입 오류가 발생하였습니다.';
header("Location: join.php");
}
}
//회원가입 후 닫기
exit();
?>
-login.php
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>HAPPY HACKING!</title>
</head>
<body>
<h1>Login</h1>
<form action="process_login.php" method="POST">
<p><input type="text" name="id" placeholder="ID입력"></p>
<p><input type="text" name="pw" placeholder="PW입력"></p>
<p><input type="submit" value="로그인하기"></p>
</form>
<form action="join.php">
<p><input type="submit" value="회원가입"></p>
</form>
<p>
<?php session_start();
if (isset($_SESSION['login_error'])) {
echo $_SESSION['login_error'];
unset($_SESSION['login_error']);
}
?>
</p>
</body>
</html>
'개발과제' 카테고리의 다른 글
[노말틱 모의 해킹 취업반 4주차 개발과제 (2/2)] 회원가입 만들기 (0) | 2023.04.11 |
---|---|
[노말틱 모의 해킹 취업반 4주차 개발과제 (1.5/2)] 회원가입 만들기, env파일 (0) | 2023.04.10 |
[노말틱 모의 해킹 취업반 2주차 개발과제 (3)] 로그아웃 만들기 (0) | 2023.04.06 |
[노말틱 모의 해킹 취업반 2주차 개발과제 (2)] 메인 페이지 만들어두기 (0) | 2023.04.05 |
[노말틱 모의 해킹 취업반 2주차 개발과제 (1)] 로그인 기능 하는 페이지 만들기 (0) | 2023.04.04 |