ejemplo - ¿Cómo se puede verificar si existe una sesión de PHP?
isset session php (12)
Compruebe si existe sesión antes de llamar a session_start ()
if(!isset($_SESSION))session_start();
Me pregunto cómo comprobar si existe una sesión de PHP ... Mi comprensión es que pase lo que pase, si estoy usando sesiones, tengo que iniciar mis archivos con session_start () para acceder incluso a la sesión, incluso si sé que ya existe .
Leí al usuario session_id () para averiguar si existe una sesión, pero dado que tengo que usar session_start () antes de llamar a session_id (), y session_start () creará una nueva ID si no hay una sesión, ¿cómo? ¿Puedo verificar si existe una sesión?
En PHP hay algo llamado el nombre de la sesión. El nombre está relacionado con la cookie que se establecerá si la sesión ya se inició.
Entonces puede verificar la matriz $_COOKIE
si hay una cookie de sesión disponible. Normalmente, las cookies son la forma preferida de intercambiar la identificación de la sesión para el nombre de la sesión con el navegador.
Si ya existe una cookie, esto significa que una sesión PHP se inició antes. Si no, entonces session_start()
creará una nueva identificación de sesión y sesión.
Una segunda forma de verificar esto es verificar los encabezados salientes si la cookie para la sesión está configurada allí. Se establecerá si se trata de una nueva sesión. O si la identificación de la sesión cambió.
Encuentro que es mejor muchas veces (depende de la naturaleza de la aplicación) simplemente probar para ver si una cookie de sesión está configurada en el cliente:
<?php
if (isset($_COOKIE["PHPSESSID"])) {
echo "active";
} else {
echo "don''t see one";
}
?>
Por supuesto, reemplace el nombre de sesión predeterminado "PHPSESSID" por uno personalizado que esté utilizando.
Guarde el session_id
en $_SESSION
y contrólelo.
Primera vez
session_start();
$_SESSION[''id''] = session_id();
Inicia una sesión y almacena la identificación de sesión dada aleatoriamente.
La próxima vez
session_start();
$valid_session = isset($_SESSION[''id'']) ? $_SESSION[''id''] === session_id() : FALSE;
if (!$valid_session) {
header(''Location: login.php'');
exit();
}
Inicia una sesión, comprueba si la identificación de la sesión actual y la identificación de sesión almacenada son idénticas (con el ternario? Como reemplazo del cortocircuito AND no existente en php). Si no, solicita el inicio de sesión nuevamente.
Lo resolví hace tres años, pero sin querer borré el archivo de mi computadora.
fue así. 3 páginas que el usuario tenía que visitar en el orden que yo quería.
1) arriba de cada página php enter code here
inicio de sesión (); enter code here
2) primera página: a) enter code here
$ _session ["timepage1"] = una función de fecha php; time () simple de usar b) enter code here
$ _session ["timepage2"] = $ _session ["timepage1"]; b) enter code here
$ _session ["timepage3"] = $ _ session ["timepage1"]; 3) segunda página: a) enter code here
$ _session ["timepage2"] = una función de fecha php; time () simple de usar b) enter code here
$ _session ["timepage3"] = $ _session ["timepage3"]; 3) tercera página: a) enter code here
$ _session ["timepage3"] = una función de fecha php; tiempo () simple de usar
la lógica: si timepage3 menos de timepage3 en la página 2 {el usuario ha ido a la página 3 antes de la página 2 hacer algo}
si timepage2 en la página 2 es menor que timepage1 {el usuario puede estar intentando piratear la página dos, queremos que en la página 1 haga algo}
timepage1 nunca debe ser igual a timepage2 o timepage3 en ninguna página excepto en la página1 porque si no es mayor en las páginas dos o tres, el usuario puede estar intentando hackear "hacer algo"
puede hacer cosas complejas con aritmética simple con las 3 variables timepage1-2-3. puede redirigir o enviar un mensaje para decir vaya a la página 2. También puede decir si el usuario saltó la página 2. luego envíe de vuelta a la página 2 o la página uno, pero la mejor característica de seguridad es no decir nada simplemente redirigir a la página1.
si enter code here
echo time (); en cada página, durante la prueba, verá los últimos 3 dígitos subiendo si visita en el orden correcto.
Puede llamar a session_id antes de session_start. http://www.php.net/manual/en/function.session-id.php - lee el id param
Siempre he usado simplemente
if (@session_id() == "") @session_start();
No me ha fallado todavía
Ha pasado bastante tiempo usando esto.
NOTA : @
simplemente suprime las advertencias.
apague el informe de errores si está funcionando noting en su versión php ponga arriba en su código php
error_reporting(0);
este código puede ayudar!
<?php
session_start();
if(isset($_SESSION[''visit''])) {
echo "you have visit this page before!";
} else {
echo "Welcome In Our Site";
$_SESSION[''visit''] = 1;
}
?>
isset ($ _ SESSION) no es suficiente porque si se ha creado y destruido una sesión (con session_destroy()
) en la misma ejecución, isset ($ _ SESSION) devolverá verdadero . Y esta situación puede ocurrir sin que usted lo sepa cuando se utiliza un código de terceros. session_id()
devuelve correctamente una cadena vacía, sin embargo, y puede session_start()
antes de session_start()
.
En las versiones de PHP anteriores a 5.4, puede simplemente la función session_id()
:
$has_session = session_id() !== '''';
En PHP versión 5.4+, puede usar session_status()
:
$has_session = session_status() == PHP_SESSION_ACTIVE;
isset($_SESSION)
Eso debería ser. Si desea verificar si existe una sola variable de sesión, use if(isset($_SESSION[''variablename'']))
.