session_status () : 현재 세션의 상태를 감지하는 데 사용됩니다. 다음 세 가지 상수 중 하나를 반환합니다.
php_session_disabled : 세션 함수가 비활성화되었습니다.
php_session_none : 세션이 시작되지 않았습니다.
php_session_active : 세션이 시작되었습니다.
session_id () : 현재 세션의 ID를 얻거나 설정하는 데 사용됩니다. 이 ID는 클라이언트와 서버 간의 세션에 대한 고유 한 식별 마크이며 일반적으로 쿠키 형태로 존재합니다.
일부 복잡한 응용 프로그램에서는 Session_Start ()로의 여러 통화로 인해 "헤더가 이미 전송 된"오류가 발생할 수 있습니다. 반복 된 세션 시작을 피하기 위해 Session_status ()를 사용하여 현재 상태를 결정하는 것이 좋습니다.
<code> if (session_status () === php_session_none) {session_start (); } </code>이 방법은 세션이 열리기 전에 시작되도록하여 불필요한 오류를 방지합니다.
세션을 시작한 후 Session_ID () 를 통해 현재 세션의 고유 한 ID를 얻을 수 있습니다. 이 로고는 사용자 동작을 디버깅, 로깅 또는 수동으로 추적 할 때 유용합니다.
<code> echo '현재 세션 ID는 :'입니다. session_id (); </코드>예를 들어 로그 또는 데이터베이스에 Session_ID ()를 녹음하여 사용자 행동 추적을 달성 할 수 있습니다.
<code> file_put_contents ( '/var/log/php_session.log', session_id (). " -". 날짜 ( 'ymd h : i : s'). "\ n", file_append); </코드>일부 시나리오에서는 세션 ID를 수동으로 지정할 수 있습니다 (예 : 크로스 시스템 세션 공유). 이 시점에서 Session_id ()를 사용하여 Session_Start ()를 호출하기 전에 설정할 수 있습니다.
<code> if (isset ($ _ get [ 'sid'])) {session_id ($ _ get [ 'sid']); } session_start (); </코드>예를 들어 다음 링크를 사용하여 세션 ID를 전달할 수 있습니다.
<code> <a href = "https://gitbox.net/app.php?sid=customsession123"> 입력하려면 클릭하십시오. </a> </code>참고 : 세션 ID를 수동으로 설정하면 보안 위험이 발생할 수 있습니다 (예 : 세션 납치). 그것을 사용할 때 매개 변수가 안정적으로 공급되거나 토큰 메커니즘 및 HTTP와 함께 사용해야합니다.
사용자 요청을 처리하기 전에 세션이 생성되었는지 확인할 수 있습니다. 그렇지 않은 경우 사용자는 로그인하거나 상태를 다시 시작하라는 메시지를 표시 할 수 있습니다.
<code> if (session_status ()! == php_session_active || session_id () === '') {echo '세션이 초기화되지 않았거나 만료되었습니다. ';; } else {echo '현재 세션 ID :'. session_id (); } </code>이 접근법은 대규모 시스템에서 특히 중요합니다. 특히 특정 작업 전에 세션에 의해 사용자 신원이 식별되도록해야 할 때 특히 중요합니다.