Chap 7.
이제까지 회원가입을 받는 기능은 최소한의 기능으로 구현해봤습니다.
그럼, 가입한 회원이 로그인해서 사이트를 이용할 수 있도록 로그인 기능을 구현해봅시다.
index.php 에 로그인 버튼을 만들어 줍시다.
<a href="./member/login.php">로그인</a>
회원가입 아래에 표시되도록 합니다.
그리고,
login.php 를 www/member에 만듭니다.
회원으로부터 아이디와 암호를 입력받아야 하니까, form 태그를 이용한 signup.php 와 유사하게 만들수 있겠네요.
<html> <head> <title>로그인 페이지</title> <meta charset="utf-8" > </head> <body> login.php - 로그인 페이지<br /> <hr /> <form name="login_form" method="post" action="./login_check.php" > 아이디 : <input type="text" name="user_id" /><br /> 비밀번호 : <input type="password" name="user_pass" /><br /> <input type="submit" value="로그인" /> </form> </body> </html> |
user_id 와 user_pass 를 입력받아 login_check.php 로 전달합니다.
login_check.php에서는 입력받은 값과 DB에 저장되어 있는 값을 비교해서 로그인을 허락할지 말지를 결정해야겠지요.
<?php
include_once ('../config.php');
$mysqli = new mysqli($DB['host'], $DB['id'], $DB['pw'], $DB['db']);
if (mysqli_connect_error()) {
exit('Connect Error (' . mysqli_connect_errno() . ') '. mysqli_connect_error());
}
extract($_POST);
우선 DB관련 설정값을 위해 config.php 를 포함시키고, DB와의 연결의 끈을 만듭니다.
그 다음엔, extract($_POST)로 POST 방식으로 전달된 값들을 뽑아내서 값으로 사용할 수 있게 준비시킵니다. $user_id 와 $user_pass 를 이용할 수 있습니다.
먼저 DB에서 $user_id 라는 회원이 있는지, 있으면 그 데이터를 뽑아와야겠지요?
$q = "SELECT * FROM ap_member WHERE id='$user_id'";
$result = $mysqli->query( $q);
SELECT 를 이용한 쿼리문입니다. ap_member 테이블에서 id 가 $user_id 와 같은 행을 가져오라는 겁니다.
그 결과는 $result 에 담겨있습니다.
if($result->num_rows==1) {
//해당 ID 의 회원이 존재할 경우
// 암호가 맞는지를 확인
$encryped_pass = sha1($user_pass);
$row = $result->fetch_array(MYSQLI_ASSOC);
if( $row['pw'] == $encryped_pass ) {
// 올바른 정보
header("Location: http://mydomain.com/member/login_done.php");
exit();
}
else {
// 암호가 틀렸음
echo 'wrong password';
}
}
else {
// 없거나, 비정상
}
결과값이 1개라면 DB에 해당 아이디의 정보가 있다는 말이니까, 이후 암호를 비교해서 같으면 정상적으로 로그인 시켜줍니다.
암호를 비교할 때는 입력받은 $user_pass 를 회원가입때 암호화했던 방법과 같은 방법, sha1()으로 암호화를 해서 DB에 있는 값과 비교를 해야합니다.
mysqli에 새로운 함수들이 나타났는데요, php 카테고리의 다음 글을 참고하시기 바랍니다.
mysqli <- 클릭해서 확인하기
올바른 값으로 로그인이 이루어지면, 이후 사이트 전체에서 로그인 상태를 유지를 할 수 있어야 합니다. 주로 session 을 이용하게 되는데요, 다음 편에서 더 알아보겠습니다.
이상!
'PHP 게시판 만들기' 카테고리의 다른 글
9. 중복 코드는 하나의 파일로 작성해서 포함시키기 (9) | 2012.12.13 |
---|---|
8. session으로 로그인 정보 유지시키기 (33) | 2012.12.13 |
6. 가입 정보 저장 후 완료 페이지로 전환하기 (13) | 2012.12.12 |
5. 사용자 암호를 암호화 하기 (8) | 2012.12.11 |
4. 데이터베이스에 가입정보 저장하기 (53) | 2012.12.11 |
댓글