Diferencia entre revisiones de «Usuario:ManuelRomero/php/cookies»
De WikiEducator
< Usuario:ManuelRomero | php
(→Coockies con array) |
(→Coockies con array) |
||
| Línea 180: | Línea 180: | ||
*Crea un formulario para que el usuario sepuede registrar | *Crea un formulario para que el usuario sepuede registrar | ||
*Visualiza los accesos del usuario acutual así como los accesos del resto de usuarios | *Visualiza los accesos del usuario acutual así como los accesos del resto de usuarios | ||
| + | *Âquí podemos ver el ejemplo | ||
| + | <hr/> | ||
| + | http://manuel.infenlaces.com/cookies/ | ||
| + | *Para el formulario este sencillo css | ||
| + | <source lang=css> | ||
| + | #login fieldset { | ||
| + | width: 230px; | ||
| + | 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; | |
| − | { | + | } |
| − | + | </source> | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
<!-- | <!-- | ||
| − | + | ===Posible solución del ejercicio=== | |
<?php | <?php | ||
// Si el usuario aún no se ha autentificado, pedimos las credenciales | // Si el usuario aún no se ha autentificado, pedimos las credenciales | ||
| − | // | + | //Si me he registrado verifico los datos |
| − | + | require_once "baseDatos.php"; | |
| − | if ( | + | 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 | |
| − | + | ||
| − | + | ||
| − | $conexion = | + | |
| − | + | ||
| − | + | ||
| − | if ($ | + | |
| − | + | ||
| − | + | ||
| − | // Ejecutamos la consulta para comprobar si existe | + | |
| − | // esa combinación de usuario y | + | |
$sql = <<<SQL | $sql = <<<SQL | ||
| − | SELECT usuario FROM usuarios | + | SELECT usuario FROM usuarios |
| − | + | where usuario = ? | |
| − | + | and | |
| + | contrasena =? | ||
SQL; | 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); |
| − | if (isset($_COOKIE[ | + | |
| − | $acceso=$_COOKIE[ | + | |
} | } | ||
| − | + | //Añadimos el nuevo acceso en la cookie correspondiente | |
| − | + | setcookie($usuario . "[" . ($indice) . "]", time(), time() + 3600); | |
| − | // | + | |
| − | + | ||
| − | setcookie( | + | |
| − | + | ||
| − | + | ||
} | } | ||
| − | $ | + | $stmt->free_result(); |
$conexion->close(); | $conexion->close(); | ||
| − | } | + | } |
| − | } | + | } |
?> | ?> | ||
| + | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " | ||
| + | http://www.w3.org/TR/html4/loose.dtd"> | ||
| + | <!-- Desarrollo Web en Entorno Servidor --> | ||
| + | <!-- Tema 4 : Desarrollo de aplicaciones web con PHP --> | ||
| + | <!-- Ejemplo: Cookies en autentificación HTTP --> | ||
<html> | <html> | ||
<head> | <head> | ||
<meta http-equiv="content-type" content="text/html; charset=UTF-8"> | <meta http-equiv="content-type" content="text/html; charset=UTF-8"> | ||
| − | <title>Ejemplo | + | <title>Ejemplo Cookies en autentificación </title> |
| − | <link href=" | + | <link href="cookie.css" rel="stylesheet" type="text/css"> |
</head> | </head> | ||
<body> | <body> | ||
| + | <!-- | ||
| + | En este forumario dejamos al usuario que se registre cuando quiera | ||
| + | --> | ||
| + | <div id="login"> | ||
| + | <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> | ||
| + | </div> | ||
| + | |||
<?php | <?php | ||
| − | echo " | + | if ($error == null) { |
| − | + | echo"<h2>Lista de accesos del usuario conectado actualmente $usuario</h2><hr/>"; | |
| − | + | 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]) . "<br/>"; | |
| − | + | } else | |
| − | + | echo "Bienvenido. Esta es su primera visita. $nombre<br/>"; | |
| − | + | //ahora recorro todos los usuarios"; | |
| + | foreach ($_COOKIE as $user => $accesos) { | ||
| + | if ($user != $usuario) { | ||
| + | echo "<h2> Usuario $user </h2><br/><hr/>"; | ||
| + | foreach ($accesos as $numAcceso => $hora) { | ||
| + | echo "Acceso número $numAcceso a las " . date("d/m/y \a \l\a\s H:i", $hora) . "<br/>"; | ||
| + | } | ||
| + | } | ||
} | } | ||
| − | + | } else | |
| − | }else | + | echo "Se ha producido el error $error.<br />"; |
| − | echo " | + | |
| − | + | ||
?> | ?> | ||
</body> | </body> | ||
</html> | </html> | ||
| + | </source> | ||
| + | *Bases de datos donde habrá que actualizar las credenciales | ||
| + | <source lang =php> | ||
| + | <?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; | ||
| + | } | ||
| + | ?> | ||
| + | </source> | ||
--> | --> | ||
| + | |||
| + | |||
| + | }} | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | {{Lectura|Title=Administrar cookies en diferentes navegadores| | ||
| + | *'''''Firefox''''' http://support.mozilla.org/es/kb/Borrar%20cookies?esab=a&s=cookies&r=2&as=s | ||
| + | *'''''Chrome/Chromium''''': http://support.google.com/chrome/bin/answer.py?hl=es&answer=95647 | ||
| + | *'''''Internet Explorer''''': http://windows.microsoft.com/es-es/windows7/how-to-manage-cookies-in-internet-explorer-9 | ||
| + | *'''''Opera''''': http://help.opera.com/Windows/11.50/es-ES/cookies.html | ||
| + | *'''''Safari''''': http://support.apple.com/kb/ph5042 | ||
| + | }} | ||
| + | |} | ||
Revisión de 06:02 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 ..... <>
|

