게시판에 로그인, 회원가입 기능입니다.
게시판에 필요한 기능은 아니지만 어디서나 사용되는 기본 기능이라서 한번 넣어봤습니다.
앞에서 작성한 index.php의 부분을 조금 수정했습니다.
index.php >>>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?php $connect = mysqli_connect('localhost', '', '', '') or die ("connect fail"); $query ="select * from board order by number desc"; $result = $connect->query($query); $total = mysqli_num_rows($result); session_start(); if(isset($_SESSION['userid'])) { echo $_SESSION['userid'];?>님 안녕하세요 <br/> <?php } else { ?> <button onclick="location.href='./login.php'">로그인</button> <br /> <?php } ?> | cs |
여기서는 세션을 이용해서 로그인 기능을 구현했습니다.
기존의 코드에서 9줄 부터 19줄 까지 추가했습니다. 세션을 검사해서 로그인 상태를 확인하는 코드입니다.
로그인이 되어있지 않다면 ,
로그인 버튼이 나타나고
로그인이 되어있다면,
해당 유저의 아이디와 로그아웃 버튼을 나타냅니다.
1. 로그인 구현
로그인 폼은 간단하게 구현했습니다.
코드 >>
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 | <!DOCTYPE> <html> <head> <meta charset='utf-8'> </head> <body> <div align='center'> <span>로그인</span> <form method='get' action='login_action.php'> <p>ID: <input name="id" type="text"></p> <p>PW: <input name="pw" type="password"></p> <input type="submit" value="로그인"> </form> <br /> <button id="join" onclick="location.href='./join.php'">회원가입</button> </div> </body> </html> | cs |
로그인 기능 >>
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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | <?php session_start(); $connect = mysqli_connect("localhost", "", "", ") or die("fail"); //입력 받은 id와 password $id=$_GET['id']; $pw=$_GET['pw']; //아이디가 있는지 검사 $query = "select * from member where id='$id'"; $result = $connect->query($query); //아이디가 있다면 비밀번호 검사 if(mysqli_num_rows($result)==1) { $row=mysqli_fetch_assoc($result); //비밀번호가 맞다면 세션 생성 if($row['pw']==$pw){ $_SESSION['userid']=$id; if(isset($_SESSION['userid'])){ ?> <script> alert("로그인 되었습니다."); location.replace("./index.php"); </script> <?php } else{ echo "session fail"; } } else { ?> <script> alert("아이디 혹은 비밀번호가 잘못되었습니다."); history.back(); </script> <?php } } else{ ?> <script> alert("아이디 혹은 비밀번호가 잘못되었습니다."); history.back(); </script> <?php } ?> | cs |
로그인에 성공하면 세션을 생성하고, 실패하면 로그인 페이지로 돌아갑니다. history.back()은 이전에 있었던 페이지로 이동하게 해줍니다.
2. 회원가입 구현
회원가입도 간단하게 했습니다...
코드 >>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <!DOCTYPE> <html> <head> <meta charset='utf-8'> </head> <body> <div align="center"> <p>회원가입</p> <form method='get' action='join_action.php'> <p>ID: <input type="text" name="id"></p> <p>PW: <input type="password" name="pw"></p> <p>Email: <input type="email" name="email"></p> <input type="submit" value="회원가입"> </form> </div> </body> </html> | cs |
회원가입 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 | <?php $connect = mysqli_connect('localhost', '', '', '') or die("fail"); $id=$_GET[id]; $pw=$_GET[pw]; $email=$_GET[email]; $date = date('Y-m-d H:i:s'); //입력받은 데이터를 DB에 저장 $query = "insert into member (id, pw, mail, date, permit) values ('$id', '$pw', '$email', '$date', 0)"; $result = $connect->query($query); //저장이 됬다면 (result = true) 가입 완료 if($result) { ?> <script> alert('가입 되었습니다.'); location.replace("./login.php"); </script> <?php } else{ ?> <script> alert("fail"); </script> <?php } mysqli_close($connect); ?> | cs |
원래 id 중복검사 등등 해야하는데 중복이 없다하에 가정하고 구현했습니다 ... 중복 기능까지 원하시는 분들은 select 쿼리를 이용해서 하시면 될거 같아요.
(+ 추가) 중복 검사는 id 를 입력받은 후 select count(*) from member where id="받은 Id" 으로 구분할 수 있습니다.
3. 로그아웃
로그아웃은 세션을 삭제하는 기능입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?php session_start(); $result = session_destroy(); if($result) { ?> <script> alert("로그아웃 되었습니다."); history.back(); </script> <?php } ?> | cs |
'Web > php 게시판 만들기' 카테고리의 다른 글
[ php/mysql ] 게시판 만들기 (회원제, 수정, 조회수) (35) | 2018.08.30 |
---|---|
[ php / mysql ] 게시판 만들기 (view) (26) | 2018.07.28 |
[ php / mysql ] 게시판 만들기 (작성, 저장) (21) | 2018.07.28 |
[ php / mysql ] 게시판 만들기 (목차) (7) | 2018.07.28 |
[php / mysql ] 게시판 만들기(DB 설정) (15) | 2018.07.28 |