지난시간에 어느 페이지에서든 변수를 꺼내 사용할 수 있는 쿠키과 내용을 기록하고 꺼내사용할 수 있는 파일 이용하는 방법을 배웠습니다.
전체를 진행하기 전에 우선 최초에 접근하는 페이지를 먼저 만들어 보도록 하겠습니다.
로그인 하지 않았을 경우 21_1.php 출력
로그인 했을 경우 21_1.php 출력
쿠키에 user_name 이란 변수에 값이 있는지를 조사하여 로그인 한 경우와 로그인 하지 않은 경우를 구분한다.
이제 회원가입을 하는 페이지를 만들어 보자.
로그인 한 상태로 접근한 경우 21_2.php 출력
로그인 하지 않은 상태로 접근한 경우 21_2.php 출력
로그인 한 경우는 회원가입을 할 수 없으므로 로그인 한 경우와 로그인 하지 않은 경우로 나누어 처리한다.
로그인 여부는 쿠키에 저장되어 있는 user_name 값의 여부로 따진다.
회원가입 처리 페이지
로그인 한 상태로 접근한 경우 21_2.php 출력
아이디나 비밀번호를 입력하지 않은 채 회원가입 버튼을 누른 경우 21_3.php 출력
아이디가 이미 가입된 경우 21_3.php 출력
제대로 가입된 경우 21_3.php 출력
우선 로그인 여부를 따져 로그인 사람의 경우 로그인되었다는 메세지를 띄운다.
로그인 하지 않았을 경우 입력값이 제대로 들어왔는지, 가입되어 있는지 를 따져 해당 결과에 따라 메세지를 띄운다.
로그인 처리 페이지
로그인 한 상태로 접근한 경우 21_4.php 출력
로그인 정보가 정확하지 않을 때의 21_4.php 출력
로그인 정보가 정확할 경우 21_4.php 출력
로그인 여부를 먼저 검사 후 로그인 한 경우 로그인했다는 메세지를 출력한다.
로그인 하지 않았을 경우에는 파일을 검사해 아이디와 비밀번호가 일치하는 정보가 있으면 아이디와 이름을 쿠키에 저장하고
메세지를 출력한다.
로그아웃 처리 페이지
로그인 한 상태로 접근한 12_5.php 출력 결과
로그인 하지 않은 상태로 접근한 12_5.php 출력 결과
역시 로그인 여부를 따져 로그인 하지 않았을 경우에는 로그아웃이 필요 없으므로 로그인한 상태가 아니라고 출력하고
로그인 한 상태면 쿠키값을 비워 로그아웃된 상태로 만든 후 출력한다.
이처럼 파일과 쿠키를 가지고 로그인 여부나 회원 처리를 할수 있습니다.
그러나 파일이나 쿠키는 다른 사람이 읽을 수 있기 때문에 보안상 적절하지 않은 방법입니다.
여기서는 이러한 방식으로 관리가 가능하다는 것을 알려드리는 것입니다.
다음시간에는 PHP에서 많이 사용되는 기본적인 환경 변수들에 대해 알아보도록 하겠습니다.
그리고 이제부터는 설명을 많이 줄이고 주석으로 대체 하도록 하겠으니 질문이 있으시면 댓글로 남겨주시면 답변해 드리도록 할께요. ^^
전체를 진행하기 전에 우선 최초에 접근하는 페이지를 먼저 만들어 보도록 하겠습니다.
<?
// 처음 및 로그인 페이지
// 쿠키에 저장된 아이디 값을 불러오기
$user_id = $_COOKIE['user_id'];
// 쿠키에 저장된 이름 값을 불러오기
$user_name = $_COOKIE['user_name'];
// 쿠키에 저장된 아이디 값이 있으면 로그인 한 상태이므로
if($user_id){
?>
<table border="1">
<tr>
<td align="center"><?=$user_name?>님 어서오세요.</td>
</tr>
<tr>
<td align="center">아이디 : <?=$user_id?></td>
</tr>
<tr>
<td align="center"><a href="21_5.php">로그아웃</a></td>
</tr>
</table>
<?
// 쿠키에 저장된 아이디 값이 없으면 로그인 안 한 상태이므로
}else{
?>
<form name="flogin" method="post" action="21_4.php">
<table border="1">
<tr>
<td align="center">찾아주셔서 감사합니다.</td>
</tr>
<tr>
<td align="center">아이디 : <input type="text" name="user_id"></td>
</tr>
<tr>
<td align="center">비밀번호 : <input type="password" name="user_pw"></td>
</tr>
<tr>
<td align="center"><input type="submit" value="로그인"></td>
</tr>
<tr>
<td align="center"><a href="21_2.php">회원가입</a></td>
</tr>
</table>
</form>
<?
}
?>
[21_1.php 소스]// 처음 및 로그인 페이지
// 쿠키에 저장된 아이디 값을 불러오기
$user_id = $_COOKIE['user_id'];
// 쿠키에 저장된 이름 값을 불러오기
$user_name = $_COOKIE['user_name'];
// 쿠키에 저장된 아이디 값이 있으면 로그인 한 상태이므로
if($user_id){
?>
<table border="1">
<tr>
<td align="center"><?=$user_name?>님 어서오세요.</td>
</tr>
<tr>
<td align="center">아이디 : <?=$user_id?></td>
</tr>
<tr>
<td align="center"><a href="21_5.php">로그아웃</a></td>
</tr>
</table>
<?
// 쿠키에 저장된 아이디 값이 없으면 로그인 안 한 상태이므로
}else{
?>
<form name="flogin" method="post" action="21_4.php">
<table border="1">
<tr>
<td align="center">찾아주셔서 감사합니다.</td>
</tr>
<tr>
<td align="center">아이디 : <input type="text" name="user_id"></td>
</tr>
<tr>
<td align="center">비밀번호 : <input type="password" name="user_pw"></td>
</tr>
<tr>
<td align="center"><input type="submit" value="로그인"></td>
</tr>
<tr>
<td align="center"><a href="21_2.php">회원가입</a></td>
</tr>
</table>
</form>
<?
}
?>
로그인 하지 않았을 경우 21_1.php 출력
로그인 했을 경우 21_1.php 출력
쿠키에 user_name 이란 변수에 값이 있는지를 조사하여 로그인 한 경우와 로그인 하지 않은 경우를 구분한다.
이제 회원가입을 하는 페이지를 만들어 보자.
<?
// 회원가입 페이지
// 쿠키에 저장된 아이디 값을 불러오기
$user_id = $_COOKIE['user_id'];
// 쿠키에 저장된 아이디 값이 있으면 로그인 한 상태이므로
if($user_id){
?>
이미 로그인 하셨습니다.<br/>
<a href="./21_1.php">처음으로</a>
<?
// 쿠키에 저장된 아이디 값이 없으면 로그인 안 한 상태이므로
}else{
?>
<form name="frgistration" method="post" action="21_3.php">
<table border="1">
<tr>
<td align="center">회원가입</td>
</tr>
<tr>
<td align="center">아이디 : <input type="text" name="user_id"></td>
</tr>
<tr>
<td align="center">비밀번호 : <input type="password" name="user_pw"></td>
</tr>
<tr>
<td align="center">이름 : <input type="text" name="user_name"></td>
</tr>
<tr>
<td align="center"><input type="submit" value="가입하기"></td>
</tr>
<tr>
<td align="center"><a href="./21_1.php">처음으로</a></td>
</tr>
</table>
</form>
<?
}
?>
[21_2.php 소스]// 회원가입 페이지
// 쿠키에 저장된 아이디 값을 불러오기
$user_id = $_COOKIE['user_id'];
// 쿠키에 저장된 아이디 값이 있으면 로그인 한 상태이므로
if($user_id){
?>
이미 로그인 하셨습니다.<br/>
<a href="./21_1.php">처음으로</a>
<?
// 쿠키에 저장된 아이디 값이 없으면 로그인 안 한 상태이므로
}else{
?>
<form name="frgistration" method="post" action="21_3.php">
<table border="1">
<tr>
<td align="center">회원가입</td>
</tr>
<tr>
<td align="center">아이디 : <input type="text" name="user_id"></td>
</tr>
<tr>
<td align="center">비밀번호 : <input type="password" name="user_pw"></td>
</tr>
<tr>
<td align="center">이름 : <input type="text" name="user_name"></td>
</tr>
<tr>
<td align="center"><input type="submit" value="가입하기"></td>
</tr>
<tr>
<td align="center"><a href="./21_1.php">처음으로</a></td>
</tr>
</table>
</form>
<?
}
?>
로그인 한 상태로 접근한 경우 21_2.php 출력
로그인 하지 않은 상태로 접근한 경우 21_2.php 출력
로그인 한 경우는 회원가입을 할 수 없으므로 로그인 한 경우와 로그인 하지 않은 경우로 나누어 처리한다.
로그인 여부는 쿠키에 저장되어 있는 user_name 값의 여부로 따진다.
회원가입 처리 페이지
<?
// 회원정보 저장 페이지
// 쿠키에 저장된 아이디 값을 불러오기
$user_id = $_COOKIE['user_id'];
// 쿠키에 저장된 아이디 값이 있으면 로그인 한 상태이므로
if($user_id){
?>
이미 로그인 하셨습니다.<br/>
<a href="./21_1.php">처음으로</a>
<?
// 쿠키에 저장된 아이디 값이 없으면 로그인 안 한 상태이므로
}else{
// 아이디와 비밀번호 값이 둘다 있으면
if($_POST['user_id'] && $_POST['user_pw']){
$savefile = "./data/21_1.txt";
// 가입여부 변수
$is_registerd = false;
// 파일이 존재하면
if(file_exists($savefile)){
// 파일을 읽기 전용으로 읽고
$fp = fopen($savefile, "r");
// 파일내용이 없을때까지 한줄씩 읽어 $data 에 내용 넣기
while($data = fgets($fp, 1024)){
// 구분자 | 로 잘라 배열로 저장
$user_data = explode("|", $data);
// 일치하는 아이디가 있으면 이미 가입한 사람
if($_POST['user_id'] == $user_data[0]){
$is_registerd = true;
}
}
fclose($fp);
}
// 가입한 사람이면
if($is_registerd){
?>
이미 가입 하셨습니다.<br/>
<a href="./21_1.php">처음으로</a>
<?
// 가입하지 않은 사람이면 파일에 저장 후 가입메세지 출력
}else{
$fp = fopen($savefile, "a+");
$data = $_POST['user_id']."|".$_POST['user_pw']."|".$_POST['user_name']."\n";
fwrite($fp, $data);
fclose($fp);
?>
가입을 축하드립니다.<br/>
<a href="./21_1.php">처음으로</a>
<?
}
// 하나라도 없으면
}else{
?>
아이디나 패스워드를 입력하지 않으셨습니다.<br/>
<a href="./21_2.php">회원가입</a><br/>
<a href="./21_1.php">처음으로</a>
<?
}
}
?>
[21_3.php 소스]// 회원정보 저장 페이지
// 쿠키에 저장된 아이디 값을 불러오기
$user_id = $_COOKIE['user_id'];
// 쿠키에 저장된 아이디 값이 있으면 로그인 한 상태이므로
if($user_id){
?>
이미 로그인 하셨습니다.<br/>
<a href="./21_1.php">처음으로</a>
<?
// 쿠키에 저장된 아이디 값이 없으면 로그인 안 한 상태이므로
}else{
// 아이디와 비밀번호 값이 둘다 있으면
if($_POST['user_id'] && $_POST['user_pw']){
$savefile = "./data/21_1.txt";
// 가입여부 변수
$is_registerd = false;
// 파일이 존재하면
if(file_exists($savefile)){
// 파일을 읽기 전용으로 읽고
$fp = fopen($savefile, "r");
// 파일내용이 없을때까지 한줄씩 읽어 $data 에 내용 넣기
while($data = fgets($fp, 1024)){
// 구분자 | 로 잘라 배열로 저장
$user_data = explode("|", $data);
// 일치하는 아이디가 있으면 이미 가입한 사람
if($_POST['user_id'] == $user_data[0]){
$is_registerd = true;
}
}
fclose($fp);
}
// 가입한 사람이면
if($is_registerd){
?>
이미 가입 하셨습니다.<br/>
<a href="./21_1.php">처음으로</a>
<?
// 가입하지 않은 사람이면 파일에 저장 후 가입메세지 출력
}else{
$fp = fopen($savefile, "a+");
$data = $_POST['user_id']."|".$_POST['user_pw']."|".$_POST['user_name']."\n";
fwrite($fp, $data);
fclose($fp);
?>
가입을 축하드립니다.<br/>
<a href="./21_1.php">처음으로</a>
<?
}
// 하나라도 없으면
}else{
?>
아이디나 패스워드를 입력하지 않으셨습니다.<br/>
<a href="./21_2.php">회원가입</a><br/>
<a href="./21_1.php">처음으로</a>
<?
}
}
?>
로그인 한 상태로 접근한 경우 21_2.php 출력
아이디나 비밀번호를 입력하지 않은 채 회원가입 버튼을 누른 경우 21_3.php 출력
아이디가 이미 가입된 경우 21_3.php 출력
제대로 가입된 경우 21_3.php 출력
우선 로그인 여부를 따져 로그인 사람의 경우 로그인되었다는 메세지를 띄운다.
로그인 하지 않았을 경우 입력값이 제대로 들어왔는지, 가입되어 있는지 를 따져 해당 결과에 따라 메세지를 띄운다.
로그인 처리 페이지
<?
// 로그인 처리 페이지
// 쿠키에 저장된 아이디 값을 불러오기
$user_id = $_COOKIE['user_id'];
// 쿠키에 저장된 아이디 값이 있으면 로그인 한 상태이므로
if($user_id){
?>
이미 로그인 하셨습니다.<br/>
<a href="./21_1.php">처음으로</a>
<?
// 쿠키에 저장된 아이디 값이 없으면 로그인 안 한 상태이므로
}else{
// 저장된 파일에서 아이디 검색하기
$savefile = "./data/21_1.txt";
// 파일이 존재하면
if(file_exists($savefile)){
// 가입여부 변수
$is_registerd = false;
// 파일을 읽기 전용으로 읽고
$fp = fopen($savefile, "r");
// 파일내용이 없을때까지 한줄씩 읽어 $data 에 내용 넣기
while($data = fgets($fp, 1024)){
// 구분자 | 로 잘라 배열로 저장
$user_data = explode("|", $data);
// 아이디와 비밀번호가 일치하면
if($_POST['user_id'] == $user_data[0] && $_POST['user_pw'] == $user_data[1]){
$is_registerd = true;
$user_id = $user_data[0];
$user_name = $user_data[2];
}
}
fclose($fp);
// 로그인 정보가 일치할 경우
if($is_registerd){
// 쿠키에 5분간 저장
setcookie("user_id", $user_id, time() + 60*5);
setcookie("user_name", $user_name, time() + 60*5);
?>
어서오세요. <?=$user_name?>님<br/>
<a href="./21_1.php">처음으로</a>
<?
// 로그인 정보가 일치 하지 않을 경우
}else{
?>
로그인 정보가 정확하지 않습니다.<br/>
<a href="./21_1.php">처음으로</a> <a href="./21_2.php">회원가입</a>
<?
}
// 파일이 존재 하지 않으면 가입도 당연히 안되어 있으므로
}else{
?>
로그인 정보가 정확하지 않습니다.<br/>
<a href="./21_1.php">처음으로</a> <a href="./21_2.php">회원가입</a>
<?
}
}
?>
[21_4.php 소스]// 로그인 처리 페이지
// 쿠키에 저장된 아이디 값을 불러오기
$user_id = $_COOKIE['user_id'];
// 쿠키에 저장된 아이디 값이 있으면 로그인 한 상태이므로
if($user_id){
?>
이미 로그인 하셨습니다.<br/>
<a href="./21_1.php">처음으로</a>
<?
// 쿠키에 저장된 아이디 값이 없으면 로그인 안 한 상태이므로
}else{
// 저장된 파일에서 아이디 검색하기
$savefile = "./data/21_1.txt";
// 파일이 존재하면
if(file_exists($savefile)){
// 가입여부 변수
$is_registerd = false;
// 파일을 읽기 전용으로 읽고
$fp = fopen($savefile, "r");
// 파일내용이 없을때까지 한줄씩 읽어 $data 에 내용 넣기
while($data = fgets($fp, 1024)){
// 구분자 | 로 잘라 배열로 저장
$user_data = explode("|", $data);
// 아이디와 비밀번호가 일치하면
if($_POST['user_id'] == $user_data[0] && $_POST['user_pw'] == $user_data[1]){
$is_registerd = true;
$user_id = $user_data[0];
$user_name = $user_data[2];
}
}
fclose($fp);
// 로그인 정보가 일치할 경우
if($is_registerd){
// 쿠키에 5분간 저장
setcookie("user_id", $user_id, time() + 60*5);
setcookie("user_name", $user_name, time() + 60*5);
?>
어서오세요. <?=$user_name?>님<br/>
<a href="./21_1.php">처음으로</a>
<?
// 로그인 정보가 일치 하지 않을 경우
}else{
?>
로그인 정보가 정확하지 않습니다.<br/>
<a href="./21_1.php">처음으로</a> <a href="./21_2.php">회원가입</a>
<?
}
// 파일이 존재 하지 않으면 가입도 당연히 안되어 있으므로
}else{
?>
로그인 정보가 정확하지 않습니다.<br/>
<a href="./21_1.php">처음으로</a> <a href="./21_2.php">회원가입</a>
<?
}
}
?>
로그인 한 상태로 접근한 경우 21_4.php 출력
로그인 정보가 정확하지 않을 때의 21_4.php 출력
로그인 정보가 정확할 경우 21_4.php 출력
로그인 여부를 먼저 검사 후 로그인 한 경우 로그인했다는 메세지를 출력한다.
로그인 하지 않았을 경우에는 파일을 검사해 아이디와 비밀번호가 일치하는 정보가 있으면 아이디와 이름을 쿠키에 저장하고
메세지를 출력한다.
로그아웃 처리 페이지
<?
// 로그아웃 페이지
// 쿠키에 저장된 아이디 값을 불러오기
$user_id = $_COOKIE['user_id'];
// 쿠키에 저장된 아이디 값이 있으면 로그인 한 상태이므로
if($user_id){
// 쿠키에서 값 삭제
setcookie("user_id", "");
setcookie("user_name", "");
?>
로그 아웃 되었습니다.<br/>
<a href="./21_1.php">처음으로</a>
<?
// 쿠키에 저장된 아이디 값이 없으면 로그인 안 한 상태이므로
}else{
?>
로그인한 상태가 아닙니다.<br/>
<a href="./21_2.php">회원가입</a><br/>
<a href="./21_1.php">처음으로</a>
<?
}
?>
[21_5.php 소스]// 로그아웃 페이지
// 쿠키에 저장된 아이디 값을 불러오기
$user_id = $_COOKIE['user_id'];
// 쿠키에 저장된 아이디 값이 있으면 로그인 한 상태이므로
if($user_id){
// 쿠키에서 값 삭제
setcookie("user_id", "");
setcookie("user_name", "");
?>
로그 아웃 되었습니다.<br/>
<a href="./21_1.php">처음으로</a>
<?
// 쿠키에 저장된 아이디 값이 없으면 로그인 안 한 상태이므로
}else{
?>
로그인한 상태가 아닙니다.<br/>
<a href="./21_2.php">회원가입</a><br/>
<a href="./21_1.php">처음으로</a>
<?
}
?>
로그인 한 상태로 접근한 12_5.php 출력 결과
로그인 하지 않은 상태로 접근한 12_5.php 출력 결과
역시 로그인 여부를 따져 로그인 하지 않았을 경우에는 로그아웃이 필요 없으므로 로그인한 상태가 아니라고 출력하고
로그인 한 상태면 쿠키값을 비워 로그아웃된 상태로 만든 후 출력한다.
이처럼 파일과 쿠키를 가지고 로그인 여부나 회원 처리를 할수 있습니다.
그러나 파일이나 쿠키는 다른 사람이 읽을 수 있기 때문에 보안상 적절하지 않은 방법입니다.
여기서는 이러한 방식으로 관리가 가능하다는 것을 알려드리는 것입니다.
다음시간에는 PHP에서 많이 사용되는 기본적인 환경 변수들에 대해 알아보도록 하겠습니다.
그리고 이제부터는 설명을 많이 줄이고 주석으로 대체 하도록 하겠으니 질문이 있으시면 댓글로 남겨주시면 답변해 드리도록 할께요. ^^
'PHP 강좌' 카테고리의 다른 글
| [PHP 강좌] 23. MySql 이란? (2) | 2009/09/26 |
|---|---|
| [PHP 강좌] 22. PHP의 환경변수들 (9) | 2009/09/22 |
| [PHP 강좌] 21. 파일,쿠키를 이용한 회원가입,로그인,로그아웃 기능 만들기 (22) | 2009/09/13 |
| [PHP 강좌] 20. 쿠키 사용하기 (2) | 2009/09/13 |
| [PHP 강좌] 19. 파일을 이용한 간단 카운터 만들기 (23) | 2009/09/10 |
| [PHP 강좌] 18. 파일을 이용한 간단 방명록 (21) | 2009/09/04 |

