[Powered by Google Translate] [PHP 세션]
[토미 MacWilliam, 하버드 대학]
[이 CS50입니다.] [CS50.TV]
PHP의 세션 기능을 구현하는데 사용될 수있다,
사용자 로그인 등, 웹 응용 프로그램에서.
PHP 세션을 사용하면 정보를 연결할 수 있습니다
사용자의 전체 브라우징 세션과 함께
오히려 단순히 하나의 페이지보다.
사용자가 웹 사이트를 구성하는 여러 PHP 페이지를 방문 그래서 그 의미
세션 정보가 유지됩니다.
그래서 즉, 하나의 페이지에서 세션에 저장된 데이터
나중에 다른 페이지에 액세스 할 수 있습니다.
세션 정보를 저장하는 것은 쉽다
우리는, 밑줄, 달러 기호를 통해 이렇게 자본 SESSION 변수를 수행합니다.
달러 기호, GET, 밑줄, SESSION 다만 달러 기호처럼, 밑줄
및 달러 기호, 밑줄 POST-
키 값 쌍으로 구성된 연관 배열이다.
그래서 우리는, SESSION을 강조 구문과 같은 달러 기호를 사용할 수 있습니다
브라켓, 견적, foo는, 견적, 브라켓, 견적, 동일 바, 따옴표
키의 값 "바"저장하기 "foo는."
그러나, 우리가 작성하거나 세션 배열에서 읽을 수 있습니다 전에,
우리는 특별한 기능을 호출해야합니다
세션 (), 시작, 밑줄 -
이것은 세션을 초기화한다.
그럼 예를 살펴 보자.
첫 페이지, hello.php, 사용자에게 출력을 일부 데이터 세션을 사용한다.
우리는 모든 세션 데이터에 액세스 할 수 있습니다 우리가 있어도 session_start를 사용해야합니다 기억하십시오.
이제 우리는 키가 있는지 확인하기 위해 PHP의 ISSET를 사용하는
$ _SESSION 연관 배열.
그 키가 존재하지 않으면, 즉, 사용자가 로그인 한 상태했음을 의미
그래서 우리는 사용자의 이름을 표시합니다.
그 키가 설정되지 않은 경우, 즉, 사용자는 아직 기록되지 않은 수단
그래서 우리는 login.php에 대한 링크를 표시합니다.
그럼 login.php에 대해 살펴 보겠습니다.
여기 아래, 우리는 하나의 입력과 하나의 HTML 양식이 있습니다.
폼의 동작 특성은, $ _SERVER [ 'PHP_SELF']입니다
이것은 단순히 우리가 폼을 현재 파일로 제출해야 할 것을 의미합니다
이는,이 경우, login.php이다.
그래서 다시이 파일의 상단에 가자.
사용자가 양식을 제출하면, $ _POST [ '이름']으로 설정해야합니다.
HTML 양식 및 게시에 대한 자세한 내용은,
PHP 웹 개발의 비디오를 확인하세요.
사용자가 양식을 제출 한 경우 중심점
우리는 그들이 세션에에서 입력 한 값을 기록하고 싶습니다.
이제 우리는 hello.php로 사용자를 리디렉션 할 수 있습니다.
우리가 세션에 사용자의 입력을 저장 했으므로
hello.php는 login.php에서 설정 한 값에 액세스 할 수 있습니다.
그럼이 웹 브라우저에서 확인 할 수 있습니다.
첫째, 우리는 보통 http://localhost/hello.php로 이동합니다.
우리는, 우리가 아직 로그인하지 않은 것을 여기에서 볼 수 있습니다
그래서이 login.php 우리의 방향을 바꿀 것이라는 로그인 링크를 클릭 할 수 있습니다.
좋아, 다음 세션에 저장되는, 내 이름을 입력합니다.
좋아! 이제 우리는 세션을 통해 hello.php에 login.php에서 내 입력을 볼 수 있습니다.
그래서, 사용자가 로그 아웃에 대한?
물론, 사용자의 로그하기 위해, 우리는 단순히 세션 이름에 값을 저장.
따라서 사용자가 로그 아웃하기 위해, 우리는 단순히 그 이름의 키를 제거해야
세션 배열.
그래서 logout.php,의이 마지막 파일에 대해 살펴 보겠습니다.
다시 한번, 우리는 () 때 session_start를 호출해야합니다
우리는 아무것도 관련 세션을 수행 할 수 있습니다 전에.
이제 우리는 단순히 ()로 세션을 호출 할 수 있습니다
세션의 모든 데이터를 치우는 알아서 할
그리고 다시 hello.php로 사용자를 리디렉션합니다.
그래서 로그 아웃 링크를 클릭하면,
우리는 서버가 내가 누군지 잊어 버린 것을 볼 수있다,
나는 더 이상 로그인을하지 오전
그래서 후드 아래에 여기에 무슨?
우리가 방금 본 동작을 얻기 위하여,
우리의 서버는 2 일을 할 필요가있다.
우선, 서버는 어떻게 든 세션 데이터를 저장할 필요가있다.
웹 사이트를 구성하는 다른 PHP 파일
PHP 인터프리터의 별도의 호출로 실행됩니다
그래서 지역 변수는 그들 사이에 공유 할 수 없습니다.
그 대신, 서버는 우리의 세션 데이터를 저장해야
어떤 장소에 체류. PHP 파일에 액세스 할 수 있습니다.
둘째, 서버는 내 브라우징 세션과 세션 데이터를 연결해야합니다.
나는 페이스 북에 로그인 할 때
또한 같은 시간에 페이스 북에 로그인 수백만의 사람들은 아마이있다.
하지만 서버 내 데이터를 연관시키는 방법이 필요합니다
나의 현재 세션과 다른 세션을 가진 사람의 다른 사람의 데이터.
다행히도, PHP의 저자는, 우리를 위해이 약을 모두 생각
그래서 우리는이 모든 자신을 구현할 필요가 없습니다.
그러나 이제 PHP는 기본적으로 무엇에 대해 살펴 보겠습니다.
내가 처음으로 session_start를 포함하는 PHP 페이지를 방문 할 때,
PHP는 큰 임의의 값을 생성합니다.
로 세션이 호출 또는되고 난에 그 사이트에 PHP 페이지를 방문하지 않지만 -까지
그 랜덤 아마 고유 한 값이 나와 함께 연결됩니다.
그 방법은 서버 내 검색 세션을 식별하는 몇 가지 방법이있다
다른 사람의 반대.
우리는 현재의 세션 ID에서 좀 걸릴 수 있습니다
PHP 함수 SESSION_ID를 사용하여.
여기에서 우리는 단순히 우리의 세션 식별자의 값을 출력하고 있습니다.
그래서 우리는 다시 예를 들어 웹 응용 프로그램에 로그인하는 경우,
지금 sessid.php을 탐색,
우리는 문자의이 긴 문자열을 볼 수 있습니다,
그 내 세션의 현재 식별자의,
그 서버는 내가 누구인지를 추적하는 방법입니다.
좋아,하지만 우리는 절반의 문제를 해결했습니다.
물론, 서버는 이제 저를 식별하는 몇 가지 방법이 있습니다,
내가 다른 페이지를 방문 할 때, 서버는 동일한 ID를 다시 사용합니다
오히려 새로운 하나를 생성하는 것보다.
내가 foo.php에서 지역 변수를 선언하는 경우, 기억
다음, bar.php 방문
bar.php는 foo.php에 무슨 일이 있었는지 알 수있는 방법이 있습니다.
그래서 기본 PHP 세션 구현은 브라우저가 서버를 생각 나게합니다
어떤 세션 ID를 사용하기.
이것은 쿠키의 형태로 구현된다.
쿠키의 맛있는 스낵 할뿐만 아니라
단순히 당신의 컴퓨터에 작은 텍스트 파일입니다
서버는 웹 브라우저를 통해 쓸 수있다.
, PHP가 있어도 session_start를 통해 내 고유 한 세션 ID를 생성 후, 그래서
그것은 로컬 텍스트 파일, 쿠키에 해당 식별자를 저장하는 웹 브라우저를 말할 것입니다.
그런 다음 웹 브라우저가 모든 요청에​​ 해당 식별자를 포함 할 것
이것은 서버에 대해 수행.
그래서 정말, 웹 서버는 내가 누군지 기억하지 않습니다.
대신, 웹 브라우저는 단순히 고유 식별자를 기억한다
그는 PHP에 의해 생성 한 후 지속적으로 서버를 생각 나게했다
그 무엇 식별자입니다.
내 사용자 이름과 같은 그런 방식으로, 정보는 서버가 아닌 내 웹 브라우저에 저장됩니다.
브라우저는 단순히 PHP는 정보를 저장 한 서버를 알려줍니다
그래서 PHP를 검색 할 수 있습니다.
그래서 PHP가 실제로이 정보를 저장하고 질문을 구걸?
기본적으로 PHP는 세션 데이터를 저장할
/ tmp 디렉토리, 또는 '임시'폴더 안에 파일.
PHP가 확인할 수 있도록 해당 파일의 이름은 세션 ID가 포함됩니다
어떤 파일이 읽기 전용 세션 ID를 통해에서 작성.
괜찮아요. 그럼 크롬의 디버거에서 네트워크 탭을 열 수 있도록
오른쪽 상단에있는 렌치 아이콘을 통해.
이제 다시 hello.php에 머리 수 있습니다.
의이 hello.php하는 HTTP 요청을 클릭하자
다음 헤더를 클릭합니다.
여기에서 우리는 쿠키 헤더 PHPSESSID이라는 키가 포함되어있는 것을 확인할 수 있습니다
또는 PHP 세션 ID-로 우리가 본 같은 긴 문자열 값
우리는 sessid.php를 방문했을 때.
이 브라우저가 사용되어야 할 세션 ID 서버를 생각 나게하는 방법을 정확하게이다.
이것은 HTTP 헤더에 포함있어.
괜찮아요. 의 다시 터미널로 머리를 보자.
의는 PHP는 기본적으로 세션 정보를 저장하는 / tmp 디렉토리로 이동하자.
과연,이 임시 폴더의 내부,
여기에 똑같은 세션 ID를 포함하는 파일입니다.
우리는이 파일을 열 경우, 우리는 PHP가 디스크에 내 세션을 표현하는 방법을 볼 수 있습니다.
다음은 문자열 "토미는" '이름'키에 저장되는
이는 우리가 기대했던 정확히입니다.
그리고 PHP에서 세션의 개요입니다.
우리가 방금 본 것은 세션 만 기본 구현했다.
사실, 많은 웹 사이트는이 기본 동작을 변경
보다 효율적 PHP 세션을 저장할
성능 향상의 관심.
내 이름은 토미이고,이 CS50입니다.
[CS50.TV]