본문 바로가기
Programming

[PHP 강좌] 44. 설치형 게시판 만들기 7 - 사용자 로그인, 로그아웃, 정보수정

by Mizix 2010. 2. 11.
반응형
오늘은 사용자 페이지의 로그인, 로그아웃, 회원정보 수정에 대해서 배워보겠습니다.

이 세가지 기능 모두 지난시간과 마찬가지로 관계형 게시판 만들기에서 배웠던 부분과 동일합니다.

<?
// 1. 공통 인클루드 파일
include ("./head.php");

// 2. 로그인한 회원은 뒤로 보내기
if($_SESSION[user_id]){
    alert("로그인 하신 상태입니다.");
}
// 3. 입력 HTML 출력
?>
<br/>
<table style="width:1000px;height:50px;border:5px #CCCCCC solid;">
    <tr>
        <td align="center" valign="middle" style="font-zise:15px;font-weight:bold;">회원 로그인</td>
    </tr>
</table>
<br/>
<form name="loginForm" method="post" action="./login_chk.php" style="margin:0px;">
<table style="width:1000px;height:50px;border:0px;">
    <tr>
        <td align="center" valign="middle" style="width:200px;height:50px;background-color:#CCCCCC;">아이디</td& gt;
        <td align="left" valign="middle" style="width:800px;height:50px;"><input type="text" name="m_id" style="width:380px;"></td>
    </tr>
    <tr>
        <td align="center" valign="middle" style="width:200px;height:50px;background-color:#CCCCCC;">비밀번호< /td>
        <td align="left" valign="middle" style="width:800px;height:50px;"><input type="password" name="m_pass" style="width:380px;"></td>
    </tr>
    <!-- 4. 로그인 버튼 클릭시 입력필드 검사 함수 login_chk 실행 -->
    <tr>
        <td align="center" valign="middle" colspan="2"><input type="button" value=" 로그인 " onClick="login_chk();"></td>
    </tr>
</table>
</form>
<script>
// 5.입력필드 검사함수
function login_chk()
{
    // 6.form 을 f 에 지정
    var f = document.loginForm;

    // 7.입력폼 검사
    if(f.m_id.value == ""){
        // 8.값이 없으면 경고창으로 메세지 출력 후 함수 종료
        alert("아이디를 입력해 주세요.");
        return false;
    }

    if(f.m_pass.value == ""){
        alert("비밀번호를 입력해 주세요.");
        return false;
    }

    // 9.검사가 성공이면 form 을 submit 한다
    f.submit();

}
</script>
[login.php 소스]

<?
// 1. 공통 인클루드 파일
include ("./head.php");

// 2. 로그인한 회원은 뒤로 보내기
if($_SESSION[user_id]){
    alert("로그인 하신 상태입니다.");
}

// 3. 넘어온 변수 검사
if(trim($_POST[m_id]) == ""){
    alert("아이디를 입력해 주세요.");
}

if($_POST[m_pass] == ""){
    alert("비밀번호를 입력해 주세요.");
}

// 4. 같은 아이디가 있는지 검사
$chk_sql = "select * from bd__member where m_id = '".trim($_POST[m_id])."'";
$chk_result = sql_query($chk_sql);
$chk_data = mysql_fetch_array($chk_result);

// 5. 아이디가 존재 하는 경우
if($chk_data[m_idx]){

    // 6. 입력된 비밀번호와 저장된 비밀번호가 같은지 비교해서
    if($_POST[m_pass] == $chk_data[m_pass]){
        // 7. 비밀번호가 같으면 세션값 부여 후 이동
        $_SESSION[user_idx] = $chk_data[m_idx];
        $_SESSION[user_id] = $chk_data[m_id];
        $_SESSION[user_name] = $chk_data[m_name];
        $_SESSION[user_level] = $chk_data[m_level];
       
        alert("환영합니다.", "./index.php");
    }else{
        // 8. 비밀번호가 다르면
        alert("비밀번호가 다릅니다.");
    }
}else{
    // 9. 아이디가 존재하지 않으면
    alert("존재하지 않는 회원입니다.");
}
?>

[login_chk.php 소스]

<?
// 1. 공통 인클루드 파일
include ("./head.php");

// 2. 모든 세션값을 빈값으로
$_SESSION[user_idx] = "";
$_SESSION[user_id] = "";
$_SESSION[user_name] = "";
$_SESSION[user_level] = "";

alert("로그아웃이 되었습니다.", "./login.php");
?>
[logout.php 소스]

<?
// 1. 공통 인클루드 파일
include ("./head.php");

// 2. 로그인 안한 회원은 로그인 페이지로 보내기
if(!$_SESSION[user_id]){
    alert("로그인 하셔야 합니다.", "./login.php");
}

// 3. 회원 설정 데이터 불러오기
$sql = "select * from bd__member where m_idx = '".$_SESSION[user_idx]."'";
$data = sql_fetch($sql);

// 4. 입력 HTML 출력
?>
<br/>
<table style="width:1000px;height:50px;border:5px #CCCCCC solid;">
    <tr>
        <td align="center" valign="middle" style="font-zise:15px;font-weight:bold;">회원 정보 수정</td>
    </tr>
</table>
<br/>
<form name="modifyForm" method="post" action="./member_modify_save.php" style="margin:0px;">
<table style="width:1000px;height:50px;border:0px;">
    <tr>
        <td align="center" valign="middle" style="width:200px;height:50px;background-color:#CCCCCC;">회원이름< /td>
        <td align="left" valign="middle" style="width:800px;height:50px;"><input type="text" name="m_name" style="width:780px;" value="<?=$data[m_name]?>"></td>
    </tr>
    <tr>
        <td align="center" valign="middle" style="width:200px;height:50px;background-color:#CCCCCC;">비밀번호< /td>
        <td align="left" valign="middle" style="width:800px;height:50px;"><input type="password" name="m_pass" style="width:380px;"></td>
    </tr>
    <tr>
        <td align="center" valign="middle" style="width:200px;height:50px;background-color:#CCCCCC;">비밀번호 확인</td>
        <td align="left" valign="middle" style="width:800px;height:50px;"><input type="password" name="m_pass2" style="width:380px;"></td>
    </tr>
    <!-- 5. 정보수정 버튼 클릭시 입력필드 검사 함수 member_save 실행 -->
    <tr>
        <td align="center" valign="middle" colspan="2"><input type="button" value=" 정보수정 " onClick="member_save();"></td>
    </tr>
</table>
</form>
<script>
// 6.입력필드 검사함수
function member_save()
{
    // 7.form 을 f 에 지정
    var f = document.modifyForm;

    // 8.입력폼 검사

    if(f.m_name.value == ""){
        alert("회원이름을 입력해 주세요.");
        return false;
    }

    if(f.m_pass.value == ""){
        alert("비밀번호를 입력해 주세요.");
        return false;
    }

    if(f.m_pass.value != f.m_pass2.value){
        // 9.비밀번호와 확인이 서로 다르면 경고창으로 메세지 출력 후 함수 종료
        alert("비밀번호를 확인해 주세요.");
        return false;
    }

    // 10.검사가 성공이면 form 을 submit 한다
    f.submit();

}
</script>
[member_modify.php 소스]

<?
// 1. 공통 인클루드 파일
include ("./head.php");

// 2. 로그인 안한 회원은 로그인 페이지로 보내기
if(!$_SESSION[user_id]){
    alert("로그인 하셔야 합니다.", "./login.php");
}

// 3. 넘어온 변수 검사
if($_POST[m_name] == ""){
    alert("이름을 입력해 주세요.");
}

if($_POST[m_pass] == ""){
    alert("비밀번호를 입력해 주세요.");
}

if($_POST[m_pass] != $_POST[m_pass2]){
    alert("비밀번호를 확인해 주세요.");
}


// 4. 회원정보 적기
$sql = "update bd__member set m_name = '".$_POST[m_name]."', m_pass = '".$_POST[m_pass]."' where m_id = '".$_SESSION[user_id]."'";
sql_query($sql);

// 5. 첫 페이지로 보내기
alert("회원정보가 수정 되었습니다.", "index.php");
?>
[member_modify_save.php 소스]

그럼 다음 시간에는 게시판에 글쓰기와 게시판 목록보기를 배워보도록 하겠습니다.
반응형