유돌이

calendar

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

Notice

'쿠키'에 해당되는 글 2

  1. 2008.12.29 쿠키 읽고/쓰기(GetCookie, SetCookie)
  2. 2008.12.20 세션과 쿠기
2008. 12. 29. 23:26 델파이

WinInet.pas 유닛에 정의되어있는
function InternetGetCookie;  function InternetSetCookie; 

를 이용 하면 됩니다.

 

;
procedure TForm1.btnSetCookieClick(Sender: TObject);
var
   sCookieVal: string;
   bRet: boolean;
begin
   bRet := InternetSetCookie('http://www.delphi.co.kr/'nil'myname=nilriri;');
   if not bRet then
      Showmessage('fail');
end;

 


procedure TForm1.Button2Click(Sender: TObject);
var
   sURL: array[0..255] of char;
   sCookieVal: array[0..255] of char;
   pCookieVal: PAnsiChar;

   iSize: LongWord;
   bRet: boolean;

begin
   sUrl := 'http://www.delphi.co.kr/';

   pCookieVal := @sCookieVal;
   iSize := 255;

   bRet := InternetGetCookie(sUrl, nil, pCookieVal, iSize);

   if bRet then
      Showmessage(pCookieVal);

end;

<!--CodeE-->

'델파이' 카테고리의 다른 글

구분자(delimiter)를 사용한 문자열 파싱(parsing)  (0) 2008.12.29
OleVariant 형을 스트링으로 변환하는 방법  (0) 2008.12.29
파일 찾기  (0) 2008.12.24
실행파일 삭제  (0) 2008.12.24
키보드 이벤트[keybd_event  (0) 2008.12.24
posted by 유돌이
2008. 12. 20. 22:11 PHP/Java Script/html

* 쿠키와 세션이란 같은 사용자인지를 알아내는 방법 *

* 정보가 쿠키는 클라이언트, 세션은 서버에 저장됨 *

 

1.웹사이트에 로그인 후,
주소표시줄에 다음을 입력

javascript:alert(document.cookie)

2.cookie
2-1. 쿠키란?
같은 사용자인지를 알아내기 위해 클라이언트쪽에 저장되는 값.

2-2. Cookie사용법

setCookie(쿠키변수,변수값,시간,디렉토리);

** 쿠키변수 : $는 사용하지 않는다. 단, 저장된 쿠키값을 사용할 때는 $변수명과 같이 사용

** 변수값 : 쿠키 생성할 때는 값을 입력하고, 삭제시에는 ""와 같이 작성

** 만료시간 : 쿠키 변수가 쿠키값을 가지고 있는 유효 시간을 나탸낸다. "0"으로 설정하면 브라우저가 닫히면 쿠키값이 사라지고 기간을 주는 경우에는 "time()+3600"과 같은 형태로 설정한다.

** 디렉토리 : 아무값도 설정하지 않는 경우 서브디렉토리에만 쿠키가 적용되나 상위,하위의 모든 디렉토리에서 적용하기 위해서는 '/'로 설정

a.php
< ?
setcookie("userid","suhoi");
?>

b.php
< ?
echo $userid;
?>


< ?
global $mode;
if (!$mode){
echo " 여기는 cookie.php입니다. < br>";
echo "< form name=cookie method=get action=cookie.php>";
echo "            ";
echo "ID : < input type=text name=id size=10> < br>" ;
echo "Nickname : < input type=text name=nickname size=15> < br>";
echo "< input type=hidden name=mode value=write>< br>< br>";
echo "< input type=submit value='쿠키에 저장되었는지 볼까요'>< br>";
echo "< /form>";
}
if ($mode=="write"){
setcookie("ID",$id,0);
setcookie("Nickname",$nickname,time()+36600);
echo "ID : $ID < br>" ;
echo "Nickname : $Nickname < br>< br>";
echo "< a href='cookie.php?mode=view'>쿠키에 저장되었는지 볼까요?< /a>< br>";
}
if ($mode=="del"){
setcookie("ID","");
setcookie("Nickname","");
echo "ID : $ID < br>" ;
echo "Nickname : $Nickname < br>";
echo "여기에서는 ID에 설정된 값을 모두 삭제합니다.< br>< br>";
echo "< a href='cookie.php?mode=view'>쿠키값이 삭제되었는지 볼까요?< /a>< br>";
}
if ($mode=="view"){
echo " 현재 적용된 쿠키의 상태를 보여줍니다. < br>";
echo "ID : $ID < br>" ;
echo "Nickname : $Nickname < br>< br>";
echo "< a href='cookie.php?mode=del'>쿠키값을 삭제합니다.< /a>< br>< br>";
echo "< a href='cookie.php'>다시 쿠키처음으로 돌아갑니다.< /a>< br>";
}
?>

3. 세션 시작하기

◆ 세션이란 무엇인가?

세션도 역시 상태 유지(로그인유지) 를 위해 필요한 것임다.


◆ 샌님 근디 왜 세션을 써야 하나용 ?
아직도 감이 안올수도 있슴다. 왜 써야 할까요? 저번에도 말했듯이 이놈이 이놈인지 저놈이 저놈인지 구별하기
위해서 사용함다. 세션은 쿠키의 발전된 개념으로 서버에 저장이 됨다. 물론 사용자 하드에도 저장이 되나 서버
에 저장되어 있는 값이 우선임다.

쿠키 보다는 약간 보안이 좋아졌다고 하네용 ^^

◆ 어케 쓰는가 ?
세션을 사용할려면 반드시 session_start() 를 먼저 써주어야 함다. 이유 여하 불문 하고 맨먼저 session_start
() 를 사용하면 세션을 쓰겟다 이소리 임다.^^


◆세션 값을 봐볼까나 ?

se1.php
< ?
session_start();
$my_session="마이홈 쩜 ,네이버 쩜 컴 ,수호이";
session_register("my_session");
print "세션등록완료";
?>
-------------------------------------------
se2.php
< ?
session_start();
print "저장된 세션값은 :$my_session 이다 ";
?>

se1.php 와 se2.php 는 세션을 이해 하기 쉬운 예제 임다.
우선 브라우져 에서 se2.php 를 실행 해 보세요. 그러면 당연히 아무것도 안찍히죵 ^^
세션값을 정해 주지 않았으니까요 ^^

세션값을 정해 주는 놈이 session_register() 임다. 세션_등록()이죵 ^^ 쿠쿠

$my_session="마이홈 쩜,네이버 쩜 컴 ,수호이"; 나 마찬가지죵. 그러나 변수와는 달리 어디서나 불러도 값을
불 를 수 있슴다. ^^


◆ 좀 더 예가 필요하당.
온라인 폴 시스템을 예를 들어 보자. 한번 투표 할 경우 다음에는 투표를 하지 못해야 한다. 새로고침 을 열나
눌러서 올라가게 만들면 안되는 것이다. 온라인 폴의 중복 체크는 아주 간단하다.

poll.php

< ?
session_start();
if(!$c)
{
$c="vote";
session_register("c");
echo "투표하러가세";

}else{
echo " 당신은 투표 했는디...날 바보로 아남? ";
}
?>

poll.php 를 실행 해보세용 ^^
처음에 했을때와 2번째 했을때 를 비교 하세요^^


◆ 실수 체크
세션을 등록 할때 $ 는 들어가지 않는다. 반드시 주의 하길 바람다. ^^

$c="vote";
session_register("$c");

가 아니라
$c="vote";
session_register("c");
이며

그다음에 $c 로 값을 읽어 옴다 ^^


3-1. session_start() : 페이지의 맨 위에서 호출하여야 한다. session_register()를 바로 사용하는 경우 내부적으로 session_start()를 호출하기 때문에 큰이상은 없지만 호출하는 것이 좋다..

아니면 php.ini안의 session.auto_start옵션을 1또는on으로 수정해 두면 된다.


3-2. 예제
< ?
global $mode;

function ss_dispaly(){
global $ID, $Nickname;
echo "< br>< b> 현재 설정된 SESSION 변수를 확인합니다.< /b>< br>";
echo "< br> ID 등록여부: ";
echo session_is_registered('ID');
echo "< br>Nickname 등록여부: ";
echo session_is_registered('Nickname');
echo "< br>";
echo "< br> ID값: ";
echo $ID;
echo "< br> Nickname값: ";
echo $Nickname;
}

if (!$mode){

echo "< br>< hr wdith=80%>< br>여기는 session.php 시작입니다. < br>";
echo "ID와 닉네임을 입력하세요. < br>";
echo "< form name=session method=post action=session.php>";
echo "           ";
echo "ID : < input type=text name=ID size=10> < br>" ;
echo "Nickname : < input type=text name=Nickname size=15> < br>";
echo "< input type=hidden name=mode value=write>< br>< br>";
echo "< input type=submit value='세션에 저장되었는지 볼까요'>< br>";
echo "< /form>< br>< hr wdith=80%>";
}

if ($mode=="write"){
session_start();
session_register("ID");
session_register("Nickname");
ss_dispaly();
echo "< br>< br>< a href='session.php?mode=del'>session 데이터를 삭제해 볼까요?< /a>< br>";
}

if ($mode=="del"){
session_start();
session_unregister("ID");
session_unregister("Nickname");
session_destroy();
echo "여기에서는 세션에 설정된 값이 모두 삭제되었습니다.< br>< br>";
ss_dispaly();
echo "< br>< hr width=100%>< br>";
echo "< a href='session.php'>다시 처음으로 돌아가 볼까요?< /a>< br>";
}
?>

* 세션은 쿠키와 다르게 유지시간을 설정하지 않는다. *


** 세션의 장점 **
1. 서버에 저장되어 보안적인 측면이 강화
2. 웹페이지를 읽기만 하더라고 세션의 연결 유지시간이 자동으로 증가돼.일정시간동안 아무 작업을 하지 않을시 세션을 끊기가 유리

 

---------------------------------------------------------------------------------------

 

요약

1. 세션 / 쿠키

: 같은 사용자인지 구분

 

2. 쿠키 설정(삭제)

: setcookie("변수","값",시간,디렉토리)

  setcookie("변수","")

 

3. 세션

: session_start();

할당 : session_register(변수)

삭제 : sesstion_unregister(변수)



-------------------------------------------------------------------------------
sDZpgPEIa4m0tdZqmgJrvGO//b7vVKnZeY5tOA/LS90=
posted by 유돌이
prev 1 next