세션을 사용한 PHP 로그인/로그아웃 소스
페이지 정보
작성자 서방님 댓글 0건 조회 175회 작성일 16-04-21 17:42본문
출처 : http://tapito.tistory.com/412
PHP의 세션 함수를 사용한 로그인/로그아웃 소스입니다.
login.php
ID와 암호를 입력받아 process.php로 전달하는 소스입니다.
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="utf-8" /> <title>ID와 암호를 입력하십시오.</title> </head> <body> <form method="post" action="process.php"> <label>ID: <input type="text" name="member_id" /></label> <label>PW: <input type="password" name="member_password" /></label> <input type="submit" /> </form> </body> </html>
process.php
ID와 암호를 비교하여 로그인 성공 여부를 판별합니다.
POST 방식으로 전달된 파라미터를 읽을 때는 $_POST["변수명"]
을 사용하고, GET 방식으로 전달된 파라미터를 읽을 때는 $_GET["변수명"]
을 사용합니다. GET, POST 구분 없이 어떤 파라미터를 읽을 때는 $_REQUEST["변수명"]
을 사용합니다.
login.php에서 전달받은 ID와 암호를 저장된 내용과 비교하여 일치하면 로그인 성공 및 세션 생성. PHP에서 세션을 사용하는 페이지는 항상 사용 전 session_start();
함수를 호출하여야 하며 이는 새로운 세션을 생성하거나 기존 세션을 불러오는 역할을 합니다. 이 session_start는 소스 코드의 가장 첫 줄에서 호출되어야 합니다. 줄바꿈도 허용되지 않습니다.
만일 1줄에 session_start();를 호출하도록 적었는데도 "Cannot send session cookie - headers already sent" 오류가 뜬다면 소스 파일 첫 글자에 이 텍스트 파일이 UTF-8인지 UTF-16 LE/BE인지를 식별하는 BOM(Byte Order Mark)문자가 들어있는 문제로서 Windows 메모장으로는 해결할 수 없으므로 EditPlus 등의 편집기로 열어 BOM이 없는 텍스트 파일로 다시 저장해야 합니다.
세션에 저장된 값을 가져오거나 설정하려면 $_SESSION["변수명"]
을 사용하면 됩니다.
<? session_start(); // 세션 사용하기 ?> <?php // 미리 정의된 ID와 암호 // $member_id = "user"; $member_password = "password"; ?> <!DOCTYPE html> <html lang="ko"> <head> <meta charset="utf-8"> <title>로그인 처리</title> </head> <body> <!-- POST 방식으로 전달된 데이터를 읽어올 때는 $_POST["변수명"]을 사용합니다. --> <!-- ID가 전달되었는지 검사 --> <? if (!isset($_POST["member_id"])) { ?> <p style="text-align: center;">ID가 입력되지 않았습니다.</p> <p style="text-align: center;"><a href="login.php">로그인하기</a></p> <!-- 암호가 전달되었는지 검사 --> <? } else if (!isset($_POST["member_password"])) { ?> <p style="text-align: center;">암호가 입력되지 않았습니다.</p> <p style="text-align: center;"><a href="login.php">로그인하기</a></p> <!-- ID와 암호가 전달되었다면 --> <? } else { ?> <!-- ID 잘못 입력 시 --> <? if(strcmp($_POST["member_id"], $member_id) != 0) { ?> <p style="text-align: center;">ID가 일치하지 않습니다.</p> <p style="text-align: center;"><a href="login.php">다시 로그인하기</a></p> <!-- 암호 잘못 입력 시 --> <? } else if (strcmp($_POST["member_password"], $member_password) != 0) { ?> <p style="text-align: center;">암호가 일치하지 않습니다.</p> <p style="text-align: center;"><a href="login.php">다시 로그인하기</a></p> <!-- 로그인 성공 --> <? } else { ?> <? $_SESSION["member_id"] = $_POST["member_id"]; ?> <? $_SESSION["member_password"] = $_POST["member_password"] ?> <p style="text-align: center;">로그인 성공</p> <p style="text-align: center;"><a href="membership.php">회원 페이지</a></p> <? } ?> <? } ?> </body> </html>
membership.php
로그인 한 회원에게만 보여질 페이지입니다. 로그인 하지 않고 접속한 경우 로그인 페이지로 안내합니다.
session_start();
를 첫 부분에서 호출하여 세션을 불러오고 로그인 상태가 맞으면 회원의 ID를 출력합니다.
<? session_start(); // 세션 사용하기 ?> <!DOCTYPE html> <html lang="ko"> <head> <meta charset="utf-8" /> <title>회원 페이지</title> </head> <body> <? if (!isset($_SESSION["member_id"]) || !isset($_SESSION["member_password"])) { ?> <p style="text-align: center;">로그인되지 않았습니다.</p> <p style="text-align: center;"><a href="login.php">로그인 하기</a></p> <? } else { ?> <p style="text-align: center;">환영합니다. <?=$_SESSION["member_id"]?>님</p> <p style="text-align: center;"><a href="logout.php">로그아웃 하기</a></p> <? } ?> </body> </html>
logout.php
세션을 삭제하여 로그아웃 처리합니다.
session_start();
을 사용하여 기존 세션을 불러오고 session_destroy();
을 호출하여 불러온 세션을 파괴합니다.
<? session_start(); // 세션 사용하기 ?> <!DOCTYPE html> <html lang="ko"> <head> <meta charset="utf-8" /> <title>로그아웃</title> </head> <body> <!-- 세션에 로그인 정보가 없는 경우 --> <? if (!isset($_SESSION["member_id"]) || !isset($_SESSION["member_password"])) { ?> <p style="text-align: center;">로그인되지 않았습니다.</p> <p style="text-align: center;"><a href="login.php">로그인 하기</a></p> <!-- 현재 세션 데이터를 지우는 함수는 session_destroy(); --> <? } else { ?> <? session_destroy(); ?> <p style="text-align: center;">로그아웃 되었습니다.</p> <p style="text-align: center;"><a href="login.php">로그인 하기</a></p> <? } ?> </body> </html>
댓글목록
등록된 댓글이 없습니다.