Last active
October 2, 2021 00:58
-
-
Save Ricardolau/e960f94cf2fc6fb8d4dd71c71711a05a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/* Autor: Ricardo Carpintero Gil | |
* Post donde hablo de esto : https://ayuda.svigo.es/index.php/programacion/php/296-sessiones-en-php | |
* | |
* */ | |
// --- Inicializo variables --- / | |
$CookieInfo = ''; | |
$cache_expire = ''; | |
$status = ''; | |
// ----- Codigo php antes de escribir nada para funciones correctamente -------------- // | |
// Solicitamos tiempo limite | |
if (isset($_POST['cerrar'])){ | |
$_SESSION['estado']='Destruyo'; | |
session_start(); | |
session_destroy(); | |
} | |
if (isset($_POST['abortar'])){ | |
$_SESSION['estado'] = 'Abortamos'; | |
session_start(); | |
session_abort(); | |
} | |
if (isset($_POST['write_close'])){ | |
session_write_close(); | |
} | |
if (isset($_POST['obtener_param'])){ | |
session_start(); | |
$CookieInfo = session_get_cookie_params(); | |
} | |
if (isset($_POST['asignar_limite'])){ | |
session_cache_limiter('private'); | |
$cache_limiter = session_cache_limiter(); | |
/* establecer la caducidad de la caché a 30 minutos */ | |
session_cache_expire(30); | |
/* iniciar la sesión */ | |
session_start(); | |
} | |
if (isset($_POST['status'])){ | |
$id_session= $_POST['idsession_status']; | |
session_id($id_session); | |
$status = session_status(); | |
} | |
if (isset($_POST['abrir'])){ | |
session_start(); | |
$_SESSION['estado'] = 'inicializada'; | |
} | |
if (isset($_POST['abrir_id'])){ | |
$id_session= $_POST['idsession']; | |
session_id($id_session); // Asi forzamos a crear un nuevo idSession | |
session_start(); | |
$_SESSION['estado'] = 'inicializada_por_id'; | |
} | |
if (isset($_POST['otra'])){ | |
$a= session_create_id(); // Asi creamos un idsession disponible. | |
session_id($a); | |
session_start(); | |
$_SESSION['estado'] = 'inicializada_otra'; | |
} | |
$cache_expire = session_cache_expire(); // Saber cuando expira; | |
if (isset($_SESSION) && count($_SESSION) > 0){ | |
$_SESSION['idsession'] = session_id(); | |
$_SESSION['veces'] ++; | |
} | |
?> | |
<!DOCTYPE html> | |
<html lang="es"> | |
<head> | |
<meta charset="UTF-8"> | |
<meta http-equiv="X-UA-Compatible" content="IE=edge"> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
<!-- CSS only --> | |
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-F3w7mX95PdgyTmZZMECAngseQB83DfGTowi0iMjiWaeVhAn4FJkqJByhZMI3AhiU" crossorigin="anonymous"> | |
<title>Test de Sessiones</title> | |
</head> | |
<body> | |
<!-- Recuerda con las session_start() mandas la cabeceras al navegador , puede imprimir nada antes --> | |
<div class="container"> | |
<div class="row"> | |
<div class="col-md-4"> | |
<div class="col-md-12"> | |
<h4>Informacion de session</h4> | |
<?php | |
echo 'Tiempo expira cache:'.session_cache_expire(). ' minutos<br/>'; | |
?> | |
<div> | |
<p>Mostramos lo pulsado (POST)</p> | |
<div class="bg-light"> | |
<?php | |
echo '<pre><code>'; | |
print_r($_POST); | |
echo '</code></pre>'; | |
?> | |
</div> | |
<div> | |
<?php | |
if (isset($_POST['idsession'])){ | |
echo 'Idsession que debería abrir: '.$_POST['idsession']; | |
} | |
?> | |
</div> | |
<p> Parametros cookie</p> | |
<div class="bg-light"> | |
<?php | |
echo '<pre>'; | |
print_r($CookieInfo); | |
echo '</pre>'; | |
?> | |
</div> | |
</div> | |
</div> | |
<div class="col-md-12" > | |
<p> Datos que hay en $_SESSION</p> | |
<div class="bg-light"> | |
<?php | |
if (isset($_SESSION)){ | |
echo '<pre>'; | |
print_r($_SESSION); | |
echo '</pre>'; | |
} | |
echo 'expira:'.$cache_expire.'<br/>'; | |
echo 'status:'.$status; | |
?> | |
</div> | |
</div> | |
</div> | |
<div class="col-md-8"> | |
<form class="row" action="" method="POST" id="formulario"> | |
<div class="col-md-4"> | |
<h4>Abrir sesiones</h4> | |
<p>Pruebas que realizamos para abrir sesiones de distintas formas</p> | |
<h5>Sesión nueva o existen</h5> | |
<p> Abre una session nueva o reanuda la existen como cookie en el navegador.</p> | |
<button type="submit" name="abrir"> abrir sesion</button> | |
<br/><br/> | |
<h5>Forzar una nueva</h5> | |
<p>Aunque el navegador tenga la cookie de session PHPSESSION , forzamos abrir una nueva. Si eliminar del servidor la anterior.</p> | |
<button name="otra"> otra sesion></button> | |
<br/><br/> | |
<h5>Sesión que indicamos</h5> | |
<label>Pon el idsession que quieres abrir.</label> | |
<input type="text" id="idsession" name="idsession"> | |
<button name="abrir_id"> Abrimos sesion indicada</button> | |
</div> | |
<div class="col-md-4"> | |
<h4>Guardar , Cerrar y destruir session</h4> | |
<h5>Cerrar y destruir </h5> | |
<p>Con la function session_destroy cerramos y borramos la sesion activa.</p> | |
<button name="cerrar">cerrar sesion</button> | |
<h5>Abortar y cerrar </h5> | |
<p>Descartamos los ultimos cambios en $_SESSION y cerramos. | |
<button name="abortar">Abortar sesion</button> | |
<h5>Guardar y cerrar </h5> | |
<p>Descartamos los ultimos cambios en $_SESSION y cerramos. | |
<button name="write_close">Cuardar y cerrar</button> | |
</div> | |
<div class="col-md-4"> | |
<h4>Otras opciones</h4> | |
<h5>Obtener cookie</h5> | |
<p>Obtener los parametros de la cookie de php.ini</p> | |
<button name="obtener_param">Obtener parametros cookie</button> | |
<h5>Cambiar limite cookie</h5> | |
<p>Cambia cuando expira a 30 minutosr</p> | |
<button name="asignar_limite">Cambiar cuando expira</button> | |
<h5>Obtener Status de idsession</h5> | |
<p>A session_id le paso una session y compruebo si esta abierta.<br/>. NO FUNCIONA , al poner id anterior , muestra como abierta..</p> | |
<input type="text" id="idsession_status" name="idsession_status"> | |
<button name="status">Cambiar cuando expira</button> | |
</div> | |
</form> | |
</div> | |
</div> | |
</div> | |
</body> | |
</html> | |
<?php | |
/* FUENTES DONDE CONSULTO COSAS RELACIONADAS. | |
* https://www.it-swarm-es.com/es/php/recorriendo-todas-las-sesiones-de-un-servidor-en-php/957837477/ | |
* https://es.wikipedia.org/wiki/JSON_Web_Token | |
* | |
* | |
* */ | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment