>  기사  >  백엔드 개발  >  PHP의 세션 시간 설정에 대한 자세한 설명

PHP의 세션 시간 설정에 대한 자세한 설명

伊谢尔伦
伊谢尔伦원래의
2017-04-28 11:52:222661검색

대부분의 포럼에서는 로그인 시 일주일 동안 저장, 한 달 동안 저장 등 만료 시간을 선택할 수 있습니다. 이때 쿠키를 통해 로그인 만료시간을 설정할 수 있습니다. 세션 만료 시간을 설정하는 방법에는 여러 가지가 있습니다.

1. 클라이언트는 쿠키를 금지하지 않습니다.

(1) session_set_cookie_params()세션 만료 시간 설정 이 함수는 세션 만료 시간을 설정하는 쿠키와 결합됩니다. 1분 후에 세션이 만료되도록 하려면 코드 예제는 다음과 같습니다.

<?php
 $time = 1*60;                   //设置session失效时间
 session_set_cookie_params($time);      // 使用函数
 session_start();                 //初始化  session
 $_SESSION["username"] = &#39;tom&#39;;
?>

참고: session_set_cookie_params()는 session_start()보다 먼저 호출되어야 합니다.

참고: 이 기능은 권장되지 않으며 일부 브라우저에서는 문제를 일으킬 수 있습니다. 따라서 만료 시간은 일반적으로 수동으로 설정됩니다.

(2) setcookie() 함수를 사용하여 세션 만료 시간을 설정합니다. 세션이 1분 후에 만료되도록 하려면 코드 예는 다음과 같습니다.

<?php
 session_start();
 // session失效时间
 $time = 1*60;                    
 // 使用 setcookie 手动设置 session失效时间      
 setcookie(session_name(),session_id(),time()+$time.&#39;/&#39;);    
 $_SESSION["username"] = &#39;tom&#39;;
?>

참고: 위 예제 코드의 setcookie() 함수에서 session_name은 세션 이름이고 session_id는 클라이언트 사용자의 ID입니다. session_id는 무작위로 생성된 고유 이름이므로 세션은 비교적 안전합니다. 만료 시간은 쿠키와 동일합니다. 마지막 매개 변수는 선택 사항이며 쿠키가 배치되는 경로입니다.

2. 클라이언트에서 쿠키 비활성화

클라이언트에서 쿠키를 비활성화하면 세션 페이지 간 전송이 무효화됩니다. 클라이언트 대형 슈퍼마켓 체인을 상상해 보십시오. 슈퍼마켓 중 한 곳에서 회원 카드를 신청했지만 슈퍼마켓 간 인터넷 연결이 없는 경우 해당 슈퍼마켓에서만 회원 카드를 사용할 수 있습니다. 이 문제를 해결하는 방법에는 여러 가지가 있습니다.

(1) 로그인하기 전에 쿠키를 활성화해야 함을 사용자에게 상기시켜 주십시오. 이는 많은 포럼의 관행입니다.

(2) php.ini 파일에서 session.use_trans_sid =1을 설정하거나, 컴파일 시 -enable-trans-sid 옵션을 켜서 PHP가 자동으로 페이지 간에 session_id를 전달할 수 있도록 합니다.

(3) 숨겨진 형식으로 GET 메소드를 통해 session_id를 전달합니다.

(4) 파일이나 데이터베이스를 사용하여 session_id를 저장하고, 페이지 간 전송 중에 수동으로 호출합니다.

위의 두 번째 방법은 서버에서 php.ini 파일을 사용자가 수정할 수 없기 때문에 자세히 소개하지 않습니다. 세 번째 방법에서는 쿠키를 사용하여 만료 시간을 설정할 수 없지만 로그인 상태는 변경되지 않습니다. 네 번째이자 가장 중요한 것은 기업 수준의 웹사이트를 개발할 때 서버 속도를 저하시키는

세션 파일을 발견하는 경우 사용할 수 있습니다. 여기서는 GET 메소드를 이용한 세 번째 전송 방법을 소개합니다. 샘플 코드는 다음과 같습니다. 페이지 헤더를 수신하는 코드:

<?php
  $session_name = session_name();        //取得 session 名称
  $session_id = $_GET[$session_name];    // 取得 session_id GET方式
  session_id($session_id);               // 关键步骤
  session_start();
  $_SESSION[&#39;admin&#39;] = &#39;soft&#39;;
?>

설명: 페이지를 요청한 후 세션이 생성됩니다. . session_id. 이때 쿠키가 비활성화되면 session_id를 전달할 수 없습니다. 다음 페이지를 요청할 때 session_id가 다시 생성되므로 페이지 간 세션 전달이 실패하게 됩니다.

위 내용은 PHP의 세션 시간 설정에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.