반응형

보통의 게시판들은 게시물의 리스트를 보는 것과 게시물을 읽는 것까지는 로그인없이 가능하지만 댓글을 쓰거나 추천, 비추천을 하는등의 작업을 할때는 로그인을 해야 가능한 경우가 대부분이다.

 

이런 경우 현재 보고 있는 게시물에서 로그인 페이지로 넘어가게 될텐데 로그인 한 이후에 사용자가 보고 있던 페이지로 다시 돌아오게 하는 것이 사용자 편의성을 봤을때 효율적이라고 하겠다.

 

그래서 지금부터 그런 작업을 해 보려고 한다. 아주 간단하게 말이다.

 

우선 로그인 페이지를 수정한다.

 

/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">
        <input type="hidden" name="moveurl" value="<?php echo $_SERVER['HTTP_REFERER'];?>"><!-- 리퍼러를 이용해 이동할 페이지를 저장한다. -->
        <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";
?>

 

로그인 페이지로 넘어오기 이전에 있던 페이지를 $_SERVER['HTTP_REFERER']를 이용해 가져온다. 그리고 이 값을 로그인 처리 페이지로 넘긴 후에 로그인이 되고 나면 이 페이지로 이동 시켜 주면 된다.

 

리퍼러에는 파라미터값들도 모두 따라오기때문에 간단하게 이전 페이지로 이동할 수 있다. 소스보기를 통해 moveurl에 어떤 값들이 담겨져 있는지도 확인해 보자.

 

/member/login_ok.php

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

$userid=$_POST["userid"];
$passwd=$_POST["passwd"];
$passwd=hash('sha512',$passwd);
$moveurl=$_POST['moveurl']??"/";//이동할 페이지를 가져오고 만약 이동할 페이지가 없다면 메인 페이지로 이동한다.

$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='".$moveurl."';</script>";
    exit;
}else{
    echo "<script>alert('아이디나 암호가 틀렸습니다. 다시한번 확인해주십시오.');history.back();</script>";
    exit;
}
?>

 

이렇게 해주면 간단하게 할 수 있다. 쉽다.

 

moveurl을 변수로 넘기기 싫으면 쿠키나 세션을 이용해서 넘겨도 된다. 쿠키나 세션을 이용하는 것은 각자 해보자.

반응형

+ Recent posts