PHP에서 세션은 다른 페이지 요청간에 사용자의 상태를 유지하기위한 매우 일반적인 도구입니다. session_start () 함수를 사용하면 세션 시작시 세션 데이터를 초기화 할 수 있습니다. 그러나 경우에 따라 일반적인 문제가 발생할 수 있습니다. 세션에는 이미 오류가 있습니다. 일반적 으로이 문제는 Session_Start () 함수가 페이지 또는 스크립트에서 여러 번 호출되거나 일부 작업에서 실수로 여러 세션이 열릴 때 발생합니다.
이 문제를 해결하기 위해 PHP는 매우 유용한 기능 Session_status ()를 제공합니다. 현재 세션의 상태를 감지하고 Session_Start ()에 대한 불필요한 반복 호출을 피하여 세션 충돌을 효과적으로 피할 수 있습니다.
session_status () 는 현재 PHP 세션의 상태를 반환하는 내장 PHP 함수입니다. 이 함수는 가능한 세 가지 반환 값을 가질 수 있습니다.
php_session_disabled (0) : 세션 함수가 비활성화되었음을 나타냅니다.
php_session_none (1) : 현재 활성 세션이 없음을 나타냅니다.
php_session_active (2) : 현재 활성 세션이 있음을 나타냅니다.
반환 값을 판단함으로써 세션 충돌을 피하기 위해 다른 조치를 취할 수 있습니다.
PHP에서 세션은 일반적으로 페이지가로드되면 Session_Start () 를 통해 초기화됩니다. Session_Start ()가 동일한 요청에서 다른 위치에서 여러 번 호출되면 "세션이 이미 존재"오류가 발생합니다. 구체적으로, 이것은 전 세계적으로 고유 한 세션 ID를 기반으로 PHP 세션이 관리되며 Session_Start ()는 동일한 요청에서 한 번만 호출 할 수 있기 때문입니다. 여러 곳에서 호출하면 PHP는 세션이 시작되었다는 경고를 발행합니다.
실수로 세션을 다시 시작하지 않으려면 Session_status () 함수를 사용하여 현재 세션의 상태를 결정할 수 있습니다. Session_Start ()는 세션이 아직 시작되지 않은 경우에만 호출됩니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 세션 상태를 확인하십시오</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">session_status</span></span><span>() == PHP_SESSION_NONE) {
</span><span><span class="hljs-comment">// 세션은 아직 시작되지 않았습니다,안전한 전화 session_start()</span></span><span>
</span><span><span class="hljs-title function_ invoke__">session_start</span></span><span>();
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
session_status ()는 현재 세션의 상태를 반환합니다.
php_session_none은 세션이 아직 시작되지 않았 음을 의미합니다. 이 경우에만 Session_Start () 에게 전화하여 세션을 초기화 할 수 있습니다.
세션이 이미 활성화 된 경우 ( php_session_active ) "세션이 이미 존재하는"오류를 피하기 위해 Session_Start ()를 다시 호출 할 필요가 없습니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 이미 활성 세션이 있는지 확인하십시오</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">session_status</span></span><span>() == PHP_SESSION_NONE) {
</span><span><span class="hljs-title function_ invoke__">session_start</span></span><span>(); </span><span><span class="hljs-comment">// 세션은 시작되지 않은 경우에만 시작됩니다.</span></span><span>
}
</span><span><span class="hljs-comment">// 세션 변수를 설정합니다</span></span><span>
</span><span><span class="hljs-variable">$_SESSION</span></span><span>[</span><span><span class="hljs-string">'username'</span></span><span>] = </span><span><span class="hljs-string">'JohnDoe'</span></span><span>;
</span><span><span class="hljs-comment">// 출력 세션 변수</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'Hello, '</span></span><span> . </span><span><span class="hljs-variable">$_SESSION</span></span><span>[</span><span><span class="hljs-string">'username'</span></span><span>];
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
이 예에서는 Session_status ()를 사용하여 페이지에 처음 액세스 할 때만 세션이 시작되도록합니다. 이런 식으로, 코드의 다른 부분이나 외부 라이브러리가 Session_Start ()를 호출하려고하든 오류가 발생하지 않습니다.
Session_status () 함수를 사용하는 것은 세션에서 기존 문제를 피하는 효과적인 방법입니다. 현재 세션의 상태를 판단하면 Session_Start ()를 호출할지 여부를 유연하게 결정할 수 있습니다. 이것은 세션 충돌을 피할뿐만 아니라 코드의 견고성을 향상시키고 반복 된 세션 시작으로 인한 잠재적 문제를 줄입니다. 개발 중에는 세션의 올바른 관리, 특히 여러 요청 및 복잡한 페이지 프로세스에서 올바른 관리를 보장하는 것이 매우 중요합니다. session_status ()를 사용하면 불필요한 오류를 효과적으로 피할 수 있습니다.