Diferencia entre revisiones de «Usuario:ManuelRomero/php/cookies»
De WikiEducator
< Usuario:ManuelRomero | php
(→Coockies con array) |
(→Coockies con array) |
||
| Línea 198: | Línea 198: | ||
} | } | ||
</source> | </source> | ||
| + | }} | ||
===Posible solución del ejercicio=== | ===Posible solución del ejercicio=== | ||
<?php | <?php | ||
| Línea 312: | Línea 313: | ||
?> | ?> | ||
</source> | </source> | ||
| − | + | ||
Revisión de 06:18 21 nov 2014
Qué es una Cookie
Crear una coockie
http://es.php.net/manual/es/function.setcookie.php
setcookie("usuario", $_SERVER['PHP_AUTH_USER'], time()+3600);
Recuperar la cookie
$usuario = $_COOKIE['usuario']; Borrar una cookie
<?php // Ponemos un tiempo de expiración negativo setcookie("user", "", time()-3600); ?>
}}
Coockies con array
<?php .... $usuario = $_POST['usuario'] ...... //Leemos la cookie que es un array de accesos $arrayAccesos = $_COOKIE[$usuario]; .....
.... $usuario = $_POST['usuario'] ...... //Leemos la cookie que es un array de accesos $arrayAccesos = $_COOKIE[$usuario]; ..... //Ahora ya puedo obtener el tamaño del vector $indice = count($array); //Con este valor añado la nueva entrada setCookie($usuario.'['.$indice.']',time(),time()+3600 .....
Posible solución del ejercicio<?php // Si el usuario aún no se ha autentificado, pedimos las credenciales //Si me he registrado verifico los datos require_once "baseDatos.php"; if (isset($_POST['registrar'])) { $usuario = $_POST['nombre'];
$pass = $_POST['pass'];
$conexion = conectar();
if ($conexion != null) { //Se ha conectado ok a la bd
date_default_timezone_set('Europe/Madrid');
// Ejecutamos la consulta para comprobar si existe
// esa combinación de usuario y contraseña
$sql = <<<SQL
SELECT usuario FROM usuarios
where usuario = ?
and
contrasena =?
SQL; $stmt = $conexion->stmt_init();
$stmt->prepare($sql);
$stmt->bind_param("ss", $usuario, md5($pass));
$stmt->execute();
$stmt->store_result();
//$stmt->bind_result($u);
// Si no existe, se vuelven a pedir las credenciales $indice = 0;
if ($stmt->num_rows == 0) {
$error = "Usuario no reconocido";
} else {
if (isset($_COOKIE[$usuario])) {
//Leemos la cookie y obtenemos el índice
$acceso = $_COOKIE[$usuario];
$indice = count($acceso);
}
//Añadimos el nuevo acceso en la cookie correspondiente
setcookie($usuario . "[" . ($indice) . "]", time(), time() + 3600);
}
$stmt->free_result();
$conexion->close();
}
} ?> <!DOCTYPE html> <html> <head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Ejemplo Cookies en autentificación </title>
<link href="cookie.css" rel="stylesheet" type="text/css">
</head>
<body>
<fieldset >
<legend>Login</legend>
<form action="." method="POST">
<label for='nombre' >Nombre:</label>
<input type="text" name ="nombre">
<label for='pass'>Password: </label>
<input type="text" name ="pass">
<input type="submit" value="Cambiar Usuario" name="registrar"/>
</form>
</fieldset>
<?php
if ($error == null) {
echo"Lista de accesos del usuario conectado actualmente $usuario"; if (isset($acceso)) {
for ($i = 0; $i < $indice; $i++)
echo "-Acceso número $i a las " . date("d/m/y \a \l\a\s H:i", $acceso[$i]) . "
echo "Usuario $user"; foreach ($accesos as $numAcceso => $hora) {
echo "Acceso número $numAcceso a las " . date("d/m/y \a \l\a\s H:i", $hora) . "
</html> </source>
<?php /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ function conectar(){ $usuarioBD ="manuel_manuel"; $pass ="xv2e6w"; $host = "localhost"; $bd = "manuel_dwes"; $conexion = new mysqli($host,$usuarioBD,$pass,$bd); //Hacemos una consulta a ver si el usuario existe if ($conexion->connect_errno){ echo ("Se ha producido un error conectado a la base de datos ".$conexion->connect_error); return null; } return $conexion; } ?>
|

