일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 스택
- 두근두근 자료구조
- 미로 탐색 알고리즘
- level13
- 큐
- ftz level13
- 파일 시스템
- 암호수학
- SWiFT
- Stack
- 재귀
- 파이썬
- web
- 자료구조
- pwnable.kr
- HTML
- LoB
- ftz
- windosw 문자열
- OSI
- C
- 시간복잡도
- System
- PHP
- Java
- windosws wbcs
- 백준
- War Game
- c언어
- 정렬 알고리즘
Archives
- Today
- Total
나의 기록, 현진록
[Web] PHP 로그인/로그아웃/회원가입 본문
반응형
MySQL DB를 연동하여 HTML 및 PHP 세션을 이용하여 로그인/로그아웃/회원가입 페이지 구현
main.php
1 2 3 4 5 6 7 8 9 10 11 12 | <?php session_start(); if(!isset($_SESSION['userid'])) //세션이 존재하지 않을 때 { header ('Location: ./login.html'); } echo "홈(로그인 성공)"; echo "<a href=logout.php>로그아웃</a>"; ?> | cs |
세션 변수의 값이 없다면(=로그인 상태가 아니라면) 로그인 페이지로 이동한다.
세션 변수가 존재한다면 로그인 성공 메시지 출력과 로그아웃 링크 생성
login.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <html> <head> <title>login page</title> <meta charset="utf-8"> </head> <body> <form method="post" action="/login_check.php"> <div> <label for="id">ID </label> <input type="text" name="id"/> </div> <div> <label for="pw">PW </label> <input type="text" name="pw"/> </div> <div class="button"> <button type="submit"> login </button> </div> </form> <button onclick="location.href='signUp.html'"> sign up </button> </body> </html> | cs |
회원 정보가 이미 등록되어 있다면 ID, PW를 입력한 후 login 버튼 클릭 후 login_check
회원 정보가 등록되어 있지 않다면 sign up 버튼 클릭 후 회원가입 페이지로 이동
singUp.html
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 | <html> <head> <title> Sign Up </title> <meta charset="utf-8"> </head> <body> <form action = "./signUp.php" method="post"> <div> <label for="id"> ID </label> <input type="text" name="id"/> </div> <div> <label for="pw"> PW </label> <input type="text" name="pw"/> </div> <div> <label for="pwc"> pwc </label> <input type="text" name="pwc"/> </div> <div> <label for="name"> Name </label> <input type="text" name="name"/> </div> <div> <label for="email"> E-mail </label> <input type="text" name="email"/> </div> <div class="button"> <input type="submit" value="submit"> </div> </form> </body> </html> | cs |
회원 정보 입력 후 버튼 클릭 시 signUp.php로 이동
signUp.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 | <?php $id=$_POST['id']; $pw=$_POST['pw']; $pwc=$_POST['pwc']; $name=$_POST['name']; $email=$_POST['email']; if($pw!=$pwc) //비밀번호와 비밀번호 확인 문자열이 맞지 않을 경우 { echo "비밀번호와 비밀번호 확인이 서로 다릅니다."; echo "<a href=signUp.html>back page</a>"; exit(); } if($id==NULL || $pw==NULL || $name==NULL || $email==NULL) // { echo "빈 칸을 모두 채워주세요"; echo "<a href=signUp.html>back page</a>"; exit(); } $mysqli=mysqli_connect("localhost","root","123456789","test2"); $check="SELECT *from user_info WHERE userid='$id'"; $result=$mysqli->query($check); if($result->num_rows==1) { echo "중복된 id입니다."; echo "<a href=signUp.html>back page</a>"; exit(); } $signup=mysqli_query($mysqli,"INSERT INTO user_info (userid,userpw,name,email) VALUES ('$id','$pw','$name','$email')"); if($signup){ echo "sign up success"; } ?> | cs |
회원가입 시 필터
1. 비밀번호 재확인
2. 회원정보 빈 칸(공백 입력)
3. 아이디 중복
회원가입 후 login.html에서 로그인 성공 시 login_check.php로 이동
login_check.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 | <?php session_start(); $id=$_POST['id']; $pw=$_POST['pw']; $mysqli=mysqli_connect("localhost","root","비밀번호","test2"); $check="SELECT * FROM user_info WHERE userid='$id'"; $result=$mysqli->query($check); if($result->num_rows==1){ $row=$result->fetch_array(MYSQLI_ASSOC); //하나의 열을 배열로 가져오기 if($row['userpw']==$pw){ //MYSQLI_ASSOC 필드명으로 첨자 가능 $_SESSION['userid']=$id; //로그인 성공 시 세션 변수 만들기 if(isset($_SESSION['userid'])) //세션 변수가 참일 때 { header('Location: ./main.php'); //로그인 성공 시 페이지 이동 } else{ echo "세션 저장 실패"; } } else{ echo "wrong id or pw"; } } else{ echo "wrong id or pw"; } ?> | cs |
로그인 성공 시 세션 변수 생성 후 main.php 이동
main.php에서 로그인을 성공했을 때 로그아웃 링크가 생성된다.
logout.php
1 2 3 4 5 6 7 | <?php session_start(); $res=session_destroy(); //모든 세션 변수 지우기 if($res){ header('Location: ./main.php'); // 로그아웃 성공 시 로그인 페이지로 이동 } ?> | cs |
반응형
'Programming > Web' 카테고리의 다른 글
[Web] PHP 큰 따옴표 작은 따옴표 겹침 해결 (0) | 2017.07.18 |
---|---|
[Web] PHP GET과 POST의 차이점 (0) | 2017.07.11 |
[Web] APM 구동원리 (0) | 2017.07.06 |
[Web] APM에 대해서 (0) | 2017.07.06 |
[Web] 웹 서버와 웹 브라우저의 통신 구조 (0) | 2017.07.03 |