Skip to content

Instantly share code, notes, and snippets.

@Ricardolau
Last active October 2, 2021 00:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Ricardolau/e960f94cf2fc6fb8d4dd71c71711a05a to your computer and use it in GitHub Desktop.
Save Ricardolau/e960f94cf2fc6fb8d4dd71c71711a05a to your computer and use it in GitHub Desktop.
<?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