2015-10-25 5 views
0

Я использую эту функцию, чтобы создать знак в сессии и кукине может выйти - всегда подписывался в использовании PHP сессии и куки

function startSession($time,$ses) { 
    session_set_cookie_params($time,'/','.domain.com',false,true); 
    // if I use www.domain.com the session won't start and the user won't be able to sign in 
    session_name($ses); 
    if(session_id() == '') { 
     session_start(); 
    } 
    if (isset($_COOKIE[$ses])) 
     setcookie($ses, $_COOKIE[$ses], time() + $time, "/"); 
} 

страница Войти содержит этот код в голове

ini_set('session.cookie_lifetime',99999999); 
ini_set('session.gc_maxlifetime',99999999); 
ini_set('session.use_trans_sid', false); 
ini_set('session.use_only_cookies' , true); 
if(session_id() == '') { 
    session_start(); 
} 

и если учетные данные правильны я вызываю функцию

startSession($time = '99999999', $ses = 'mySession'); 

и добавить значения к нему как массив

$_SESSION['mySession'][0] = 'value1'; 
$_SESSION['mySession'][1] = 'value2'; 

Затем перенаправить пользователя на индексную страницу, содержащую этот код в голову

startSession($time = '99999999', $ses = 'mySession'); 

Вывеска из страница содержит этот код

session_start(); 
unset($_SESSION['mySession']); 
session_destroy(); 
unset($_COOKIE['mySession']); 
setcookie('mySession', null, -999999999, '/'); 
$_SESSION['mySession'] = array(); 
$_SESSION['mySession'][0]=' '; 
$_SESSION['mySession'][1]=' '; 
session_regenerate_id(true); 

Затем пользователь получает снова перенаправлены индексная страница, но процесс выхода из системы не работает, и пользователь автоматически подписывается. Что заставляет пользователя снова входить в аккаунт, не снимая сеанс и файл cookie?

ответ

0

Ну, есть довольно простое решение для входа в систему и выхода из системы.

Логин:

<?php 
# Firstly: 
session_start(); 

# Suppose authentication is successful and you have a user array... 
# $user = array('id' => 5, 'name' => 'Rayn', 'email' => '[email protected]'); 

# Now you want to log that user in. 

$_SESSION['user'] = $user; 

# Now if I want to add the cookie. 
setcookie('user', $user, time()+3600*24*30, '/'); 
# It is time() + 30 Days. 

# Now check in your protected pages... 
if (!empty($_COOKIE['user'])) { 
    $_SESSION['user] = $_COOKIE['user']; 
} 

#and focus your concentration on the session. 
if (empty($_SESSION['user])) { 
    // Redirect him to the login page. 
} 
?> 

Выход:

<?php 
# Firstly: 
session_start(); 
unset($_SESSION['user']); 
setcookie('user', NULL, time() - 3600*24, '/'); 
# It is actually time() - 24 Hours. 
# You have wrote only -[some time value]. Which is a negative time. 
?> 

Надеется, что это помогает.