2014-01-20 7 views
1

Я видел так много вопросов об этом, и у меня все еще есть проблемы с этим ... может кто-нибудь мне помочь?Уничтожьте сеанс в php

Войти Страница:

<?PHP 
    header("Content-Type: text/html; charset=utf-8"); 
    $login = "root"; 
    $senha = "test"; 
    session_start(); 
    session_set_cookie_params(0); 

    if ($_POST['login'] && $_POST['senha']) { 
     if ($login == $_POST['login'] && $senha == $_POST['senha']) { 

     $_SESSION['login'] = $login; 
     $_SESSION['senha'] = $senha; 
     Header("Location: index.php"); 

     } else { 
      unset ($_SESSION['login']); 
      unset ($_SESSION['senha']); 
      header("Location: login.php"); 
     } 
    } 
?> 

Выход страницы:

<?php 
    session_start(); 

    $_SESSION = array(); 

    unset($_SESSION['login']); 
    unset($_SESSION['senha']); 
    setcookie(session_name(), '', time() - 3600, '/'); 
    session_destroy(); 

    Header("Location: login.php"); 

    exit(); 
?> 

им получать эту ошибку:

PHP Warning: session_destroy(): Session object destruction failed in \\N\Users\cPanel\gil\public_html\gilberto\logout.php on line 11 
+0

см http://stackoverflow.com/questions/3512507/proper-way-to-logout-from-a-session-in-php. –

ответ

0

Это мой обычный подход, увидеть комментарии для получения более подробной информации.

session_start(); 

// 1. unset all of the session variables 
$_SESSION = array(); 

// 2. delete the session cookie 
if (ini_get('session.use_cookies')) { 
    $params = session_get_cookie_params(); 
    setcookie(session_name(), '', (time() - 42000), $params['path'], $params['domain'], $params['secure'], $params['httponly']); 
} 

// 3. destroy the session. 
session_destroy(); 
+0

Я пробовал, что и он не работал ... я не знаю, может ли это быть проблемой с моим сервером, потому что ive попробовал все варианты до сих пор – ledesma

+0

У меня была страница на другом сервере, и она действительно работала ... так что это может быть проблемой с моим сервером .. спасибо много помощнику ... – ledesma

0

Вы не должны сделать $_SESSION = array();

Просто используйте session_destroy() как сказал здесь: http://www.php.net/manual/fr/function.session-destroy.php

+0

, даже если я его вытащу, он не работает! – ledesma

+0

@ mArm.ch Если вы действительно хотите уничтожить сеанс, вы должны вручную отключить суперглобал и любые связанные с ним файлы cookie, это также говорит в документации: _ «Он не отменяет ни одну из глобальных переменных, связанных с сеансом, или отменяет cookie сеанса. "_ –

+0

Упс. Сегодня не очень. –

0

Вот функция, я использую, чтобы выйти из системы:

function logout(){ 

    $cookies = explode(';', $_SERVER['HTTP_COOKIE']); 
    foreach($cookies as $cookie) { 
     $parts = explode('=', $cookie); 
     $name = trim($parts[0]); 

     if(strtoupper($name) == 'PHPSESSID'){ 
      continue; 
     } 

     setcookie($name, '', time()-360000); 
     setcookie($name, '', time()-360000, '/'); 
    } 

    foreach($_SESSION as $key => $val){ 
     unset($_SESSION[$key]); 
    } 

    header('Location: account/login'); 
    die; 
} 
Смежные вопросы