2009-04-17 3 views
6

Có thể tôi không xóa đúng các phiên PHP khi người dùng đăng xuất. Tôi đã nhận thấy rằng nếu tôi đăng xuất và đăng nhập lại mà không đóng trình duyệt, ID phiên sẽ không thay đổi nhưng nếu tôi đăng xuất, hãy đóng cửa sổ trình duyệt, mở cửa sổ mới và đăng nhập, ID phiên sẽ khác . Tôi có cần phải làm điều gì đó khác biệt hoặc hành vi bình thường này không? Tôi đã sử dụng quá trình tương tự trong ba năm nhưng một cái gì đó đã xảy ra gần đây khiến tôi nghĩ rằng có thể là Tôi cần phải làm điều gì đó khác biệt.Làm thế nào để xóa một phiên PHP?

Đây là những gì tôi thực hiện khi ai đó nhấp vào Đăng xuất.

<?php 

session_start(); 

if(isSet($_SESSION['FacID'])) 
    $facID = $_SESSION['FacID']; //Want to re-instate this after we destroy the session. 

unset($_SESSION); 
session_destroy(); 

if(isSet($_SESSION['FacID'])) 
    $_SESSION['FacID'] = $facID; 

?> 

Trả lời

0

Việc tiết kiệm và tiêu diệt là gì? Chỉ cần session_start và đặt các biến của bạn. Không cần phải tiêu diệt, sau đó thiết lập lại chúng!

"Vấn đề" của bạn với trình duyệt là khi bạn đóng cửa sổ trình duyệt, trình duyệt của bạn sẽ xóa cookie mà PHP gửi nó để biết ID phiên. Đây là một tùy chọn trình duyệt và không thể thay đổi ở phía máy chủ (trừ khi bạn khai thác). Nó có thể được phá vỡ bằng cách sử dụng một số phương pháp, nhưng đó có lẽ không phải là lựa chọn tốt nhất của bạn.

5

Nếu bạn cảm thấy cần phải buộc một id mới http://pl.php.net/manual/en/function.session-regenerate-id.php

Và cho câu hỏi của bạn, từ hướng dẫn:

session_destroy() phá hủy tất cả các dữ liệu liên quan đến việc phiên hiện tại . Nó không hủy bất kỳ biến số nào trong số toàn cầu được kết hợp với phiên hoặc hủy đặt cookie phiên. Để sử dụng các biến phiên một lần nữa, session_start() phải được gọi.

Để giết phiên hoàn toàn, giống như đăng xuất người dùng, id phiên cũng không được đặt. Nếu cookie được sử dụng để nhân rộng id phiên (hành vi mặc định), sau đó cookie phiên phải bị xóa. setcookie() có thể được sử dụng cho điều đó.

1

Phiên của bạn đang bị hủy.

PHP sẽ chỉ tạo id phiên nếu trình duyệt không chỉ định một phiên. Miễn là phiên đã bị hủy diệt, không có vấn đề gì với điều này.

+0

Vì vậy, thực tế là cùng một ID phiên (nếu trình duyệt không được đóng) đang được sử dụng cho nhiều người dùng thực sự không phải là một vấn đề? – user39653

+0

Vì có số id phiên giới hạn, EVERY id đang được sử dụng cho nhiều người dùng. Việc tái sử dụng chúng là không có vấn đề gì. –