PHP Development에서 Session_Abort () 및 Session_Unset () 은 일반적으로 사용되는 세션 관련 기능입니다. 그러나 경우에 따라,이 두 기능은 함께 사용될 때 예상치 못한 결과를 가질 수 있습니다. 이 기사는이 두 기능의 역할과 서로 함께 사용할 때주의를 기울여야하는 세부 사항을 탐구하여 개발자가 자신의 행동을 더 잘 이해하고 잠재적 인 문제를 피할 수 있도록 도와줍니다.
session_abort ()
session_abort ()는 현재 세션의 데이터 변경을 폐기하는 데 사용됩니다. 즉, 세션 _abort ()가 호출 된 후 구원받지 않은 세션 데이터가 호출되면 세션 스토리지 (일반적으로 파일, 데이터베이스 또는 기타 스토리지 매체)에 기록되지 않습니다. 간단히 말해서, session_abort () 를 호출하면 호출 할 때 현재 세션 데이터가 폐기됩니다.
session_unset ()
Session_Unset ()은 현재 세션에서 모든 세션 변수를 지우는 데 사용됩니다. 세션을 닫거나 세션 데이터를 파괴하지 않고 세션에서 변수를 단순히 삭제한다는 점은 주목할 가치가 있습니다. 이 기능을 호출 한 후 세션 변수가 지워지지 만 세션 자체는 여전히 유효하며 세션 _destroy () 가 세션을 파괴하기 위해 명시 적으로 호출되지 않으면 사용자는 세션을 계속 사용할 수 있습니다.
Session_Abort () 및 session_unset () 에는 특정 기능이 있지만 개발 중에 개발자는 특히 두 기능이 동시에 사용될 때 자신의 역할을 오해 할 수 있습니다. 몇 가지 일반적인 오해와 예방 조치는 다음과 같습니다.
오해 1 : session_abort ()는 세션 변수 <br>를 지울 수 있습니다 일부 개발자는 session_abort ()가 모든 세션 변수를 지울 수 있다고 생각할 수 있습니다. 그러나 session_abort ()는 단순히 세션 데이터의 변경 사항을 포기하고 세션 변수를 지우지 않습니다. 세션 변수를 지우는 작업은 session_unset () 에 의해 수행되어야합니다. 따라서 세션이 중단 될 때 모든 세션 변수를 지우려면 먼저 Session_Unset ()을 호출 한 다음 Session_Abort ()를 다시 호출해야합니다.
오해 2 : Session_Unset ()는 세션의 지속성에 영향을 미칩니다 <br> 많은 사람들은 Sension_Unset ()을 호출하면 전체 세션을 파괴 할 것이라고 잘못 생각합니다. 실제로, 그것은 단순히 세션 변수를 지우지 만 세션 자체는 여전히 존재합니다. 즉, Session_Unset () 이 호출 되더라도 사용자는 후속 요청에서 여전히 세션을 계속 사용할 수 있습니다. 전체 세션을 파괴하려면 Session_Destroy ()를 사용해야합니다.
장면 1 : 세션 데이터를 지우고 수정을 버립니다 <br> 로그인 시스템에서 작업 중이며 사용자가 로그 아웃 할 때 세션 데이터를 지우고 세션 수정을 폐기하려고한다고 가정하십시오. 다음 단계를 따를 수 있습니다.
Session_Unset ()을 사용하여 현재 세션의 모든 변수를 지우십시오.
세션 데이터 변경을 폐기하려면 Session_Abort ()를 호출하십시오.
세션을 완전히 파괴하려면 세션 파일을 파괴하고 세션을 종료하는 Session_Destroy () 에게 전화 할 수 있습니다.
Code example:
<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-title function_ invoke__">session_unset</span></span><span>();
</span><span><span class="hljs-comment">// 수정 된 세션 데이터 폐기</span></span><span>
</span><span><span class="hljs-title function_ invoke__">session_abort</span></span><span>();
</span><span><span class="hljs-comment">// 세션을 파괴하십시오</span></span><span>
</span><span><span class="hljs-title function_ invoke__">session_destroy</span></span><span>();
</span></span> 시나리오 2 : 세션 데이터의 일부만 폐기됩니다 <br> 세션 데이터의 일부를 폐기해야하지만 사용자의 로그인 상태와 같은 다른 중요한 정보를 유지해야한다고 가정하십시오. 특정 세션 변수를 수동으로 삭제 한 다음 Session_Abort () 를 호출하여 보관하려는 세션 정보를 유지하면서 구축되지 않은 변경 사항을 폐기 할 수 있습니다.
Code example:
<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-keyword">unset</span></span><span>(</span><span><span class="hljs-variable">$_SESSION</span></span><span>[</span><span><span class="hljs-string">'cart'</span></span><span>]);
</span><span><span class="hljs-comment">// 세션 변경을 버립니다</span></span><span>
</span><span><span class="hljs-title function_ invoke__">session_abort</span></span><span>();
</span></span> 질문 1 : Call Session_Abort ()가 너무 일찍 전화하십시오
세션 데이터를 작동하기 전에 session_abort ()가 호출되면 수정 해야하는 경우 세션 데이터가 손실 될 수 있습니다. 따라서 Session_Abort ()를 호출 할 때는 컨텐츠가 폐기되지 않도록 모든 세션 데이터가 처리되었는지 확인해야합니다.
질문 2 : 정리 후 세션 변수에 계속 의존합니다 <br> 프로그램이 여전히 Session_Unset ()을 호출 한 후 빈 세션 변수에 의존하는 경우 정의되지 않은 동작 또는 오류가 발생할 수 있습니다. session_unset ()을 호출 한 후에는 더 이상 빈 세션 변수에 의존하지 않아야합니다. 그렇지 않으면 널 값이나 오류에 액세스 할 수 있습니다.
PHP에서 Session_Abort () 및 Session_Unset () 의 함수는 다르므로 함께 사용할 때는주의해야합니다. Session_Unset ()은 세션에서 변수를 지우는 데 사용되는 반면 Session_Abort ()는 세션 데이터의 변경 사항을 폐기하는 데 사용됩니다. 세션을 처리 할 때는 잠재적 오류와 불필요한 데이터 손실을 피하기 위해 실제 요구에 따라 각 기능의 역할을 명확히하고 합리적으로 사용해야합니다. 세션 데이터를 정리하고 버릴 때 가장 좋은 방법은 먼저 세션 변수를 지우고 session_abort ()를 호출하고 궁극적으로 필요한 경우 전체 세션을 파괴하는 것입니다.