본문 바로가기
php공부

쿠키와 세션

by 몽일! 2023. 4. 18.

time()

-int형이고 void인자없는 함수로 반환값:현재시각

1970년도 부터 경과한시간을 초단위로 계산한값으로 현재시간을  알려준다. 

 

쿠키

쿠키 서버에서 사용자컴퓨터에 어떤웹사이트에 접속한 흔적 남김 text파일로 그사용자가 다시 접속하게 됐을때 쿠키를 읽어볼수있게

(로그인상태유지와같은기능에,보안은 낮고 편의성을 높은)

<?php
$a = setcookie("userid","kdhong", time()+60);//사용자 컴퓨터에 쿠키저장
$userid=$_COOKIE["userid"];//쿠키불러오기
$a= setcookie("userid","");//변수안의 값을 없애면 쿠키삭제하는것과 같다.
//php설정중 register_globels=Off이어야 할수있다.

if($a){//값이 들어있음 참 이라는뜻
    print("쿠키 userid생성! 60초간 지속됨!");
}
?>

setcookie() 

-bool setcookie(string name,stringm value,int expire(소멸기간), string path,string domain,secure )

슈퍼글로벌변수.

쿠키명(필수) : 설정 될 쿠키 이름을 결정함

쿠키값(선택) : 쿠키 이름에 입력될 값

만료시간(선택) : Default 값은 0이며 쿠키가 유지될 시간을 설정,시간이 지나면 자동삭제

경로(선택) : 경로를 지정할 경우 특정 위치와 하위 경로에서만 사용가능하도록 설정됨

슬러쉬(/) : 슬러쉬 기호를 값으로 입력할 경우 전체 경로에서 사용됨을 의미

도메인(선택) : 사용될 도메인을 지정가능함. 서브도메인 입력시 해당 서브도메인만 사용가능

보안(선택) : 보안 프로토콜인 https에서만 사용가능하도록 설정함

httponly : HTTP에서만 사용가능하도록 하여(서버단 언어로만...) 스크립트에 의한 쿠키 접근을 허용 안하게 함.

-반환값 true/false

-<html>이나<head>태그이전에 사용해야 한다 태그를 먼저 사용하면 쿠키를 생성할수 없다 

-보통 로그인 상태유지에 많이 사용한다.

<html><!--로그인폼-->
    <head>
        <title>로그인양식</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <form method="post" action="login_result.php">
    <body><input type="text" name="ueserid" placeholder="아이디" required autofocus><!--placeholder:누르면 입력창으로 변하게-->
        <input type="password" name="password" placeholder="비밀번호" required autofocus>
        <input type="checkbox" name="chbox" value="yes">로그인 상태유지<
        <input type="submit" value="로그인">
        </form>
           
    </body>
</html>
<?php
$ueserid = $_REQUEST["ueserid"];//로그인 정보 받아오기
$password = $_REQUEST["password"];
$chbox = $_REQUEST["chbox"];

if($chbox =="yes"){//로그인유지 체크박스가 활성화되면 쿠키생성하기 
    $a = setcookie("userid","dbwls");
    $b = setcookie("password","12345");
}

if($ueserid=="dbwls" && $password=="12345"){//아이디패스워드 맞으면 로그인성공
    print "로그인";
}
else{//아이디패스워드 틀리면 경고창띄우기
?>
<script>alert("아이디와 비밀번호가 틀립니다.")
    history.back();
    </script>
<?php
}
?>

쿠키 확인하는법 

엣지

브라우저상단> 설정>쿠키및 사이트 권한>쿠키및사이트 데이터 관리및삭제>모든쿠키및사이트 데이터 보기 


세션

-사용자 웹브라우저로 서버에 접속하게 되면 세션아이디가 잡힘(유일성)

-페이지중 반드시 로그인해야지만 볼수있는 페이지를 만들떄 사용

-서버 중심으로.세션정보는 서버에 데이터가 저장되고 클라이언트에 키가 저장되어 대등하게 들어있다.

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

-쿠키처럼 파일 단위로 남기는것이 아니기 때문에 보안성 문제떄문에 세션이 더많이 활용된다.

-세션변수는 globels변수로 이페이지 뿐만아니라 다른페이지에서도 영향을 끼칠수있음.

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

세션활성화와 등록

session_start();

$_SESSION['userid']="dbwls";

삭제

unset($_SESSION['userid']);

위의 실습에 얹어 하겠음 

<?php
session_start();//세션시작
$ueserid = $_REQUEST["ueserid"];//로그인 정보 받아오기
$password = $_REQUEST["password"];
$chbox = $_REQUEST["chbox"];

$_SESSION["userid"]=$ueserid;//세션변수생성

if($chbox =="yes"){//로그인유지 체크박스가 활성화되면 쿠키생성하기 
    $a = setcookie("userid","dbwls");
    $b = setcookie("password","12345");
}

if($ueserid=="dbwls" && $password=="12345"){//아이디패스워드 맞으면 넘기기
    print "로그인";
}
else{//아이디패스워드 틀리면 경고창띄우기
?>
<script>alert("아이디와 비밀번호가 틀립니다.")
    history.back();
    </script>
<?php
}
?>

다른페이지에서도 세션정보 사용가능한지 확인하기

연계받지 않아도 같은 서버안에 있다면 세션정보 사용가능하다.

<?php
session_start();

print $_SESSION["userid"]."님의 방문을환영합니다.<p>";

?>

 

 

 

 

'php공부' 카테고리의 다른 글

php mysql연동오류  (0) 2023.04.19
쿠키와 세션2  (0) 2023.04.18
[PHP기초]함수  (0) 2023.04.18
[php기초] 배열,2차배열  (0) 2023.04.18
[PHP기초] if조건문과, while반복문  (0) 2023.04.17