Diferencia entre revisiones de «Usuario:ManuelRomero/php/sesiones»
De WikiEducator
< Usuario:ManuelRomero | php
Línea 221: | Línea 221: | ||
:Esta página desconecta al usuario de la aplicación y redirige al usuario de forma automática a la pantalla de autentificación. | :Esta página desconecta al usuario de la aplicación y redirige al usuario de forma automática a la pantalla de autentificación. | ||
: No muestra ninguna información en pantalla, por lo que no es visible para el usuario. | : No muestra ninguna información en pantalla, por lo que no es visible para el usuario. | ||
+ | *Para realizar esta práctiva vamos a utilizar la siguiente hoja de estilo, disponible en un fichero puesto en el moodle | ||
+ | *Observa los diferentes div definidos para poderlos utilizar como es el caso de '''''error''''' | ||
+ | <source lang=css> | ||
+ | .error { | ||
+ | font-family: Verdana, Arial, sans-serif; | ||
+ | font-size: 0.7em; | ||
+ | color: #900; | ||
+ | background-color : #ffff00; | ||
+ | } | ||
+ | |||
+ | .divisor { | ||
+ | clear:both; | ||
+ | height:0; | ||
+ | font-size: 1px; | ||
+ | line-height: 0px; | ||
+ | } | ||
+ | |||
+ | #login fieldset { | ||
+ | position: absolute; | ||
+ | left: 50%; | ||
+ | top: 50%; | ||
+ | width: 230px; | ||
+ | margin-left: -115px; | ||
+ | height: 160px; | ||
+ | margin-top: -80px; | ||
+ | padding:10px; | ||
+ | border:1px solid #ccc; | ||
+ | background-color: #eee; | ||
+ | } | ||
+ | |||
+ | #login legend { | ||
+ | font-family : Arial, sans-serif; | ||
+ | font-size: 1.3em; | ||
+ | font-weight:bold; | ||
+ | color:#333; | ||
+ | } | ||
+ | |||
+ | #login .campo { | ||
+ | margin-top:8px; | ||
+ | margin-bottom: 10px; | ||
+ | } | ||
+ | |||
+ | #login label { | ||
+ | font-family : Arial, sans-serif; | ||
+ | font-size:0.8em; | ||
+ | font-weight: bold; | ||
+ | } | ||
+ | |||
+ | |||
+ | #login input[type="text"], #login input[type="password"] { | ||
+ | font-family : Arial, Verdana, sans-serif; | ||
+ | font-size: 0.8em; | ||
+ | line-height:140%; | ||
+ | color : #000; | ||
+ | padding : 3px; | ||
+ | border : 1px solid #999; | ||
+ | height:18px; | ||
+ | width:220px; | ||
+ | } | ||
+ | |||
+ | #login input[type="submit"] { | ||
+ | width:100px; | ||
+ | height:30px; | ||
+ | padding-left:0px; | ||
+ | } | ||
+ | |||
+ | .pagproductos body, .pagcesta body { | ||
+ | font: 100% Verdana, Arial, Helvetica, sans-serif; | ||
+ | background: #666; | ||
+ | margin: 0; | ||
+ | padding: 0; | ||
+ | text-align: center; | ||
+ | color: #000000; | ||
+ | } | ||
+ | |||
+ | #contenedor { | ||
+ | width: 90%; | ||
+ | background: #fff; | ||
+ | margin: 0 auto; | ||
+ | border: 1px solid #000; | ||
+ | text-align: left; | ||
+ | } | ||
+ | |||
+ | #encabezado { | ||
+ | padding: 0 10px; | ||
+ | border-top-width: thin; | ||
+ | border-right-width: thin; | ||
+ | border-bottom-width: thin; | ||
+ | border-left-width: thin; | ||
+ | border-top-style: solid; | ||
+ | border-right-style: solid; | ||
+ | border-bottom-style: solid; | ||
+ | border-left-style: solid; | ||
+ | background-color: #9cf; | ||
+ | } | ||
+ | |||
+ | #encabezado h1 { | ||
+ | margin: 0; | ||
+ | padding: 10px 0; | ||
+ | } | ||
+ | .pagproductos #cesta { | ||
+ | float: right; | ||
+ | width: 12em; | ||
+ | background-color: #588; | ||
+ | } | ||
+ | .pagproductos #cesta h3 { | ||
+ | margin-left: 10px; | ||
+ | margin-right: 10px; | ||
+ | } | ||
+ | .pagproductos #cesta p { | ||
+ | margin-left: 10px; | ||
+ | margin-right: 10px; | ||
+ | font-size: 10px; | ||
+ | } | ||
+ | |||
+ | .pagproductos #cesta input[type="submit"] { | ||
+ | margin-left: 10px; | ||
+ | margin-right: 10px; | ||
+ | margin-bottom: 3px; | ||
+ | width:100px; | ||
+ | height:30px; | ||
+ | padding-left:0px; | ||
+ | } | ||
+ | |||
+ | .pagproductos #productos { | ||
+ | margin: 0 10em 0 10px; | ||
+ | } | ||
+ | |||
+ | .pagcesta #productos { | ||
+ | margin: 10px; | ||
+ | font-size: 12px; | ||
+ | } | ||
+ | |||
+ | .pagproductos #productos input, .pagproductos #productos p { | ||
+ | font-size: 10px; | ||
+ | } | ||
+ | |||
+ | #productos .codigo { | ||
+ | width: 20%; | ||
+ | float: left; | ||
+ | } | ||
+ | |||
+ | #productos .nombre { | ||
+ | width: 60%; | ||
+ | float: left; | ||
+ | } | ||
+ | |||
+ | #productos .precio { | ||
+ | width: 20%; | ||
+ | text-align: right; | ||
+ | font-weight: bold; | ||
+ | } | ||
+ | |||
+ | #pie { | ||
+ | padding: 0 10px; | ||
+ | background-color: #99ccff; | ||
+ | border-top-width: thin; | ||
+ | border-right-width: thin; | ||
+ | border-bottom-width: thin; | ||
+ | border-left-width: thin; | ||
+ | border-top-style: solid; | ||
+ | border-right-style: solid; | ||
+ | border-bottom-style: solid; | ||
+ | border-left-style: solid; | ||
+ | } | ||
+ | </source> | ||
==login.php== | ==login.php== | ||
*Usando la base de datos de usuarios validamos el usuario | *Usando la base de datos de usuarios validamos el usuario |
Revisión de 19:35 21 nov 2014
Trabajo en proceso, espera cambios frecuentes. Tu ayuda y retroalimentación son bienvenidos. Ver página de charlas. |
SSID de la sesión
http://www.misitioweb.com/tienda/listado.php&PHPSESSID=34534fg4ffg34ty
Configuración
Creando la sesión
Tip: Cuando se hace un cambio de estado (login, cambio de permisos, ...): regenerar id.
session_regenerate_id()
{{Ejemplo <?php // Iniciamos la sesión o recuperamos la anterior sesión existente session_start(); // Comprobamos si la variable ya existe if (isset($_SESSION['visitas'])) $_SESSION['visitas']++; else $_SESSION['visitas'] = 0; ?> }}
<?php // Iniciamos la sesión o recuperamos la anterior sesión existente session_start(); // En cada visita añadimos un valor al array "visitas" $_SESSION['visitas'][] = mktime(); ?> Eliminando la sesion
Elimina completamente la información de la sesión del dispositivo de almacenamiento.
Ejemplo práctico
.error { font-family: Verdana, Arial, sans-serif; font-size: 0.7em; color: #900; background-color : #ffff00; } .divisor { clear:both; height:0; font-size: 1px; line-height: 0px; } #login fieldset { position: absolute; left: 50%; top: 50%; width: 230px; margin-left: -115px; height: 160px; margin-top: -80px; padding:10px; border:1px solid #ccc; background-color: #eee; } #login legend { font-family : Arial, sans-serif; font-size: 1.3em; font-weight:bold; color:#333; } #login .campo { margin-top:8px; margin-bottom: 10px; } #login label { font-family : Arial, sans-serif; font-size:0.8em; font-weight: bold; } #login input[type="text"], #login input[type="password"] { font-family : Arial, Verdana, sans-serif; font-size: 0.8em; line-height:140%; color : #000; padding : 3px; border : 1px solid #999; height:18px; width:220px; } #login input[type="submit"] { width:100px; height:30px; padding-left:0px; } .pagproductos body, .pagcesta body { font: 100% Verdana, Arial, Helvetica, sans-serif; background: #666; margin: 0; padding: 0; text-align: center; color: #000000; } #contenedor { width: 90%; background: #fff; margin: 0 auto; border: 1px solid #000; text-align: left; } #encabezado { padding: 0 10px; border-top-width: thin; border-right-width: thin; border-bottom-width: thin; border-left-width: thin; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; background-color: #9cf; } #encabezado h1 { margin: 0; padding: 10px 0; } .pagproductos #cesta { float: right; width: 12em; background-color: #588; } .pagproductos #cesta h3 { margin-left: 10px; margin-right: 10px; } .pagproductos #cesta p { margin-left: 10px; margin-right: 10px; font-size: 10px; } .pagproductos #cesta input[type="submit"] { margin-left: 10px; margin-right: 10px; margin-bottom: 3px; width:100px; height:30px; padding-left:0px; } .pagproductos #productos { margin: 0 10em 0 10px; } .pagcesta #productos { margin: 10px; font-size: 12px; } .pagproductos #productos input, .pagproductos #productos p { font-size: 10px; } #productos .codigo { width: 20%; float: left; } #productos .nombre { width: 60%; float: left; } #productos .precio { width: 20%; text-align: right; font-weight: bold; } #pie { padding: 0 10px; background-color: #99ccff; border-top-width: thin; border-right-width: thin; border-bottom-width: thin; border-left-width: thin; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; } login.php
<!DOCTYPE html> <!-- Desarrollo Web en Entorno Servidor --> <!-- Ejemplo Tienda Web: login.php --> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>Ejemplo Tema 4: Login Tienda Web</title> <link href="tienda.css" rel="stylesheet" type="text/css"> </head> <body> <div id='login'> <form action='login.php' method='post'> <fieldset > <legend>Login</legend> <div><span class='error'><?php echo $error; ?></span></div> <div class='campo'> <label for='usuario' >Usuario:</label><br/> <input type='text' name='usuario' id='usuario' maxlength="50" /><br/> </div> <div class='campo'> <label for='password' >Contraseña:</label><br/> <input type='password' name='password' id='password' maxlength="50" /><br/> </div> <div class='campo'> <input type='submit' name='enviar' value='Enviar' /> </div> </fieldset> </form> </div> </body> </html> </html> producto.php
// Comprobamos si se ha enviado el formulario de añadir if (isset($_POST['enviar'])) { // Creamos un array con los datos del nuevo producto $producto['nombre'] = $_POST['nombre']; $producto['precio'] = $_POST['precio']; // y lo añadimos $_SESSION['cesta'][$_POST['producto']] = $producto; }
<html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>Ejemplo Tema 4: Listado de Productos</title> <link href="tienda.css" rel="stylesheet" type="text/css"> </head> <body class="pagproductos"> <div id="contenedor"> <div id="encabezado"> <h1>Listado de productos</h1> </div> <div id="cesta"> <h3><img src="cesta.png" alt="Cesta" width="24" height="21"> Cesta</h3> <hr />
<br class="divisor" /> <div id="pie"> <form action='logoffW.php' method='post'> <input type='submit' name='desconectar' value='Desconectar usuario <?php echo $_SESSION['usuario']; ?>'/> </form> <?php if (isset($error)) { print "<p class='error'>Error $error: $mensaje</p>"; } ?> </div>
<?php // Recuperamos la información de la sesión session_start(); // Y comprobamos que el usuario se haya autentificado if (!isset($_SESSION['usuario'])) { die("Error - debe <a href='login.php'>identificarse</a>.<br />"); } ?> cesta.php
<html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>Ejemplo Tema 4: Cesta de la Compra</title> <link href="tienda.css" rel="stylesheet" type="text/css"> </head> <body class="pagcesta"> <div id="contenedor"> <div id="encabezado"> <h1>Cesta de la compra</h1> </div> <div id="productos"> <?php $total = 0; foreach($_SESSION['cesta'] as $codigo => $producto) { // ....... etc etc .... ?> //Fin del código php <hr /> <p><span class='pagar'>Precio total: <?php print $total; ?> €</span></p> <form action='pagarW' method='post'> <p> <span class='pagar'> <input type='submit' name='pagar' value='Pagar'/> </span> </p> </form> </div> <br class="divisor" /> <div id="pie"> <form action='logoffW' method='post'> <input type='submit' name='desconectar' value='Desconectar usuario <?php echo $_SESSION['usuario']; ?>'/> </form> </div> </div> </body> </html>
pagar.php
logoff.php
|