웹프로그래밍2012. 8. 28. 12:15




2) 로그인 처리


가장 중요한 부분은 아무래도 여기다.

그런데 사전작업이 조금 필요하다. 로그인을 하려면 아이디/비밀번호가 일단 데이터베이스에 등록되어 있어야 하니깐,

mySQL 안에 임의로 MEMBERS라는 테이블 안에 id(char), password(char), token(char 64) 정도로 필드를 만들어두자.

각각의 필드는 다음의 역할을 할 것이다.


1) id : 로그인에 필요한 아이디
2) password: 로그인에 필요한 비밀번호
3) token: 로그인 한 후에 로그인 유지를 위해 임의의 값을 여기에 넣어둔 후 대조함으로써 로그인 유지


그리고 적당히 자신이 로그인에 쓸 아이디와 비밀번호를  mySQL에 하나 넣어둔다. token 값은 그냥 0으로 두고.


이제 코딩을 해보자면, 

<?php
//세션을 사용하기 위해 선언하는 부분
session_cache_limiter('');
session_start();
//데이터베이스에 접근하기 위한 부분
$dbid = "DB아이디";
$dbpass = "DB비밀번호";
$dbname ="DB네임";
$dbhost = "localhost";
$sqlConn = mysql_connect($dbhost, $dbid, $dbpass);
mysql_select_db($dbname, $sqlConn);
//아이디와 비밀번호의 값을 POST방식으로 받는 것
$id = $_POST['loginID'];
$pass = $_POST['loginPASS'];
//입력받은 아이디가 존재하는지 체크하기 위해 데이터베이스에서 id를 가져옴
$getID = "SELECT id FROM MEMBERS WHERE id='$id'";
$getID = mysql_query($getID);
$getID = mysql_fetch_array($getID);
//아이디가 있다면
if($getID['id']) {
//아이디를 바탕으로 그 아이디가 가진 곳의 비밀번호를 가져온다
$getPASS = "SELECT password FROM MEMBERS WHERE id='$id'";
$getPASS = mysql_query($getPASS);
$getPASS = mysql_result($getPASS, 0);
//데이터베이스에서 가져온 비밀번호가 입력받은 비밀번호와 같다면,
if($getPASS == $pass) {
//64자리의 무작위 문자열을 생성한다.
//이 64자리의 임의의 수가 바로 토큰으로 로그인 대조에 사용할 키 값.
$key = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789^/';
for($i=0;$i<=63;$i++)
$token .= $key[rand(0,63)];
//방금 만든 토큰을 데이터베이스에 업데이트한다.
//입력받은 아이디가 있는 위치에 업데이트.
$updateToken = "UPDATE MEMBERS SET token='$token' WHERE id='$id'";
$updateToken = mysql_query($updateToken);
//세션에 토큰 즉 키 값을 등록한다.
$_SESSION['token'] = $token;
return 0;
}
else {
echo "PASSWORD ERROR";
return 1;
}
}
else {
echo "ID DOESN'T EXIST";
return 1;
}
?>

isset()이나 is_null()로 변수를 좀 체크하는게 좋긴하겠지만.. 이정도로도 적당히 넘어갈 수 는 있을 것 같다.

설명은 주석으로 붙여놨으니 필요없을듯 하다.


Posted by 김또또