세션을 사용한 PHP 로그인/로그아웃 소스 > php

본문 바로가기
사이트 내 전체검색

php

세션을 사용한 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>

c

댓글목록

등록된 댓글이 없습니다.

Total 612건 17 페이지
게시물 검색

회원로그인

접속자집계

오늘
188
어제
163
최대
1,347
전체
154,722
Latest Crypto Fear & Greed Index

그누보드5
Copyright © 서방님.kr All rights reserved.