http://silnex.kro.kr/PHP_Tutorial/cookie_login/login.php
==COOKIE LOGIN==
2016년 6월 24일까지 설명되지 않은 부분은 주석 혹은 추가 설명으로 옆에 작성해 놓음

Login 흐름도를 보면알 수 있다 시피 총 4개의 파일을 이용해 Login을 구현했다.
각 php 파일의 대한 설명은 login.php > login_check.php > main_page.php > logout.php 순서로 하겠다.
Login.php
이 파일에서 하는 일은 ID와 PW를 받아 form을 이용해 POST하는 역할이다.
<html> <head> <title> Login Page </title> </head> <body> <h1> Login Page </h1> <form method="post" action="login_check.php"> <table> <tr> <td>ID :</td> <td> <input type="text" name="inputID"/> </td> <td rowspan="2"> <input type="submit" value="LOGIN"/> </tr> <tr> <td>PW :</td> <td> <input type="password" name="inputPW"/> </td> </tr> </table> </form> </body> </html>
이에 대한 설명은 [PHP] $_POST에서 했으므로 넘어가겠다.
(<table> 태그에 대한 설명 추가 예정)
Conn.php
DB에 연결하기 위한 php파일
<?php $SQL_host="localhost"; $SQL_id="php_user"; $SQL_pw="xopres"; $conn=new mysqli($SQL_host,$SQL_id,$SQL_pw,$SQL_id); ?>
분석
2~3번 줄 : SQL 주소, ID, PW를 변수로 저장한다. 직접 전달해도 상관없다.
6번째 줄 : mysqli()함수를 이용, SQL과 연결한다.
Login_check.php
이 파일에선 ID와 PW를 DB에서 가져와 등록된 user인지 확인 후 main_page로 이동시키는 역할을 한다.
<?php if(!isset($_POST['inputID']) || !isset($_POST['inputPW'])){ echo "<meta http-equiv='refresh' content='0;url=login.php'/>"; exit; } $user_id=$_POST['inputID']; $user_pw=$_POST['inputPW']; include_once("conn.php"); $sql="SELECT * FROM `user_info` WHERE `user_id`='$user_id'"; $result=mysqli_query($conn,$sql); $db=mysqli_fetch_assoc($result); if(!isset($db['user_id'])){ echo "<script>alert('ID error');history.back();</script>"; exit; } if($db['user_pw'] != $user_pw){ echo "<script>alert('PW error');history.back();</script>"; exit; } setcookie('user_id', $user_id, time() + 300, '/'); echo "<script>alert('로그인 성공')</script>"; ?> <meta http-equiv='refresh' content='0;url=main_page.php'>
분석
2번째 줄 : 잘못된 접근으로 인해 inputID와 PW를 전송받지 못 할 때
강제 종료 및 login.php로 리다이렉션(EX. URL로 바로 접근)
6~7번 줄 : POST된 값을 user_id와 user_pw에 각각 저장
9~12번 줄: conn.php를 통해 연결한 SQL에서 $user_id와 일치하는 row를 가져와 $db에 저장
14~21번 줄: DB의 내용과 비교 ID와 PW 비교 // “history.go()_참고“
23번째 줄: 로그인 성공시 COOKIE생성
26번째 줄: main_page.php로 이동
Main_page.php
이 파일은 이후 게시판 및 각종 기능으로 이어지는 링크를 넣을 곳이다.
현재 로그아웃 링크와 쿠키에서 user의 ID를 불러와 “환영합니다 $user_id님!”을 띄우는게 고작이다.
<meta charset="utf-8"/> <?php if(!isset($_COOKIE['user_id'])){ echo "<meta http-equiv='refresh' content='0;url=login_check.php'/>"; exit; } $user_id = $_COOKIE['user_id']; echo "안녕하세요 ".$user_id."님! <br/>"; echo "<a href='logout.php'>로그아웃</a>"; ?>
분석
1번째 줄 : 한글을 표시하기위해 utf-8로 설정하기위한 html 태그이다.
3~6번 줄 : cookie가 생성 되었는지 확인후 없으면 login_check.php로 리다이렉션 시킴
7번째 줄 : 변수 $user_id에 쿠키에 들어있는 user_id값을 넣음
8~9번 줄 : user_id출력 및 logout링크 생성
Logout.php
여기선 cookie를 만료시킨뒤 main_page.php > login_check.php > login.php순으로 이동시켜
로그아웃 시키는 역할을 한다.
<?php setcookie('user_id', '', time()-300, '/'); ?> <meta http-equiv='refresh' content='0;url=main_page.php'/>
분석
2번째 줄 : cookie를 수정하여 만료 시킨다.
4번째 줄 : main_page.php로 리다이렉션 시킨다.