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>
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|
| 51 | [아두이노] 장애물 감지 자율주행 자동차 | proin | 2018.05.14 | 1 |
| 50 | [아두이노] DC 모터의 제어(모터드라이버 L298N) 1편 | proin | 2018.05.14 | 3 |
| 49 | 아두이노 탱크 연결 사진 | proin | 2018.05.14 | 2 |
| 48 | 오픈소스 + 알고리즘 | proin | 2018.05.14 | 1 |
| 47 | OpenCV #7-2 Example (허프 변환으로 영상 내 선 감지) | proin | 2018.05.14 | 0 |
| 46 | 롤 모델 | proin | 2018.05.14 | 2 |
| 45 | 사진에서 엣지 따오는 소스 | proin | 2018.05.14 | 1 |
| 44 | 카메라 여는 소스 | proin | 2018.05.14 | 1 |
| 43 | Visual Studio 2017에서 OpenCV 3.4를 사용하는 방법 | proin | 2018.05.14 | 0 |
| 42 | 모터 돌리는 소스 | proin | 2018.05.14 | 2 |
| 41 | project | proin | 2018.05.14 | 1 |
| 40 | [25호]DIY 프로젝트 공모전- 차선 인식을 통한 차량의 능동적 안전시스템 개발 | proin | 2018.05.14 | 1 |
| 39 | [Web] PHP 로그인/로그아웃/회원가입 {원본} | proin | 2018.05.14 | 1 |
| 38 | html 출력 {원본} | proin | 2018.05.14 | 1 |
| » | 세션을 사용한 PHP 로그인/로그아웃 소스 {원본} | proin | 2018.05.14 | 1 |
| 36 | 세션을 사용한 PHP 로그인/로그아웃 소스 | proin | 2018.05.03 | 2 |
| 35 | html 출력 | proin | 2018.05.02 | 1 |
| 34 | 옥션 로그인 부분 소스 | proin | 2018.05.02 | 0 |
| 33 | XML과 DB | project2018 | 2018.05.02 | 3 |
| 32 | 컨버터 | proin | 2018.05.02 | 0 |