FORM 태그를 이용한 인증
입력 양식을 통해 직접 사용자 ID와 비밀번호를 입력받아 이 데이터를 웹서버로 보냅니다. 비밀번호는 INPUT 태그 형식을 'password'로 지정하여 보안을 유지합니다.
< 로그인 정보 입력 화면 >
[code html;gutter:false]
<FORM name=getID method='post' action='login.php'>
<TABLE width='350' border='0' cellpadding='0' cellspacing='6' bgcolor='#DBF09F'>
<TR>
<TD align='center' height='30' colspan='2'>
<B>사용자 로그인</B>
</TD>
</TR>
<TR>
<TD align='right'>
사용자ID
</TD>
<TD>
<INPUT type='text' name='login_user' size='15'>
</TD>
</TR>
<TR>
<TD align='right'>
비밀번호
</TD>
<TD>
<INPUT type='password' name='login_pw' size='15'>
</TD>
</TR>
<TR>
<TD align='center' height='30' colspan='2'>
<INPUT type='submit' value='로그인'>
</TD>
</TR>
</TABLE>
</FORM>
[/code]
로그인 과정에서의 회원 인증
로그인 입력 양식에서 로그인 버튼을 클릭하게 되면 로그인을 처리하기 위한 스크립트가 동작합니다. 로그인 처리 결과에 따라 회원인증ID를 발급하게 되고 회원이 요청한 페이지로 이동하게 됩니다. 이와 같이 로그인 입력 양식에 회원ID와 비밀번호를 입력하는 단계부터 회원인증ID를 발급하게 되는 단계까지가 로그인 과정입니다. 로그인 정보 입력 단계에서 회원ID와 비밀번호가 입력되고 이 정보가 웹서버에 보내지면 이 순간부터 웹서버는 회원 인증을 위해 $login_user/$login_pw를 회원 정보 테이블에 있는 회원 ID/비밀번호와 비교하는데 사용하게 됩니다. 로그인 양식을 통해 입력된 방문자의 회원ID 및 비밀번호를 회원 데이터베이스에서 검색하여 등록된 회원인지 여부를 확인하는 기능입니다. 만약 방문자가 입력한 회원ID와 비밀번호가 회원 데이터베이스에 등록되어 있지 않는 경우에는 요청된 서비스를 거부하고 다시 회원ID와 비밀번호를 입력할 것을 요구할 수도 있고, 아니면 등록된 회원이 아니라고 생각하여 회원 가입 과정으로 넘어가게 할 수도 있습니다. 동일한 아이디와 비밀번호가 존재하면 해당 방문자가 회원인 것이 확인되므로 회원인증ID를 발급하기 위한 단계로 넘어갑니다.
[code php;gutter:false]
<?php
function authentication() {
echo "
<FORM name=getID method='post' action='login.php'>
<TABLE width='350' border='0' cellpadding='0' cellspacing='6' bgcolor='#DBF09F'>
<TR>
<TD align='center' height='30' colspan='2'>
<B>사용자 로그인</B>
</TD>
</TR>
<TR>
<TD align='right'>
사용자ID
</TD>
<TD>
<INPUT type='text' name='login_user' size='15'>
</TD>
</TR>
<TR>
<TD align='right'>
비밀번호
</TD>
<TD>
<INPUT type='password' name='login_pw' size='15'>
</TD>
</TR>
<TR>
<TD align='center' height='30' colspan='2'>
<INPUT type='submit' value='로그인'>
</TD>
</TR>
</TABLE>
</FORM>
";
}
/*
****************************************
회원 정보 테이블의 생성 및 회원정보 입력
****************************************
CREATE TABLE members (
userid varchar(20) not null PRIMARY KEY,
password varchar(16) not null
);
INSERT INTO members VALUES('user1', 'test');
INSERT INTO members VALUES('user2', 'test');
INSERT INTO members VALUES('user3', 'test');
*/
function get_record($userid) {
global $Host, $User, $Password, $Database, $Table;
mysql_connect($Host, $User, $Password)
or die('SQL server에 연결할 수 없습니다.');
mysql_select_db($Database) or die('DataBase를 연결할 수 없습니다.');
$query = mysql_query("SELECT * FROM ".$Table." WHERE userid='$userid'");
$rec = mysql_fetch_array($query);
mysql_free_result($query);
mysql_close();
return $rec;
}
$Host = "localhost"; //'DB 호스트명 입력';
$User = "xxxxxxxxx"; //'DB 사용자ID 입력';
$Password = "xxxxxxxxx"; //'DB 비밀번호 입력';
$Database = "xxxxxxxxx"; //'DB명 입력';
$Table = "members"; //'회원 정보 테이블명 입력'
if (!$HTTP_POST_VARS["login_user"] || !$HTTP_POST_VARS["login_pw"]) {
//
// 인증창에 값을 입력하지 않은 경우 다시 인증창을 띄운다.
//
authentication();
} else {
//
// 여기에서 회원 인증을 한다.
//
$record = get_record($HTTP_POST_VARS["login_user"]);
if ("" == $record || $record[password] != $HTTP_POST_VARS["login_pw"])
authentication(); // 회원인증에 실폐했으면 다시 인증창을 띄운다.
else {
// 회원 인증에 성공
session_register("record"); // 회원인증ID를 발급하기 위한 부분으로
// 여기서는 세션 함수를 이용하였다.
echo "회원 인증에 성공\n"; // 회원전용 페이지로 이동
}
}
?>
[/code]
< 예제 : login.php >
회원인증ID를 발급하기 위해 세션 함수 대신에 쿠키를 이용한다면 session_register('record'); 부분을 아래와 같이 수정하면 됩니다.
[code php;gutter:false]
SetCookie('member_user', $HTTP_POST_VARS["login_user"], 0, '/');
SetCookie('member_pw', $HTTP_POST_VARS["login_pw"], 0, '/');
[/code]
'phpsource > 회원인증' 카테고리의 다른 글
{회원인증에 대하여}09.로그아웃 (0) | 2000.10.10 |
---|---|
{회원인증에 대하여}08.회원전용 페이지 (0) | 2000.10.10 |
{회원인증에 대하여}06.HTTP 인증을 통한 로그인 (0) | 2000.10.10 |
{회원인증에 대하여}05.로그인 (0) | 2000.10.10 |
{회원인증에 대하여}04.회원가입 (0) | 2000.10.10 |