为什么我的session_destroy()不起作用?

时间:2013-12-19 16:30:34

标签: php session logout destroy

我正在制作一个网站并且我编写了一个会话,所以如果你不登录你就不能进入某些形式,但是当我登录会话时,即使我点击退出按钮,我甚至在它破坏了会话它再次将我发送到登录,但然后它将我发送到仅在您登录时打开的表单,就像我从未登出一样

这是我正在使用的代码

<?php

session_start();
session_destroy();
header("location:loginusuario.php");
?>

继承人登录的代码

<?php
  include ("conexion/conexion.php");
  include("usuarios.class.php");

$usuario= $_POST['usuario'];
$clave= $_POST['clave'];



    $objUsuario = new usuarios;
    $srt= $objUsuario->autenticar_usuario($usuario,$clave,1);
    $num =mysql_num_rows($srt);
    if($num <= 0){
        $mensaje="Usuario y/o clave Incorrectos";
         header("location:index.php?mensaje=$mensaje"); 
    }else{

        $row=mysql_fetch_array($srt);
        session_start();
        $_SESSION['log'] = 's'; 
        $_SESSION['nombre'] = $row['nombre'];
         header("location:contrataciones.php"); 

    }


?>

这是班级的代码

<?php 
  class usuarios
  {

    function usuarios() {

    } 
    function autenticar_usuario($usuario,$clave){
        $sel="select usuario,clave from usuarios where usuario='".$usuario."' and clave='".$clave."' ";
        $srt=mysql_query($sel) or die($sel);
        return $srt;

    }

?>

我不知道我是否遗漏了什么或者我认为代码还可以,但你觉得怎么样?

2 个答案:

答案 0 :(得分:0)

要确保完全销毁会话并释放所有相关变量,请使用它:

<?php
    session_start(); //retrieve existing session
    session_unset(); //free all variables
    session_destroy(); //destroy esssion
    session_write_close(); //save session data and close the writing stream (a bit like a SQL commit)
    setcookie(session_name(),'',0,'/'); //if you use cookie : delete it by setting a new one with a 0 lifetime.
    session_regenerate_id(true); //regenerate new session id.
?>

http://www.php.net/manual/en/function.session-unset.php#107089

复制

答案 1 :(得分:-1)

尝试:

session_unset()之前

session_destroy() 因为session_destroy()不会取消设置与会话关联的任何全局变量,或者取消设置会话cookie。

了解更多信息: http://www.php.net/function.session-unset