?Php 로그인 세션 - ?Php logeu-in sesyeon

💡 로그인, 로그아웃 동적 페이지를 만들어 보자!

?Php 로그인 세션 - ?Php logeu-in sesyeon

⭐️ 완성샷

  • index.php
    ?Php 로그인 세션 - ?Php logeu-in sesyeon
  • login/login.php -> login_ok.php
    ?Php 로그인 세션 - ?Php logeu-in sesyeon
  • 로그인 후 index.php
    ?Php 로그인 세션 - ?Php logeu-in sesyeon

🔴 login.php


로그인




  


  
    
로그인



이전으로 로그인

  • 그 전 회원가입 폼과 유효성검사에서 부분적으로 가져 오면된다.
    (아이디, 비밀번호)
  • form태그 action속성에 login_ok.php로 이동하라고 알려준다.
  • button을 2개 만들어 줬다.
  • 이전으로 버튼에는 뒤로가기 버튼을 만들어 준다.
    ?Php 로그인 세션 - ?Php logeu-in sesyeon

🟠 login_ok.php


🟤 이곳에서 로그인 폼에서 받은 값들을 처리한다.

🟤 이전 페이지에서 값 가져오기

🟤 DB 접속

include "../inc/dbcon.php";
  • inc(lude)폴더에 dbcon.php를 만들어 필요할 때마다 include로 불러오면 편하다.

🟤 쿼리 작성

🟤 쿼리 전송(연결 객체)

$result = mysqli_query($dbcon, $sql);

🟤 DB에서 결과값 가져오기

  • 결과행의 개수를 가지고와서 아이디가 존재하면 1, 안하면 0을 출력하게끔 한다.

🟤 조건 처리

  • 만약 아이디가 존재하지 않으면 -> 메세지를 출력한 후, 이전 페이지로 이동하게 끔 한다.
  • 아이디가 존재하면 ->
  1. DB에서 사용자 정보를 mysqli_fetch_array를 이용해 가져온다.
  2. 가져온 필드명에서 비밀번호가 일치하는지 일치하지 않는지를 비교한다.
  • 비밀번호가 일치하지 않으면 -> 메세지 출력해주고, 이전페이지 이동
  • 비밀번호가 일치하면 ->

🟤 조건처리 -> 비밀번호 일치

  • 세션 변수를 생성해준다.

    php의 세션?
    php의 세션은 기본적으로 '파일 기반'이다. 이 방식은 세션 데이터를 서버의 디스크에 임시파일을 생성한 뒤 그 파일에 데이터를 저장하는 방식이다.
    php의 설정에 따라 일정 시간이 지나면 세션 파일을 삭제를 하지만 일정 확률로 파일을 삭제하는 것이라서 완전히 삭제가 되지는 않는다. 또한 php 코드로 세션을 종료한 것이 아닌 브라우저 종료로 연결을 끊는 경우나 크롤링 등 프로그램으로 연속적으로 접근하는 경우에는 파일이 그대로 남아있게 된다.
    결국 로그아웃을 하지 않고 브라우저만 종료를 하는 사람이 많다면 그만큼 세션 파일이 쌓이게 되는 것이다. 한 번씩 세션이 저장되는 폴더를 확인하여 오래된 파일을 삭제해 주는 것이 좋다.

  • 그 전에 세션을 시작하기 위해서는 세션을 시작해줘야한다. session_start(); 문장으로 세션을 시작해주자!!

    ?Php 로그인 세션 - ?Php logeu-in sesyeon

  • 확인을 다 했으면 DB연결을 종료 후 index.php 페이지로 이동한다.

🟡 index.php


  • include "../inc/dbcon.php";
    0 함수를 이용해 세션 아이디와 이름이 있으면 값을 가져오고, 없으면 값을 가져오지 않는다는 문장을 만든다.
  • 세션 아이디가 없으면 -> 로그인, 회원가입 링크만 보이게 해주고
    ?Php 로그인 세션 - ?Php logeu-in sesyeon
  • 세션 아이디가 있으면 이름, 로그아웃, 정보수정이 보인다.
  • 대신 관리자는 관리자 링크가 따로 보인다.
    ?Php 로그인 세션 - ?Php logeu-in sesyeon

🟢 logout.php


  • 로그아웃은 세션을 시작해주고,
    include "../inc/dbcon.php";
    1함수를 이용해 저장된 세션 변수를 해제해주면된다.

index.php

location.replace('login.php');";            
}

else {
    $username = $_SESSION['username'];
    $name = $_SESSION['name'];
} 
?>

    

LOGOUT

세션을 확인해서 로그인이 되어있다면 유저의 아이디와 로그아웃 버튼을 보여주고
로그인이 되어있지 않다면 login.php로 이동합니다.

login.php




  
  LOGIN


  
    

Login

LOGIN

Sign up


check_login.php

login.php에서 입력받은 id, passward을 쿼리문에 넣고 실행해 결과가 존재하면 로그인을 성공하고 세션을 생성한 뒤 index.php로 이동합니다.

결과가 존재하지 않으면 로그인 실패 알림창을 띄우고 다시 로그인 페이지로 이동합니다.

logout.php


세션을 삭제한 뒤 로그아웃 되었다는 알림을 띄우고 index.php로 이동합니다.


login.php

?Php 로그인 세션 - ?Php logeu-in sesyeon

index.php (로그인 성공)

?Php 로그인 세션 - ?Php logeu-in sesyeon

로그인 실패, 로그아웃

?Php 로그인 세션 - ?Php logeu-in sesyeon

?Php 로그인 세션 - ?Php logeu-in sesyeon