현재 위치: > 최신 기사 목록> Session_Start ()를 결합 할 때 SessionHandler :: Create_SID 기능을 사용하여 독점 세션 ID를 사용자 정의하는 방법은 무엇입니까?

Session_Start ()를 결합 할 때 SessionHandler :: Create_SID 기능을 사용하여 독점 세션 ID를 사용자 정의하는 방법은 무엇입니까?

M66 2025-06-21

3. 구현 단계의 예

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 사용자 정의하십시오SessionHandler</span></span><span>
</span><span><span class="hljs-class"><span class="hljs-keyword">class</span></span></span><span> </span><span><span class="hljs-title">CustomSessionHandler</span></span><span> </span><span><span class="hljs-keyword">extends</span></span><span> </span><span><span class="hljs-title">SessionHandler</span></span><span>
{
    </span><span><span class="hljs-keyword">public</span></span><span> </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">create_sid</span></span><span>(</span><span><span class="hljs-params"></span></span><span>)
    {
        </span><span><span class="hljs-comment">// 여기16바이트 랜덤 스트링 + 현재 타임 스탬프는 세션을 구성합니다ID,독특하고 예측할 수없는 보장</span></span><span>
        </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">bin2hex</span></span><span>(</span><span><span class="hljs-title function_ invoke__">random_bytes</span></span><span>(</span><span><span class="hljs-number">16</span></span><span>)) . </span><span><span class="hljs-string">'-'</span></span><span> . </span><span><span class="hljs-title function_ invoke__">time</span></span><span>();
    }
}

</span><span><span class="hljs-comment">// 实例化사용자 정의하십시오的프로세서</span></span><span>
</span><span><span class="hljs-variable">$handler</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">CustomSessionHandler</span></span><span>();

</span><span><span class="hljs-comment">// 设置사용자 정의하십시오的Session프로세서</span></span><span>
</span><span><span class="hljs-title function_ invoke__">session_set_save_handler</span></span><span>(</span><span><span class="hljs-variable">$handler</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>);

</span><span><span class="hljs-comment">// 시작Session,使用사용자 정의하십시오会话ID규칙을 생성합니다</span></span><span>
</span><span><span class="hljs-title function_ invoke__">session_start</span></span><span>();

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"현재의Session ID:"</span></span><span> . </span><span><span class="hljs-title function_ invoke__">session_id</span></span><span>();
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

4. 지침 및 예방 조치

  • Session_SET_SAVE_HANDLER () 의 두 번째 매개 변수는 true 로 설정되어 있습니다. 즉, php가 Open () , read () , read () , write (), destroy () , gc () 및 등록 된 프로세서에서 구현 된 기타 방법을 자동으로 호출합니다. SessionHandler를 상속 한 후 모든 재 작성없이 기본 동작이 유지됩니다.

  • create_sid () 는 세션 ID를 생성하는 책임이 있으며 세션 데이터의 스토리지 로직을 포함하지 않습니다.

  • 생성 된 ID는 세션 ID 충돌을 피할 수있을 정도로 무작위적이고 독특해야합니다.

  • 세션 ID를 사용자 정의한 후에는 이전 세션 ID 형식이 호환되지 않을 수 있으며주의해서 온라인 상태를 유지해야합니다.