세션에 대한 지원이 PHP4.0에 추가되어 장바구니 등과 같은 많은 프로그램을 용이하게 합니다!
많은 포럼에서 세션은 사용자 로그인을 처리하고 사용자 이름과 비밀번호를 기록하는 데에도 사용되므로 사용자가 매번 사용자 이름과 비밀번호를 입력할 필요가 없습니다! 하지만 일반 Session의 수명은 제한되어 있습니다. 사용자가 브라우저를 닫으면 Session 변수를 저장할 수 없습니다. 그렇다면 세션의 영구적인 수명을 어떻게 달성할 수 있을까요?
우리 모두 알고 있듯이 Session은 클라이언트가 제공한 SessionID를 기반으로 사용자의 파일을 얻은 다음 해당 파일을 읽어 클라이언트의 변수 값을 가져올 수 있습니다. 쿠키나 Http1.1 프로토콜의 Query_String(즉, (접근한 URL에서 "?" 뒤에 오는 부분) 부분)을 서버로 전송한 후, 서버는 Session의 디렉터리를 읽어 옵니다...
세션의 영구적인 수명을 이해하려면 먼저 php.ini에서 세션의 관련 설정을 이해해야 합니다(php.ini 파일의 "[Session]" 섹션에서 열기).
1. session.use_cookies: 기본값은 "1"입니다. 이는 SessionID가 Cookie에 의해 전달되고 그렇지 않으면 Query_String에 의해 전달됨을 의미합니다.
2. SessionID에 저장된 변수 이름이며 Cookie 또는 Query_String에 의해 전달될 수 있습니다. . 기본값은 "PHPSESSID"입니다.
3. session.cookie_lifetime: SessionID가 클라이언트 쿠키에 저장되는 시간을 나타냅니다. 기본값은 0입니다. 이는 브라우저가 닫히자마자 SessionID가 무효화됨을 의미합니다. ... 이 때문에 세션을 영구적으로 사용할 수 없습니다!
4. session.gc_maxlifetime: 세션 데이터가 서버 측에 저장되는 시간입니다. 이 시간을 초과하면 세션 데이터가 자동으로 삭제됩니다.
그 밖에도 다양한 설정이 있지만, 이 글과 관련된 내용은 영구 세션 사용의 원리와 단계부터 살펴보겠습니다.
앞서 언급했듯이 서버는 SessionID를 통해 Session 데이터를 읽어오는데, 일반적으로 브라우저가 종료된 후에는 브라우저에서 보낸 SessionID가 사라지기 때문에 수동으로 SessionID를 설정하고 저장만 하면 되는 것이 아니죠...
서버 운영 권한이 있는 경우 설정은 매우 간단합니다. 다음 단계를 수행하면 됩니다.
1. "session.use_cookies"를 1로 설정하고 쿠키를 활성화하여 SessionID를 저장합니다. 기본값은 1 이며 일반적으로 수정할 필요가 없습니다.
2. "session.cookie_lifetime"을 양의 무한대로 변경합니다(물론 양의 무한대에 대한 매개변수는 없지만 999999999와 양의 무한대 사이에는 차이가 없습니다). 🎜>3. "session.gc_maxlifetime"을 설정합니다. "session.cookie_lifetime"과 동일합니다.
설정 후 편집기를 열고 다음 코드를 입력합니다.
--------- ---------------- ---------------------------------- --- --------------
<
session_start()
session_register("count ");
$count ;
echo $count;
?>
------------------------- ---------------- ---------------------------------- --------------
그런 다음 " session_check.php"로 저장하고 브라우저를 사용하여 "session_check.php"를 열고 "1"이 표시되는지 확인한 다음 브라우저를 닫습니다. 그런 다음 브라우저를 열어 "session_check.php"를 방문하십시오. "2"가 표시되면 축하합니다. 실패하면 이전 설정을 확인하십시오.
그러나 서버를 운영할 수 있는 권한이 없으면 더 문제가 됩니다. 영구 세션 데이터 저장을 위해서는 PHP 프로그램을 통해 SessionID를 다시 작성해야 합니다. php.net의 함수 매뉴얼을 확인하면 "session_id" 함수를 볼 수 있습니다. 매개변수가 설정되지 않으면 현재 SessionID가 반환됩니다. 매개변수가 설정되면 현재 SessionID가 지정된 값으로 설정됩니다.
영구 쿠키를 사용하고 "session_id" 기능을 추가하면 영구 세션 데이터를 저장할 수 있습니다!
하지만 편의상 서버에서 설정한 "session.name"을 알아야 하는데, 대부분의 사용자는 서버의 php.ini 설정을 볼 수 있는 권한이 없습니다. 하지만 PHP는 "phpinfo"라는 아주 좋은 기능을 제공합니다. ", 거의 모든 PHP 정보를 보는 데 사용할 수 있습니다!
---------------------------------- -- -------------------------------------
<제목>PHP 관련 정보 표시< ; /제목>
--------------- - ------------------------------------------------- - --
에디터를 열고 위의 코드를 입력한 후 브라우저에서 프로그램을 실행하면 PHP 관련 정보를 확인할 수 있습니다(그림 1 참조). "session.name" 매개변수가 있습니다(그림에 이미 표시되어 있음). 이는 우리에게 필요한 서버 "session.name"이며 일반적으로 "PHPSESSID"입니다.
SessionID 이름을 적어두면 영구 세션 데이터 저장이 가능합니다!
편집기를 열고 다음 코드를 입력하세요.
---------------------- - -------------------------------------------------
session_start(); // 세션 시작
session_register("count") // 세션 변수 개수 등록
if(isset($PHPSESSID)) {
session_id($ PHPSESSID);
} // $PHPSESSID가 설정되어 있으면 $PHPSESSID에 SessionID를 할당하고, 그렇지 않으면 SessionID를 생성합니다.
$PHPSESSID = session_id() // 현재 SessionID를 가져옵니다.
$count; 변수 개수
setcookie("PHPSESSID", $PHPSESSID, time() 3156000); // SessionID를 쿠키에 저장
echo $count; // 세션 변수 개수 표시
? 🎜>------------------------------------------------ - -------------------------------------
저장 후, 저장시와 동일한 방법을 사용하세요. 당신은 지금 서버 권한을 가지고 있습니다. SessionID가 성공적으로 저장되었는지 여부를 감지하는 데 동일한 감지 방법이 사용됩니다.
후기:
사실 쿠키의 저장 시간이 제한되어 있고, 서버 공간도 제한되어 있기 때문에 진정한 영구 저장은 불가능합니다... 하지만 장기간 저장이 필요한 일부 사이트의 경우 시간이 지나면 위의 방법으로 충분합니다! Session의 다른 응용 프로그램에 대해서는 zphp.com의 기사를 참조하십시오.
마지막으로 작성자의 디버깅 환경은 Windows98DigExt(SE) Apache PHP 4.04입니다.
위 내용은 내가 너를 사랑해서 나 자신이 싫어 php에서 무한 수명 세션을 사용하는 방법을 소개하며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.