본문 바로가기
프로그래밍/PHP

05 세션(session)

by 윤지(●'◡'●) 2021. 8. 4.
반응형


세션(session)이란?

 

▪ 세션이란, 웹사이트의 여러 페이지에 걸쳐 사용되는 사용자 정보를 저장하는 방법을 의미한다.

사용자가 브라우저를 닫아 서버와의 연결을 끝내는 시점까지를 세션이라고 한다.

 

▪ 클라이언트 측의 컴퓨터에 모든 데이터를 저장하는 쿠키와 다르게 세션은 서비스가 돌아가는 서버측에 데이터를 저장하고 키값만을 클라이언트 측으로 남겨둔다.

 

▪ 세션도 쿠키와 같이 키와 값으로 저장되는 형태이다.

 

▪ 브라우저는 필요할 때마다 키값을 이용하여 서버에 저장된 데이터를 사용한다.

 

 

 

PHP 세션 시작

 

PHP에서는 파일 제일 상단에 session_start() 함수를 명시하여 시작할 수 있다.

 

session_start();

 

session_start() 함수는 세션 아이디가 이미 존재하는지를 확인하고, 존재하지 않으면 새로운 아이디를 만든다.

 

세션 아이디는 웹 서버에 의해 무작위로 만들어진 숫자이다.

이 세션 아이디는 세션이 유지되는 동안 클라이언트 측에 저장되며, 세션 변수를 등록하는 키로 사용된다.

 

<p>세션 id <?=session_id()?></p>

 

세션 변수 생성 / 수정 / 삭제

 

세션이 생성되고 나면 세션 변수를 수퍼 글로벌인 $_SESSION 배열에 등록할 수 있다.

이때 세션 변수의 이름이 키값이 되며, 이 내용은 서버 측에 저장된다.

등록된 세션 변수는 등록을 해지하지 않는 한 세션이 끝날 때까지 유지된다.

 

1. 생성

[문법]

$_SESSTION["키"] = 값;

 

[예시]

$_SESSION['userid'] = "apple";
//KEY : userid , VALUE: apple
$_SESSION['name'] = "김사과";
//KEY : name , VALUE: 김사과

 

2. 수정

[문법]

$_SESSTION["키"] = 새로운값;

 

[예시]

 

$_SESSION['name'] = "이사과";
//김사과 -> 이사과

 

 

3. 삭제

[문법]

//특정 세선 변수 삭제
unset($_SESSION["키"]);
//모든 세션 변수 삭제
session_unset();

 

[예시]

//특정 세선 변수 삭제
unset($_SESSION["usesrid"]);
//모든 세션 변수 삭제
session_unset();

 

 

 

세션 변수에 접근하기

 

[문법]

 $_SESSION["키"];

 

[예시]

echo "제 아이디는{$_SESSION['userid']}입니다.<br>";
echo "제 이름은 {$_SESSION['name']}입니다.<br>";

 

 

위의 내용을 이용해서 로그인과 로그아웃을 만들어보자

 

로그인

 

login.php

<?php
    session_start(); //세션 시작
?>
<head>
    <title>로그인</title>
</head>
<body>
<?php
    if(!isset($_SESSION['id'])){ 
    //id란 키값을 가진 함수가 없니? > 즉, 아직 로그인을 안한경우
?>
    <form method="post" action="loginP.php"> //loginP.php로 폼 데이터 전달
        <p><label>아이디 : <input type="text" name="userid"></label></p> //아이디 입력란
        <p><label>비밀번호 : <input type="password" name="userpw"></label></p>//비밀번호 입력란
        <p><input type="submit" value="로그인"></p>
    </form>
<?php
    }else{ //id란 키값을 가진 함수가 있을때 > 즉, 로그인된 상태인 경우
?>
    <p><?=$_SESSION['id']?>님 환영합니다.</p>
    <p><a href="./logout.php">로그아웃</a></p> 클릭하면 logout.php파일로 이동
<?php
    }
?>
</body>

 

loginP.php

<?php
    session_start(); //세션시작
    $userid = $_POST['userid']; //login.php에서 POST방식으로 전달된 'userid' 값 가져오기
    $userpw = $_POST['userpw']; //login.php에서 POST방식으로 전달된 'userpw' 값 가져오기

    //location.href='login.php' -> 캐싱되지 않음 , 데이터가 남아있지 않음 (쉽게 생각하면 새로고침)
    if($userid == "admin" && $userpw == "1234"){ //만약 userid가 "admin"이고 userpw "1234"라면
        $_SESSION['id'] = $userid; 
        echo "<script>alert('로그인 되었습니다');location.href='login.php';</script>";
    }else{
        //history.back(); -> 캐싱됨, 데이터가 남음 (쉽게 생각하면 뒤로가기)
        echo "<script>alert('아이디 또는 비밀번호를 확인하세요.');history.back();</script>";
    }
?>

 

logout.php

<?php
    session_start(); //세션시작
    session_unset(); //모든 세션변수 삭제
    echo "<script>alert('로그아웃 되었습니다');location.href='login.php';</script>";
?>

 

 

 

 

 

 

 

세션시작 설명 출처 : tcpschool

열심히 공부하고 있지만, 오류 사항이 존재 할 수 있습니다.

수정 사항이 존재 할 경우 알려주시면 감사하겠습니다 <(__)>

반응형

'프로그래밍 > PHP' 카테고리의 다른 글

07 파일을 이용하여 댓글을 만들어보자  (0) 2021.08.06
06 PHP 파일 다루기  (0) 2021.08.05
04 쿠키(Cookie)  (0) 2021.08.03
03 문자열함수  (0) 2021.08.02

댓글