반응형

 

 

회원가입을 했으니 로그인 처리를 해보자. 우선 로그인 페이지를 만든다. 회원가입페이지를 조금 수정했다.

 

/member/login.php

<?php
include $_SERVER["DOCUMENT_ROOT"]."/inc/header.php";
?>
    <form class="row g-3 needs-validation" method="post" action="/member/login_ok.php">
        <div class="col-12">
            <label for="validationCustom02" class="form-label">아이디</label>
            <input type="text" class="form-control" id="userid" name="userid" placeholder="" required>
        </div>
        <div class="col-12">
            <label for="validationCustom02" class="form-label">비밀번호</label>
            <input type="password" class="form-control" id="passwd" name="passwd" placeholder="" required>
        </div>
               
        <div class="col-12">
            <button class="btn btn-primary" type="submit">로그인</button>
        </div>
    </form>
<?php
include $_SERVER["DOCUMENT_ROOT"]."/inc/footer.php";
?>

 

로그인을 처리해주는 login_ok.php 파일도 만들어보자.

우선 로그인시 필요한 쿼리를 만들어보자. 

members 테이블에 사용자가 입력한 userid와 passwd로 정의된 사용자가 있는지 확인하는 쿼리다.

 

/member/login_ok.php

 

<?php session_start();
include $_SERVER["DOCUMENT_ROOT"]."/inc/dbcon.php";

$userid=$_POST["userid"];
$passwd=$_POST["passwd"];
$passwd=hash('sha512',$passwd);

$query = "select * from members where userid='".$userid."' and passwd='".$passwd."'";
echo "query=>".$query;
exit;

?>

 

이렇게 만들어놓고 우선 로그인을 해본다. 그러면 로그인 처리를 위한 사용자 확인 쿼리가 제대로 만들어졌는지 확인할 수 있다. 결과값은 아래와같다.

 

query=>select * from members where userid='gildong' and passwd='ba3253876aed6bc22d4a6ff53d8406c6ad864195ed144ab5c87621b6c233b548baeae6956df346ec8c17f5ea10f35ee3cbc514797ed7ddd3145464e2a0bab413'

 

passwd 부분은 나와 다를 수 있다. 내 비밀번호는 123456이었기때문에 해쉬로 변환한 값은 저렇게 나온다.

 

위 쿼리를 디비에서 실행해보면 제대로 쿼리가 만들어졌는지 확인할 수 있다.

 

사용자가 없으면 없다고 알려주면 되고 사용자가 있으면 세션처리를 해서 세션값에 입력을해줘야한다. 해보자.

 

세션에 값을 입력하는 이유는 로그인 여부를 확인하기 위해서다 세션에 값이 있으면 로그인을 한 사용자이고 세션에 값이 없으면 로그인을 하지 않은사용자다.

 

/member/login_ok.php

<?php session_start();//로그인 처리와 로그인 여부를 확인하기 위해 세션을 사용한다.
include $_SERVER["DOCUMENT_ROOT"]."/inc/dbcon.php";

$userid=$_POST["userid"];
$passwd=$_POST["passwd"];
$passwd=hash('sha512',$passwd);

$query = "select * from members where userid='".$userid."' and passwd='".$passwd."'";
$result = $mysqli->query($query) or die("query error => ".$mysqli->error);
$rs = $result->fetch_object();

if($rs){
    $_SESSION['UID']= $rs->userid;//세션에 아이디값을 입력
    $_SESSION['UNAME']= $rs->username;//세션에 사용자 이름을 입력
    echo "<script>alert('어서오십시오.');location.href='/';</script>";
    exit;
}else{
    echo "<script>alert('아이디나 암호가 틀렸습니다. 다시한번 확인해주십시오.');history.back();</script>";
    exit;
}
?>

 

쿼리를 날려서 리턴값이 있다면 해당 리턴값을 세션에 저장해준다. 세션값을 저장하거나 확인할때는 항상 최상단에 session_start(); 함수를 호출해야한다는 것도 잊지 말자.

 

이제 어떤 페이지에서도 $_SESSION['UID'] 값을 확인할 수 있다. 이 값이 있으면 로그인을 한 사용자고 없으면 로그인을 안 한거다.

 

로그인을 한 사용자만 허락된 페이지가 있다면 이 세션값을 이용해서 권한을 체크하면 된다.

 

이런걸 전역변수라고 한다. 깊이 알 필욘 없다.

 

이제 글쓰기등에서 권한체크를 해보자.

반응형

+ Recent posts