2009-05-28 31 views

Respuesta

28

Sí. Como la ID de la sesión se transporta a través de la URL (document.location.href) o mediante una cookie (document.cookie), puede verificar la presencia de una ID de sesión.

+1

sarnath'd maldita sea :) También vale la pena mencionar algunas plataformas escribir esto a un campo oculto en una forma recuperable, determinable. – annakata

3

Hasta donde yo sé, una sesión del navegador no tiene una identificación.

Si se refiere a la sesión del servidor, generalmente se almacena en una cookie. La cookie que almacena ASP.NET, por ejemplo, se llama "ASP.NET_SessionId".

4

que puede recibir el identificador de sesión mediante la emisión de la siguiente expresión regular en document.cookie:

alerta

(document.cookie.match (/ PHPSESSID = [^;] + /));

en mi ejemplo, el nombre de la cookie para almacenar la identificación de la sesión es PHPSESSID (servidor php), simplemente reemplace el PHPSESSID con el nombre de la cookie que contiene la identificación de la sesión. (configurable por el servidor web)

0

es probable que pueda hacer ping al servidor a través de ajax dentro de javascript. El archivo php puede ser similar a:

<?php 
session_start(); 
$id = session_id(); 
echo $id; 
?> 

Esto le devolverá la identificación de la sesión actual. Era esto lo que estabas buscando.

2

Para variables PHPSESSID de PHP, esta función funciona:

function getPHPSessId() { 
    var phpSessionId = document.cookie.match(/PHPSESSID=[A-Za-z0-9]+\;/i); 

    if(phpSessionId == null) 
     return ''; 

    if(typeof(phpSessionId) == 'undefined') 
     return ''; 

    if(phpSessionId.length <= 0) 
     return ''; 

    phpSessionId = phpSessionId[0]; 

    var end = phpSessionId.lastIndexOf(';'); 
    if(end == -1) end = phpSessionId.length; 

    return phpSessionId.substring(10, end); 
} 
4

Lo siguiente puede ser utilizado para recuperar JSESSIONID:

function getJSessionId(){ 
    var jsId = document.cookie.match(/JSESSIONID=[^;]+/); 
    if(jsId != null) { 
     if (jsId instanceof Array) 
      jsId = jsId[0].substring(11); 
     else 
      jsId = jsId.substring(11); 
    } 
    return jsId; 
} 
+0

¿Alguna vez la expresión regular devolverá algo más que una matriz con un valor? No hay ningún modificador global, por lo que solo debe devolver la primera coincidencia o nulo si no coincide, lo que presumiblemente es lo que desea. – RTF

1

Aquí está una función corta y dulce JavaScript para buscar el identificador de sesión:

function session_id() { 
    return /SESS\w*ID=([^;]+)/i.test(document.cookie) ? RegExp.$1 : false; 
} 

O si prefiere una variable, aquí hay un simple delineador:

var session_id = /SESS\w*ID=([^;]+)/i.test(document.cookie) ? RegExp.$1 : false; 

Deben coincidir con la cookie de ID de sesión para PHP, JSP, .NET y supongo que varios otros procesadores del lado del servidor también.

0

Actualización 2017

var cookie = new URLSearchParams(document.cookie) 
if(cookie.has("PHPSESSID")){ 
    var sessionID = cookie.get("PHPSESSID") 
} 
Cuestiones relacionadas