2011-06-23 7 views
11

Tôi có 2 trang web.Cách hủy đặt một phiên php cụ thể khi đăng xuất

Trong một trang web này là đúng:

session_is_registered('site1sess') 

và trong một khác điều này là đúng:

session_is_registered('site2sess') 

Đó là những tên phiên tôi cung cấp cho người sử dụng khi đăng nhập. Vấn đề của tôi là khi tôi đăng xuất từ ​​một trang web, tôi cũng đăng xuất trong một khác vì tôi sử dụng:

session_destroy(); 

cách tốt nhất để đăng xuất khỏi site1 hoặc 2 xóa tất cả các biến session từ nó là gì? Cảm ơn bạn.

+2

$ _SESSION [ 'site2sess'] = null nên làm điều đó – Eamorr

+6

'unset ($ _ SESSION [ 'session_var']); ' – JamesHalsall

Trả lời

47

Sử dụng unset() cho tất cả các biến session cụ thể đối với một trong hai trang web 1 hoặc 2.

unset($_SESSION['site1']); 
//or 
unset($_SESSION['site2']); 

Chỉ cần để bạn biết, session_is_registered bị phản đối như của PHP phiên bản 5.3.0. See docs.

+0

Không phải là nó 'session_unset ($ _ SESSION ['site1']);' Không thể tìm thấy 'unset();' – Si8

+1

session_unset() không chấp nhận bất kỳ đối số nào ... –

+0

'session_unset()' sẽ bỏ đặt tất cả các biến phiên. – benjaminhull

0

Khi bạn đăng xuất của 1

unset($_SESSION['site1sess']); 

Hoặc khi bạn đăng xuất của người kia

unset($_SESSION['site2sess']); 
0

Bạn có thể phiên unset trong khi bạn không muốn thoát đăng nhập người dùng.

if(isset($_GET['logout'])) { 
    session_unset($_SESSION['user']); 
} 
+0

'session_unset()' không chấp nhận bất kỳ đối số nào - nó hủy bỏ TẤT CẢ các biến trong '$ _SESSION' hiện tại. [Tham khảo] (http://php.net/manual/en/function.session-unset.php). – indextwo

2

Trước unset($_SESSION['site1']); đặt session_start() như thế này

<?php 
    session_start(); 
    unset($_SESSION['site1']); 
?>