Ver Mensaje Individual
  #6 (permalink)  
Antiguo 08/05/2007, 08:58
Avatar de Shiryu_Libra
Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 18 años, 1 mes
Puntos: 88
Re: Eliminar sessiones

habria que recordar que al aplicarle una variable de acceso como la que hiciste

session("Usuario")="si"

estas permitiendole al usuario ingresar mientras mantenga viva la conexion con el servidor
y si has puesto

session.Timeout=5
<<--- solo por ejemplo el tiempo(minutos)

si tu usuario, al pasado de 5 minutos no hace ninguna peticion a tu servidor, se eliminaran las variables, de hecho el LOG OUT, que pudieramos implementar nosotros, no es otra cosa mas que una barrida manual(por decirlo asi), de ese proceso automatico

parte de logout, algun punto especifico donde acomodarlo
Código:
<form method="post" action="logout.asp">
<input type=submit value="Cerrar Session"
</form>
en la pagina logout.asp
Código:
<%
session.Contents.RemoveAll()
session.Abandon()
response.write "Salio del sistema"
response.Redirect("ingresar.asp")
%>
algo asi seria la salida, en caso de que le dieras un link como el pequeño formulario

entre tanto enlace que tamm(), escribio anteriormente puse un Global.ASA, de esta forma, espero te sirva, y/o tambien para evaluacion de los muchachos que creo que pudieramos perfeccionarlo

Código PHP:
<object runat="Server" scope="Application"
id="rstActiveUsers" progid="ADODB.Recordset">
</
object>

<
script language="VBScript" runat="Server">
Sub Application_OnStart()
'Seleccionamos una constante de adovbs.inc
    Const adInteger = 3
    Const adVarChar = 200
    Const adDate = 7

'
enlistamos al usuario en memoriaagregando/definiendo los campos
    rstActiveUsers
.Fields.Append "id"adInteger
    rstActiveUsers
.Fields.Append "ip"adVarChar15
    rstActiveUsers
.Fields.Append "browser"adVarChar255
    rstActiveUsers
.Fields.Append "started"adDate

'Ahora abrir para usar el recordset, y agregar los datos de ese usuario
    rstActiveUsers.Open
    Application("NumVisitas") = 0
End Sub

Sub Session_OnStart()
'
asignamos 20 minutos de sessionesto puede variar
    Session
.Timeout 20

'asignamos el tiempo de entrada, aunque segun las lecturas, algunas veces no tiene sentido realizar esto
    Session("Start") = Now()
    
'
preguntamos por logica que no sea el final del recordset
    
If Not rstActiveUsers.EOF Then rstActiveUsers.MoveLast

'agregamos los datos del visitante
    rstActiveUsers.AddNew
    
    rstActiveUsers.Fields("id").Value = _
        Session.SessionID
    
    rstActiveUsers.Fields("ip").Value = _
        Request.ServerVariables("REMOTE_HOST")
    
    rstActiveUsers.Fields("browser").Value = _
        Request.ServerVariables("HTTP_USER_AGENT")
    
    rstActiveUsers.Fields("started").Value = _
        Now()

    rstActiveUsers.Update

'
incremento el numero de visitantesa nuestra websolo por cuestiones estadisticas    
    Application
.lock()
    
Application("NumVisitas") = Application("NumVisitas") + 1
    Application
.unlock()
End Sub

Sub Session_OnEnd
()
'seleccionamos una constante
    Const adAffectCurrent = 1

'
iniciamos el recordset en el primer registro
    rstActiveUsers
.MoveFirst
    
'evaluamos la IDsession, del usuario en cuestion, se evalua con Clong, para que no haya conflictos con los tipos de variables
    Do While Not rstActiveUsers.EOF
        If CLng(rstActiveUsers.Fields("id").Value) = _
            CLng(Session.SessionID) Then
            rstActiveUsers.Delete adAffectCurrent
        End If
        
        rstActiveUsers.MoveNext
    Loop
    
    rstActiveUsers.Update
     Application.lock()
     Application("NumSesion") = Application("NumSesion") - 1
     Application.unlock()
End Sub

Sub Application_OnEnd()
'
y esta parte ocurre cuando se apaga el equipoasi se limpiarian todos los recordsets y liberaria el espacio
    rstActiveUsers
.Close
End Sub
</script>
 
si te fijas, este codigo del Global.asa, hace exactamente lo mismo que te puse en logout.asp, la unica diferencia es que aki se elimina la visita mediante el ID session, que es "unico", dentro del servidor

suerte Shilfild
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra