PHP 세 션 메커니즘 소개 및 용법

서버 가 session 을 만 들 었 을 때(sessionstart()서버 는 서버 가 지정 한 폴 더 아래 에 session 파일 을 만 들 고 이름 은 session ID 이 며 쿠키 값 으로 브 라 우 저 에 보 냅 니 다.브 라 우 저 는 이 서버 를 방문 할 때마다 이 쿠키 를 가지 고 다 니 며 서버 는 session ID 를 인식 하고 해당 하 는 session 파일 을 찾 습 니 다.이 파일 에는 몇 개의 키 가 저장 되 어 있다.이 session 파일 에 저 장 된 폴 더 는 설정 파일 php,ini 에서 수정 할 수 있 습 니 다.

쿠키 는 페이지 를 요청 할 때마다 검증 을 합 니 다.사용자 정보 가 데이터베이스 에 저장 되면 매번 데이터베이스 조 회 를 실행 하여 데이터베이스 에 불필요 한 부담 을 줍 니 다.쿠키 는 수정 할 수 있 기 때문에 안전 계수 가 너무 낮 습 니 다.
session 은 서버 단면 에 저 장 된 세 션 으로 상대 적 으로 안전 하 며 쿠키 처럼 저장 길이 가 제한 되 어 있 지 않 습 니 다.세 션 은 서버 에 텍스트 파일 로 저장 되 어 있 기 때문에 클 라 이언 트 가 세 션 내용 을 수정 하 는 것 을 두려워 하지 않 습 니 다.실제로 서버 쪽 에 있 는 세 션 파일 은 PHP 가 세 션 파일 을 자동 으로 수정 할 수 있 는 권한 으로 시스템 읽 기와 쓰기 권한 만 유지 하고 ftp 를 통 해 수정 할 수 없 기 때문에 훨씬 안전 합 니 다.
쿠키 의 경우 로그 인 여 부 를 검증 하려 면 쿠키 에 사용자 이름과 비밀 번 호 를 저장 하고(md5 암호 화 후 문자열 일 수 있 음)요청 페이지 마다 검증 해 야 합 니 다.
사용자 이름과 비밀 번 호 를 데이터베이스 에 저장 하면 매번 데이터베이스 조 회 를 한 번 씩 실행 하여 데이터베이스 에 불필요 한 부담 을 준다.한 번 의 검증 만 할 수 는 없 기 때문이다.왜 일 까요?
클 라 이언 트 쿠키 의 정보 가 수 정 될 수 있 기 때문이다.$admin 변 수 를 저장 하여 로그 인 여 부 를 표시 합 니 다.$admin 이 true 일 때 로그 인 을 표시 합 니 다.false 일 때 로그 인 하지 않 았 음 을 표시 합 니 다.첫 번 째 인증 을 통과 한 후에$admin 을 true 와 같이 쿠키 에 저장 합 니 다.다음 에는 검증 하지 않 아 도 됩 니 다.맞 습 니까?틀 렸 습 니 다.누 군가 true 인$admin 변 수 를 위조 하면 바로 관리 권한 을 가 져 오지 않 습 니까?아주 안전 하지 않 습 니 다.
세 션 은 다 릅 니 다.세 션 은 서버 에 저 장 된 것 입 니 다.원 격 사용 자 는 세 션 파일 의 내용 을 수정 할 수 없습니다.따라서 저 희 는 단순히$admin 변 수 를 저장 하여 로그 인 여 부 를 판단 할 수 있 습 니 다.첫 번 째 검증 을 통과 한 후에$admin 값 을 true 로 설정 한 다음 에 이 값 이 true 인지 아 닌 지 판단 할 수 있 습 니 다.그렇지 않 으 면 로그 인 인터페이스 로 전환 할 수 있 습 니 다.이렇게 하면 많은 데이터베이스 조작 을 줄 일 수 있다.
또한 쿠키 를 검증 하기 위해 비밀 번 호 를 전달 하 는 매번 의 안전성 을 줄 일 수 있 습 니 다.(Session 인증 은 한 번 만 전달 해 야 합 니 다.SSL 보안 프로 토 콜 을 사용 하지 않 았 다 면)암호 가 md5 암호 화 되 어 있어 도 쉽게 캡 처 될 수 있 습 니 다.
세 션 세 션 은 세 션 세 션 을 여 는 모든 방문 자 에 게 유일한 세 션 ID 를 만들어 사용 자 를 식별 합 니 다.이 세 션 ID 는 사용자 컴퓨터 의 쿠키 에 저 장 될 수도 있 고 URL 을 통 해 전 달 될 수도 있 습 니 다.이에 대응 하 는 구체 적 인 session 값 은 서버 에 저 장 됩 니 다.이것 도 쿠키 와 의 주요 차이 이 고 안전성 이 상대 적 으로 높 습 니 다.
세 션 생 성
session 을 만 들 거나 존재 하 는 세 션 을 되 돌려 주 려 면 session 을 사용 해 야 합 니 다.start()함수 가 session 세 션 을 열 면 시스템 에서 세 션 ID 를 할당 합 니 다.

<?php
session_start();//       ,      true。           ,             ,     
?>

등록 session 변수
session 사용register()함수 가 session 변 수 를 등록 하고 TRUE 로 돌아 가 는 데 성공 하지 않 으 면 FALSE 로 돌아 갑 니 다.
문법:bool sessionregister( mixed name [, mixed ...] )
session 사용register()함 수 는 현재 세 션 에 하나 이상 의 전역 session 변 수 를 등록 할 수 있 습 니 다.인자 name 은 추가 하고 싶 은 변수 이름 이 고 성공 하면 논리 값 true 를 되 돌려 줍 니 다.$SESSION[name]또는$HTTPSESSION_VARS[name]형식 으로 값 을 얻 거나 할당 합 니 다.
예:

<?php
session_start();
$username = "nostop";
session_register("username");
?>
이 예 에서,우 리 는 session 에 username 이라는 변 수 를 등 록 했 는데,그 값 은 nostop 입 니 다.
세 션 읽 기
PHP 에 내 장 된$SESSION 변 수 는 설정 한 session 변 수 를 편리 하 게 접근 할 수 있 습 니 다.
예:

<?php
session_start();
echo "       :".$_SESSION["username"];  //          :nostop
?>
소각 세 션
session_unregister()  단일 session 변수 로그아웃
unset($_SESSION['age']); 로그아웃 시$SESSION[age]등 록 된 session 변수
session_unset()  등 록 된 모든 변 수 를 삭제 합 니 다.
session_destroy()모든 session 변 수 를 취소 하고 전체 session 세 션 을 취소 합 니 다.
예:

<?php
session_start();
session_unregister("username");  //   session     
session_unset();     //   session   
?>
변수 가 세 션 변수 로 등록 되 었 는 지 확인 합 니 다.
session_is_registered
문법:booben sessionis_registered(string name);
이 함 수 는 현재 session 에 지정 한 변수 등록 이 있 는 지 확인 할 수 있 습 니 다.매개 변수 name 은 검사 할 변수 이름 입 니 다.성공 하면 논리 값 true 를 되 돌려 줍 니 다.
예:

<?php
  session_start();
  if(!session_is_registered("gender")){ //            
    session_register("gender");  //    
  }
  $gender=" ";
  echo $_SESSION['gender']; // 
?>
현재 세 션 이름 액세스
session_name
문법:boolean sessionname(string [name]);
이 함 수 는 현재 session 의 이름 을 가 져 오 거나 다시 설정 할 수 있 습 니 다.매개 변수 name 이 없 으 면 현재 session 이름 을 가 져 오 는 것 을 표시 하고 매개 변 수 를 더 하면 session 이름 을 매개 변수 name 으로 설정 하 는 것 을 표시 합 니 다.
예:

<?php

$sessionName = session_name();  //     Session  ,    PHPSESSID
$sessionID = $_GET[$sessionName];  //   Session ID
session_id($sessionID);   //   session_id()       Session ID
?>

현재 세 션 표식 번호 액세스
session_id
문법:boolean sessionid(string [id]);
이 함 수 는 현재 session 에 저 장 된 표지 번 호 를 가 져 오 거나 다시 설정 할 수 있 습 니 다.매개 변수 id 가 없 으 면 현재 session 의 표지 번호 만 가 져 오 는 것 을 나타 내 고 매개 변 수 를 더 하면 session 의 표지 번 호 를 새로 지정 한 id 로 설정 하 는 것 을 나타 낸다.
세 션 의 생존 기간 설정
setcookie:클 라 이언 트 에 HTTP 쿠키 를 보 냅 니 다.

<?php
  session_start
  //     
  $lifeTime = 24 * 3600;
  setcookie(session_name(), session_id(), time() + $lifeTime, "/");
?>
session_set_cookie_params:Session 의 생존 기간 을 설정 한 이 함 수 는 session 에 있어 야 합 니 다.start()함수 호출 전에 호출 합 니 다.
클 라 이언 트 가 IE 6.0,session 을 사용 하면set_cookie_params(); 함수 설정 Cookie 에 문제 가 있 을 수 있 으 므 로 setcookie 함 수 를 수 동 으로 호출 하여 쿠키 를 만 듭 니 다.
//하루 저장

<?php
  $lifeTime = 24 * 3600;
  session_set_cookie_params($lifeTime);
  session_start();
  $_session["admin"] = true;
?>
세 션 파일 의 저장 경로 설정
session_save_path():sessionstart()함수 호출 전에 호출 합 니 다.

<?php
  //         
  $savePath = "./session_save_dir/";
  //     
  $lifeTime = 24 * 3600;
  session_save_path($savePath);
  session_set_cookie_params($lifeTime);
  session_start();
  $_session["admin"] = true;
?>

<?php
session_start();  //  Session
$username='nostop';
session_register('username');  //      username  
echo '     :'.$_SESSION['username'];  //     :nostop    Session  

$_SESSION['age']=23;  //      age   ,   
echo '  :'.$_SESSION['age']; //  :23

session_unregister('username'); //  Session  
echo $_SESSION['username']; // 
echo $_SESSION['age'];//23

unset($_SESSION['age']); //  Session  
echo '     :'.$_SESSION['username']; // 
echo '  :'.$_SESSION['age']; // 
?>

좋은 웹페이지 즐겨찾기