Aktueller Standort: Startseite> Neueste Artikel> Session_reset Wie führt man die perfekte Lösung für das Zurücksetzen der Sitzung, wenn der Benutzer beendet?

Session_reset Wie führt man die perfekte Lösung für das Zurücksetzen der Sitzung, wenn der Benutzer beendet?

gitbox 2025-08-28

1. Verstehen Sie die grundlegenden Konzepte der PHP -Sitzung

In PHP wird die Sitzung verwendet, um Daten zwischen Benutzern und Servern zu speichern. Die Funktion Session_start () startet eine Sitzung. Wenn sich der Benutzer anmeldet, erstellt PHP eine Sitzungs -ID für den Benutzer auf dem Server und speichert die relevanten Daten auf dem Server, während der Client die Sitzungs -ID über Cookies speichert.

Das Wichtigste bei der Bearbeitung des Benutzerbeschlusses ist, alle Daten in der Sitzung zu löschen, was nicht nur dazu beiträgt, die Privatsphäre des Benutzers zu schützen, sondern auch die Entführungen der Sitzung und andere Sicherheitsprobleme zu verhindern.

2. GROSSE Session Exit -Methoden

Wenn der Benutzer beendet wird, wird Session_destroy () normalerweise zur Zerstörung der Sitzung aufgerufen. Dies löscht jedoch nicht alle Sitzungsdaten vollständig. Tatsächlich zerstört Session_destroy () nur die Sitzungsdatei und löscht die Daten möglicherweise nicht sofort in der $ _Session Hyperglobal -Variablen.

Befolgen Sie die folgenden Schritte, um die Sitzungsdaten vollständig zu löschen:

  • Sitzungsdaten zerstören: Verwenden Sie Session_unset (), um alle in $ _Session gespeicherten Daten zu löschen.

  • Zerstören Sie die Sitzungsdatei: Verwenden Sie Session_Destroy (), um die aktuelle Sitzung zu zerstören.

3. Die perfekte Lösung für das Zurücksetzen der Sitzung beim Beenden

Das Folgende ist der spezifische PHP -Code, um die Sitzung zurückzusetzen, wenn der Benutzer beendet ist:

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// Start-up session</span></span><span>
</span><span><span class="hljs-title function_ invoke__">session_start</span></span><span>();

</span><span><span class="hljs-comment">// Alle klar session Daten</span></span><span>
</span><span><span class="hljs-title function_ invoke__">session_unset</span></span><span>();

</span><span><span class="hljs-comment">// zerstören session</span></span><span>
</span><span><span class="hljs-title function_ invoke__">session_destroy</span></span><span>();

</span><span><span class="hljs-comment">// löschen session ID Gelagert cookie</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">ini_get</span></span><span>(</span><span><span class="hljs-string">"session.use_cookies"</span></span><span>)) {
    </span><span><span class="hljs-variable">$params</span></span><span> = </span><span><span class="hljs-title function_ invoke__">session_get_cookie_params</span></span><span>();
    </span><span><span class="hljs-title function_ invoke__">setcookie</span></span><span>(</span><span><span class="hljs-title function_ invoke__">session_name</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-number">42000</span></span><span>, </span><span><span class="hljs-variable">$params</span></span><span>[</span><span><span class="hljs-string">"path"</span></span><span>], </span><span><span class="hljs-variable">$params</span></span><span>[</span><span><span class="hljs-string">"domain"</span></span><span>], </span><span><span class="hljs-variable">$params</span></span><span>[</span><span><span class="hljs-string">"secure"</span></span><span>], </span><span><span class="hljs-variable">$params</span></span><span>[</span><span><span class="hljs-string">"httponly"</span></span><span>]);
}

</span><span><span class="hljs-comment">// Umleiten</span></span><span>
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">"Location: login.php"</span></span><span>);
</span><span><span class="hljs-keyword">exit</span></span><span>();
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

4. Code Parsen

  • Session_Start () : Wenn nicht gestartet wird, ist dieser Schritt erforderlich.

  • Session_unset () : Löscht alle Daten in der Hyperglobal -Variablen $ _Session Hyperglobal. Dies ist der erste Schritt, um sicherzustellen, dass die Sitzungsdaten des Benutzers entfernt werden.

  • Session_destroy () : Zerstöre die Sitzungsdatei, aber beachten Sie, dass dies die Variable $ _Session nicht löscht. Daher müssen wir auch Session_unset () anrufen, um die Daten zu löschen.

  • Sitzung Cookies löschen : Wenn PHP Cookies zum Speichern von Sitzungs -IDs verwendet, müssen wir auch die im Client gespeicherten Cookies explizit löschen, um sicherzustellen, dass der Browser des Benutzers die Sitzungs -ID nicht mehr speichert. Durch das Einstellen der Cookie -Ablaufzeit in der vergangenen Zeit wird der Effekt des Löschens von Cookies erreicht.

  • Weiterleiten : Umleiten Sie den Benutzer schließlich über die Funktion Header () auf die Anmeldeseite oder die Homepage um, um den Ausgangsvorgang zu vervollständigen.

5. Warum müssen Sie das Session Cookie löschen?

Das Löschen von Sitzungen Cookies ist eine gängige Sicherheitsmaßnahme, insbesondere nach sensiblen Operationen. Auch wenn der Benutzer nach Abschluss des Browsers möglicherweise nicht direkt auf die Sitzungsdaten zugreifen kann, kann ein Angreifer die Sitzungs -ID verwenden, um die Sitzung wiederherzustellen, wenn sie in einem Cookie gespeichert wird. Es ist daher ein notwendiger Schritt, sicherzustellen, dass Sitzungskekse gelöscht werden.

6. Weitere Optimierung und Vorsichtsmaßnahmen

  • Session Hijacking Protection: Um eine Hijacking der Sitzung zu verhindern, können wir Session_regenerate_id (TRUE) verwenden, um eine neue Sitzungs -ID zu generieren, wenn sich der Benutzer anmeldet und sicherstellt, dass die alte Sitzungs -ID nicht geschmiedet werden kann.

  • HTTPS Secure Transport: Verwenden Sie HTTPS, um Benutzersitzungsdaten zu schützen, um zu verhindern, dass Sitzungen während der Übertragung gestohlen werden.

  • Regelmäßig ablaufende Ablaufsitzungen beseitigen: Legen Sie einen angemessenen Sitzungsmechanismus fest und steuern Sie die Ablaufzeit der Sitzung, indem Sie die Sitzung von PHP konfigurieren.