SlideShare una empresa de Scribd logo
LOGO
Msig. Ing. Robert Moreira Centeno
mcrobertw@hotmail.com
Septiembre de 2016
TEMA:
«COOKIES Y SESIONES EN PHP»
1. ¿Qué son las cookies? Especificación RFC 6265(Abril del 2011)
2. ¿Cómo se crean las cookies?
3. ¿Cómo leer cookies?
4. ¿Cómo borrar cookies en PHP?
5. EJEMPLO: Detectar si un usuario ha regresado al sitio web o es
nuevo
6. EJEMPLO: Tiempo transcurrido (años, meses, días, horas, minutos y
segundos) desde la última vez que un usuario visito un website.
7. EJEMPLO: Contador de visitas
8. EJEMPLO: Elegir el color de una página con cookie
9. Cookie definida como un array
10. Concepto y uso de sesiones en PHP
11. EJEMPLO: GUARDAR Y LEER EN EL ARRAY $_SESSION
(Administrando la sesión con cookies)
12. EJEMPLO: GUARDAR Y LEER EN EL ARRAY $_SESSION
(Administrando la sesión con URL)
13. EJEMPLO: Contador de visitas con sesiones
14. EJEMPLO: Página de acceso con usuario y contraseña
15. EJEMPLO: Control de autenticación en 2 o más páginas
Descargar Diapositiva y
Ejercicios en:
http://ouo.io/dT95PJ
1. ¿Qué son las cookies.?
Company Logo
Conseguir información sobre los hábitos de navegación del usuario, e intentos de spyware
(programas espía), por parte de agencias de publicidad y otros. Esto puede causar problemas de
privacidad y es una de las razones por la que las cookies tienen sus detractores.
En realidad, las cookies son solo datos, no código, luego no pueden borrar ni leer información del
ordenador de los usuarios.
En una cookie se puede almacenar muy pocos datos (hasta un máximo de 4093 caracteres por
cada cookie), y solo es posible almacenar hasta 20 cookies por dominio (esto es importante tenerlo
presente por si en distintas sesiones de nuestro sitio hacemos uso de cookies), y un navegador solo
puede almacenar hasta 300 cookies en total, compartidas entre todos los sitios que ese usuario
visita (de lo contario, el navegador empezara a eliminar las cookies más antiguas, lo que constituye
la razón de que algunos sitios que usan cookies para recordar nuestros datos, nos vuelvan a pedir
una y otra vez que nos identifiquemos, periódicamente: es porque su cookie fue borrada ,
desplazada por otras cookies mas nuevas de otros sitios que fuimos visitando).
Fuente:
http://disenowebakus.net/almacenar-variables-en-cookies.php
2. ¿Cómo se crean las cookies? (PARTE 1 DE 3)
Company Logo
Ejemplo: setcookie (‘nombre’, ‘Ana’, time() + 4800)
- El nombre de la cookie es nombre, contendrá el valor Ana, y expirará 4800
segundos después de su creación.
bool setcookie ( string $name
[, string $value
[, int $expire = 0
[, string $path
[, string $domain
[, bool $secure = false
[, bool $httponly = false ]
]
]
]
]
] )
- Las cookies se crean usando la función setcookie, Todos los argumentos exceptuando el argumento name son
opcionales.
Fuente:
http://php.net/manual/es/function.setcookie.php
2. ¿Cómo se crean las cookies? (PARTE 2 DE 3)
Company Logo
index.php
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Ejercicio</title>
</head>
<body>
<form action="cookie.php" method="POST">
Nombre:<input type="text" name="cliente"/>
<input type="submit" value="Enviar!!"/>
</form>
</body>
</html>
<?php
$cliente=$_POST['cliente'];
setcookie('Cliente', $cliente, time()+4800);
?>
cookie.php
Crear en un proyecto en el IDE que se quiera los siguientes 2 archivos, al ejecutar index.php el resultado se verá
si se visualiza la sección de cookies como en la siguiente diapositiva.
2. ¿Cómo se crean las cookies? (PARTE 3 DE 3)
Company Logo
- Esta captura corresponde al navegador Mozilla Firefox y se usó XAMPP como servidor de aplicaciones.
3. ¿Cómo leer cookies en PHP?
Company Logo
Para recibir las cookies que el navegador del usuario pueda tener creadas en el sistema se utiliza
el array asociativo $_COOKIE. En este array están todas las cookies que tiene disponible la página
PHP en el dominio y el directorio donde está colocado.
En PHP 4.1.0 Se introdujo $_COOKIE,
haciendo $HTTP_COOKIE_VARS obsoleta.
Fuente:
http://php.net/manual/es/reserved.variables.cookies.php
http://www.desarrolloweb.com/articulos/cookies-en-php.html
<?php
if (isset($_COOKIE['Cliente'])){
echo 'Valor de la cookie: '.$_COOKIE['Cliente'];
}else{
echo "No hay cookies...";
}
?>
leercookie.php
4. ¿Cómo borrar cookies en PHP?
Company Logo
Se borra una cookie con la misma función setCookie asignando un tiempo negativo en expiración
de la misma.
index.php
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Ejercicio</title>
</head>
<body>
<form action="CrearCookie.php" method="POST">
Nombre:<input type="text" name="cliente"/>
<input type="submit" value="Enviar!!"/>
</form>
<a href="LeerCookie.php">Lectura de Cookie</a>
<a href="BorrarCookie.php">Borrar de Cookie</a>
</body>
</html>
<?php
$cliente=$_POST['cliente'];
setcookie('Cliente', $cliente, time()+4800);
header("location: index.php");
?>
CrearCookie.php
<?php
if (isset($_COOKIE['Cliente'])){
echo 'Valor de la cookie: '.$_COOKIE['Cliente'];
}else{
echo "No hay cookies...";
}
?>
LeerCookie.php
<?php
setcookie('Cliente','', time()-4800);
header("location: index.php");
?>
BorrarCookie.php
5. EJEMPLO: Detectar si un usuario ha regresado al sitio web o es
nuevo
Company Logo
index.php
<?php
if (isset($_COOKIE['visita']))
{
echo "Estas de regreso!";
}else{
setcookie('visita','ok',time()+31536000);
echo "Eres nuevo, el sitio te gustará";
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
</body>
</html>
60 segundos x
60 minutos x
24 horas x
365 días = Tiempo en
segundos para un año
que se pone en la función
<?php
if (isset($_COOKIE['fechaultimavisita']))
{
$fecha_ultimavisita=$_COOKIE['fechaultimavisita'];
$datetime1 = new DateTime(DateTime::createFromFormat('Y-m-d H:i:s', $fecha_ultimavisita)->format('Y-m-d H:i:s'));
$datetime2= new DateTime(date("Y-m-d H:i:s", time()));
$interval = $datetime1->diff($datetime2);
//$diff = $interval->format('%y-%m-%d %H:%i:%s');
$anio=$interval->format('%y');
$mes=$interval->format('%m');
$dia=$interval->format('%d');
$hora=$interval->format('%H');
$minutos=$interval->format('%i');
$segundos=$interval->format('%s');
echo "<br>Estas de regreso!... tu última visita fue hace: <b>".
$anio . "</b> años, <b>".
$mes . "</b> meses, <b>".
$dia . "</b> días, <b>".
$hora . "</b> horas, <b>".
$minutos . "</b> minutos, <b>".
$segundos . "</b> segundos";
}else{
$fecha_visita=date('Y-m-d H:i:s');
setcookie('fechaultimavisita',$fecha_visita,time()+31536000);
echo "Eres nuevo, el sitio te gustará";
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
</body>
</html>
6. EJEMPLO: Tiempo transcurrido (años, meses, días, horas, minutos
y segundos) desde la última vez que un usuario visito un website.
Company Logo
index.php
En este ejercicio se usa el
método diff para cálculo
de la diferencia, pero
sería interesante hacerlo
con otros tipos como date
o el formato
DATE_COOKIE para las
fechas en cookies
<?php
if (isset($_COOKIE['numerovisita'])){
$numerovisita=$_COOKIE['numerovisita'];
$numerovisita+=1;
setcookie('numerovisita',$numerovisita, time()+31536000);
echo "Esta es tu visita Nro.<b>".$numerovisita."</b>";
}else{
setcookie('numerovisita',0, time()+31536000);
echo "<br><b>Esta es tu visita Inicial.</b>";
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<?php
// put your code here
?>
</body>
</html>
7. EJEMPLO: Contador de visitas
Company Logo
index.php
Es importante volver a
usar la función setcookie
para actualizar el valor
en el browser del
navegante.
Temas relacionados:
- Tema 13: conteo con sesiones.
<?php
if(isset($_POST['color'])){
$color =$_POST['color'];
setcookie('color',$color,time()+31536000);
} else {
if(isset($_COOKIE['color']))
$color=$_COOKIE['color'];
else
$color="green";
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body <?PHP echo "style='background-color:$color'";?>>
<form method="POST" action="index.php">
<label for ="color"> Escoge el color de fondo!</label>
<select name="color">
<option value="red">Rojo</option>
<option value="blue">Azul</option>
<option value="green">Verde</option>
<option value="yellow">Amarillo</option>
<option value="silver">Gris</option>
<option value="black">Negro</option>
</select>
<input type="submit"value="Elegir"/>
</form>
</body>
</html>
8. EJEMPLO: Elegir el color de una página con cookie
Company Logo
index.php
Este else evalúa cuando el
usuario ingresa por url (es
decir navegando al sitio)
El if de arriba es
específicamente para
cuando sucede el método
POST.
Este método setea el color
de la página.
9. Cookie definida como un array
Para guardar arrays en
setcookie se usa el nombre y el
índice de un array.
<?php
setcookie('color[0]',$color[0],time()+3600);
setcookie('color[1]',$color[1],time()+3600);
?>
Para leer arrays en setcookie:
<?php
echo "<br/>Primer color:
".$_COOKIE['colores']['0'];
echo "<br/>Segundo
color: ".$_COOKIE['colores']['1'];
?>
<?php
$persona=array('Robert','Moreira','33','sportage');
setcookie('usuario[nombre]',$persona[0], time()+3600);
setcookie('usuario[apellido]',$persona[1], time()+3600);
setcookie('usuario[edad]',$persona[2], time()+3600);
setcookie('usuario[carro]',$persona[3], time()+3600);
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<?PHP
foreach($_COOKIE['usuario'] as $clave => $valor){
echo "<b>$clave: </b>".$valor."<br/>";
}
?>
</body>
</html>
Son las 2 formas de leer
un array en una cookie.
index.php
10. Concepto y uso de sesiones en PHP (PARTE 1 DE 3)
El protocolo que utiliza la web (HTTP/HTTPS) es un protocolo sin estado (trata cada petición como una transacción
independiente que no tiene relación con cualquier solicitud anterior), es decir, que no guarda ninguna información
sobre conexiones anteriores: no sabe en qué página web estuviste antes ni si ya has enviado datos al sitio web. Lo
único que conoce la página web son los datos que le llegan a través de la URL.
Las formas que tiene un sitio web para propagar datos sobre un visitante son: la URL o las cookies. El problema
con ambos recursos es que son fácilmente modificables por el usuario: la URL se puede cambiar directamente en
la barra de direcciones del navegado.
Así que, para guardar datos más críticos, se necesitaba un método que no fuera modificable por los usuarios
(para evitar que, por ejemplo, un usuario autenticado se hiciera pasar por otro). Así nacieron las sesiones.
Las sesiones siguen un flujo de trabajo sencillo. Cuando una sesión se inicia, PHP recuperará una sesión existente
usando el ID pasado (normalmente desde una cookie de sesión “Cookie ID”) o, si no se pasa una sesión, se creará
una sesión nueva.
Información sensible del usuario (cédula, nombres, tarjeta de crédito) están guardadas en el servidor y son
relacionadas en función del Cookie id.
Fuente:
http://www.arumeinformatica.es/blog/sesiones-en-php-que-son-y-como-funcionan/
https://es.wikipedia.org/wiki/Protocolo_sin_estado
http://php.net/manual/es/session.examples.basic.php
Parte agregada, no encontré fuente
que lo corroborará
10. Concepto y uso de sesiones en PHP (PARTE 2 DE 3)
Fuente:
http://arthusu.blogspot.com/2014/03/parte-4-seguridad-en-php.html
http://php.net/manual/es/session.configuration.php#ini.session.use-trans-sid
http://www.desarrolloweb.com/articulos/propagar-id-sesion-php.html
Una vez que la iniciamos solo
debemos llenar o leer el array
$_SESSION
Para crear una sesión
usaremos la función:
session_start()
«Administración de sesiones basadas en cookies»
El problema de este método es que no podemos estar
seguros que todos los usuarios acepten cookies de
sesión en sus navegadores.
Obtiene la PHPSESSID que esta almacenada en el
browser del cliente, como lo muestra el tema 11, y
rellena un array asociativo llamado:
$_SESSION
Rellena un array asociativo
llamado: $_SESSION
«Administración de sesiones
basadas en URL»
Consiste en enviar el
identificador en todas las URL
como parámetro, para
recoger por método GET. Es
un poco más engorroso
porque en cada URL
aparecerá el parámetro, algo
como esto:
pagina.php?PHPSESSID=8af7f
938a4ab81aa6406e3d57ea4
1081
Temas relacionados:
Tema 11: Sesión con cookie
Tema 12: Sesión con URL.
10. Concepto y uso de sesiones en PHP (PARTE 3 DE 3)
Fuente:
http://arthusu.blogspot.com/2014/03/parte-4-seguridad-en-php.html
LLENAR UN ARRAY
session_start();
$_SESSION[‘nombre’]=“Antonio”;
$_SESSION[‘apellido’]=“Hidalgo”;
LEER UN ARRAY
session_start()
If(isset($_SESSION[‘nombre’])){
echo $_SESSION[‘nombre’];
}else{
echo ‘No existe el nombre en $_SESSION’;
}
Tanto para leer o para llenar el
array $_SESSION, se usa la función
session_start()
Forma de usar la aplicación
Abrir primero (Escribiendo la url en el navegador)
index.php, luego abrir index2.php.
11. EJEMPLO: GUARDAR Y LEER EN EL ARRAY $_SESSION
(Administrando la sesión con cookies)
<?php
session_start();
$_SESSION['tipoacceso']="Administrador";
?>
<?php
session_start();
if (isset($_SESSION['tipoacceso']))
echo "<br/>Se accedio a la aplicación como:
".$_SESSION['tipoacceso'];
else
echo "<br/>No se ha conseguido identificar sesión...";
?>
index.php
Forma de acceder al PHPSESSID, que relaciona la
sesión del usuario (en el navegador) con los datos
del servidor.
Temas relacionados:
- En esta diapositiva se da respuesta a
una pregunta del tema 10 ¿De donde
PHPSESSID?.
index2.php
12. EJEMPLO: GUARDAR Y LEER EN EL ARRAY $_SESSION
(Administrando la sesión con URL) - PARTE 1 DE 2
PASO 1: Para probar el ejercicio, desactivar las cookies en el browser (en mi caso use OPERA)
PASO 2: Configurar el archivo PHP.INI con lo siguiente.
Función Valor por default
Valor con el que
debe quedar
session.use_cookies Especifica si el módulo usará cookies para
almacenar el id de sesión en la parte del
cliente.
1 1
session.use_only_cookies Especifica si el módulo sólo usará cookies
para almacenar el id de sesión en la parte
del cliente.
Habilitar este ajuste previene ataques que
impican pasar el id de sesión en la URL.
Este ajuste fue añadido en PHP 4.3.0.
1 0
session.use_trans_sid
Cuando session.use_trans_sid está
habilidado, la función session_start()
registrará un gestor de salida interno para
la reescritura de URL.
0 1
Temas relacionados:
- Flujo de las sesiones
12. EJEMPLO: GUARDAR Y LEER EN EL ARRAY $_SESSION
(Administrando la sesión con URL) - PARTE 2 DE 2
PASO 3: La Aplicación
NOTA: La constante SID (que contiene el nombre de la sesión y el ID de sesión en la forma "name=ID")
imprime una cadena vacía si el ID de sesión fue establecido en una cookie de sesión apropiada, por eso es mejor usar:
echo "<br/>Antesde session start 2: ".session_id();
Y no:
echo "<br/>Antesde session start 2: ".SID;
<?php
session_start();
$_SESSION['tipoacceso']="Administrador";
echo "<a
href=index2.php?id=".htmlspecialchars(session_id()).">Acceso a
index 2 despues de crear sesión</a>";
?>
index.php
<?php
session_start();
if (isset($_SESSION['tipoacceso']))
echo "<br/>Se accedio a la aplicación como: ".$_SESSION['tipoacceso'];
else
echo "<br/>No se ha conseguido identificar sesión...";
?>
index2.php
Antes y después de este
session_start() se puede practicar
las siguientes líneas de código:
echo "<br/>Antes de session start:
".session_id();
echo "<br/>Después de session
start: ".session_id();
Estas instrucciones corroboran que se
crean las variables de sesión
Cuando ingreses a index2.php, seguramente no notaras
que el id de sesión esta en la URL, solo selecciona la URL y
aparecerá, el navegador la pone en invisible para dar
cierta seguridad.
<?php
session_start();
if (isset($_SESSION['contadorvisitas']))
$_SESSION['contadorvisitas']++;
else
$_SESSION['contadorvisitas']=0;
echo "<br> tú número de visitas es: ".$_SESSION['contadorvisitas'];
?>
13. EJEMPLO: Contador de visitas con sesiones
Company Logo
index.php La función session_start() es necesaria para crear
la sesión por primera vez o para actualizar una
sesión existente.
Por eso se pone por encima del if, no importa que
lado (verdadero o falso) es ejecute.
Temas relacionados:
- Tema 7: conteo con cookie.
14. EJEMPLO: Página de acceso con usuario y contraseña
Company Logo
index.php
BLOQUE OPCIONAL
Se ejecutará después
de la primera
autenticación fallida
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Ejercicio de autenticación</title>
</head>
<body>
<?php
if(isset($_GET['error'])){
echo "<br>Usuario o contraseña incorrectos...";
}
?>
<form action="paginaprivada.php" method="POST">
<label for="nombre"> Nombre de usuario: </label>
<input type="text" name="nombre" placeholder="Escribe
tu nombre.."/>
<label for="pass"> Contraseña: </label>
<input type="password" name="pass"/>
<br/>
<input type="submit"value="Enviar">
</form>
</body>
</html>
<?php
$usuariook="robert";
$passok="abcd";
if($_POST['nombre']==$usuariook &&
$_POST['pass']==$passok){
session_start();
$_SESSION["verificado"]="si";
echo "<br> Tienes acceso a la página privada..";
} else {
header("Location: index.php?error=si");
}
?>
paginaprivada.php
BLOQUE OPCIONAL
Esta sección es
necesaria para enviar
la variable error por
la que se pregunta en
index.php
Si la autenticación
falla entonces redirige
a index.php
Estos datos
normalmente se
obtienen de una
base de datos
15. EJEMPLO: Control de autenticación en 2 o más páginas
Company Logo
Fuente:
https://www.youtube.com/watch?v=-J2i9NmXJBc
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Ejercicio de autenticación</title>
</head>
<body>
<?php
$variable= filter_input(INPUT_GET, 'errorx');
if($variable=="si")
echo "<br/>Usuario o contraseña incorrectos...";
elseif($variable=='fuera')
echo "<br/>No puedes saltarte la autenticación...";
?>
<form action="paginaprivada.php" method="POST">
<label for="nombre"> Nombre de usuario: </label>
<input type="text" name="nombre" placeholder="Escribe tu nombre.."/>
<label for="pass"> Contraseña: </label>
<input type="password" name="pass"/>
<br/>
<input type="submit"value="Enviar">
</form>
</body>
</html>
<?php
$usuariook="robert";
$passok="abcd";
if($_POST['nombre']==$usuariook && $_POST['pass']==$passok){
session_start();
$_SESSION["verificado"]="si";
echo "<br> Tienes acceso a la página privada..<br/>";
echo "<a href='paginaprivada2.php'>Acceso al contenido privado!!</a>";
} else {
header("Location: index.php?errorx=si");
}
?>
<?php
session_start();
if(isset($_SESSION['verificado'])){
echo "<br/>Esta es tu página privada<br/>";
}else{
header("Location: index.php?errorx=fuera");
}
?>
index.php paginaprivada.php
paginaprivada2.php
En un servidor real si funciona la extracción de datos de la URL con $_GET['nombrevariable'], pero en
ambientes de prueba como xampp no, por eso en este caso se usa la función filter_input.
Se debe intentar acceder por url a la paginaprivada.php y luego a paginaprivada2.php para constatar
la seguridad en el resultado de autenticación de estas 3 páginas.

Más contenido relacionado

La actualidad más candente

Taller de redes i
Taller de redes iTaller de redes i
Taller de redes icarlos
 
Aplicaciones de los lenguajes y autómatas
Aplicaciones de los lenguajes y autómatas Aplicaciones de los lenguajes y autómatas
Aplicaciones de los lenguajes y autómatas
Claudio Eduardo Manzanero Yermo
 
Semana 11 servidrores concurrentes
Semana 11 servidrores concurrentes Semana 11 servidrores concurrentes
Semana 11 servidrores concurrentes
JH Terly Tuanama
 
Diagramas de Clases, Secuencia, Patrones de Diseño MVC, Disño de Interfaces d...
Diagramas de Clases, Secuencia, Patrones de Diseño MVC, Disño de Interfaces d...Diagramas de Clases, Secuencia, Patrones de Diseño MVC, Disño de Interfaces d...
Diagramas de Clases, Secuencia, Patrones de Diseño MVC, Disño de Interfaces d...
Oswaldo Hernández
 
Análisis y diseño orientado a objetos
Análisis y diseño orientado a objetosAnálisis y diseño orientado a objetos
Análisis y diseño orientado a objetos
Christian Leon
 
Analisis de requerimiento
Analisis de requerimientoAnalisis de requerimiento
Analisis de requerimiento
turlahackers
 
Concurrencia bases datos 2
Concurrencia bases datos 2Concurrencia bases datos 2
Concurrencia bases datos 2Velmuz Buzz
 
Modelado del sistema
Modelado del sistemaModelado del sistema
Modelado del sistema
Israel Rey
 
Capa de enlace de datos
Capa de enlace de datosCapa de enlace de datos
Capa de enlace de datosComdat4
 
Diagramas de secuencia
Diagramas de secuenciaDiagramas de secuencia
Diagramas de secuenciastill01
 
Dispositvos de entrada y salida
Dispositvos de entrada y salidaDispositvos de entrada y salida
Dispositvos de entrada y salida
itzayana bacilio
 
Ejercicio uno de proceso FCFS
Ejercicio uno de proceso FCFSEjercicio uno de proceso FCFS
Ejercicio uno de proceso FCFS
JHOVANI189612GAZGA
 
4 2 recopilacion con metodos discretos
4 2 recopilacion con metodos discretos4 2 recopilacion con metodos discretos
4 2 recopilacion con metodos discretos
Giovani Ramirez
 
Transaccion
TransaccionTransaccion
Transaccion
Alberto Torres
 
CLIENTE - SERVIDOR 2 Y 3 CAPAS
CLIENTE - SERVIDOR 2 Y 3 CAPASCLIENTE - SERVIDOR 2 Y 3 CAPAS
CLIENTE - SERVIDOR 2 Y 3 CAPASAndrés Cueva
 
Mapa mental de patrones de diseño
Mapa mental de patrones de diseñoMapa mental de patrones de diseño
Mapa mental de patrones de diseñoadryanaguiilar
 
dispositivos de capa 3 en redes
dispositivos de capa 3 en redes dispositivos de capa 3 en redes
dispositivos de capa 3 en redes
Carlos Soto
 
Script BD_Neptuno
Script BD_NeptunoScript BD_Neptuno

La actualidad más candente (20)

Taller de redes i
Taller de redes iTaller de redes i
Taller de redes i
 
Aplicaciones de los lenguajes y autómatas
Aplicaciones de los lenguajes y autómatas Aplicaciones de los lenguajes y autómatas
Aplicaciones de los lenguajes y autómatas
 
Diagrama de Actividades
Diagrama de ActividadesDiagrama de Actividades
Diagrama de Actividades
 
Semana 11 servidrores concurrentes
Semana 11 servidrores concurrentes Semana 11 servidrores concurrentes
Semana 11 servidrores concurrentes
 
Diagramas de Clases, Secuencia, Patrones de Diseño MVC, Disño de Interfaces d...
Diagramas de Clases, Secuencia, Patrones de Diseño MVC, Disño de Interfaces d...Diagramas de Clases, Secuencia, Patrones de Diseño MVC, Disño de Interfaces d...
Diagramas de Clases, Secuencia, Patrones de Diseño MVC, Disño de Interfaces d...
 
Análisis y diseño orientado a objetos
Análisis y diseño orientado a objetosAnálisis y diseño orientado a objetos
Análisis y diseño orientado a objetos
 
Analisis de requerimiento
Analisis de requerimientoAnalisis de requerimiento
Analisis de requerimiento
 
Concurrencia bases datos 2
Concurrencia bases datos 2Concurrencia bases datos 2
Concurrencia bases datos 2
 
Modelado del sistema
Modelado del sistemaModelado del sistema
Modelado del sistema
 
Diagramas de comportamientos
Diagramas de comportamientosDiagramas de comportamientos
Diagramas de comportamientos
 
Capa de enlace de datos
Capa de enlace de datosCapa de enlace de datos
Capa de enlace de datos
 
Diagramas de secuencia
Diagramas de secuenciaDiagramas de secuencia
Diagramas de secuencia
 
Dispositvos de entrada y salida
Dispositvos de entrada y salidaDispositvos de entrada y salida
Dispositvos de entrada y salida
 
Ejercicio uno de proceso FCFS
Ejercicio uno de proceso FCFSEjercicio uno de proceso FCFS
Ejercicio uno de proceso FCFS
 
4 2 recopilacion con metodos discretos
4 2 recopilacion con metodos discretos4 2 recopilacion con metodos discretos
4 2 recopilacion con metodos discretos
 
Transaccion
TransaccionTransaccion
Transaccion
 
CLIENTE - SERVIDOR 2 Y 3 CAPAS
CLIENTE - SERVIDOR 2 Y 3 CAPASCLIENTE - SERVIDOR 2 Y 3 CAPAS
CLIENTE - SERVIDOR 2 Y 3 CAPAS
 
Mapa mental de patrones de diseño
Mapa mental de patrones de diseñoMapa mental de patrones de diseño
Mapa mental de patrones de diseño
 
dispositivos de capa 3 en redes
dispositivos de capa 3 en redes dispositivos de capa 3 en redes
dispositivos de capa 3 en redes
 
Script BD_Neptuno
Script BD_NeptunoScript BD_Neptuno
Script BD_Neptuno
 

Similar a Sesiones y cookies en php

PHP: Cookies
PHP: CookiesPHP: Cookies
PHP: Cookies
Mario Raul PEREZ
 
2 8 cookiesy_sesionesphp
2 8 cookiesy_sesionesphp2 8 cookiesy_sesionesphp
2 8 cookiesy_sesionesphp
Juan José Taboada León
 
Cookies y sesiones en php
Cookies y sesiones en phpCookies y sesiones en php
Cookies y sesiones en php
xparra99
 
Cookies y Sesiones
Cookies y SesionesCookies y Sesiones
Cookies y Sesiones
ABRAHAM SOPLA
 
Cookies Y Bases De Datos
Cookies Y Bases De DatosCookies Y Bases De Datos
Cookies Y Bases De Datos
ConfesorAD
 
Cookies: Uso en JavaScript
Cookies: Uso en JavaScriptCookies: Uso en JavaScript
Cookies
CookiesCookies
la mejor forma de Conectar c# con mysql con archivos de configuracion
 la mejor forma de Conectar c# con mysql con archivos de configuracion  la mejor forma de Conectar c# con mysql con archivos de configuracion
la mejor forma de Conectar c# con mysql con archivos de configuracion
juandavid1118
 
10.desarrollowebconjava
10.desarrollowebconjava10.desarrollowebconjava
10.desarrollowebconjava
Jose Luis Carrasco Comonfort
 
Taller 23 analisis_metadatos_galarraga
Taller 23 analisis_metadatos_galarragaTaller 23 analisis_metadatos_galarraga
Taller 23 analisis_metadatos_galarraga
Fabricio Galárraga
 
Aplicaciones web offline ITParral Prieto y Nassi
Aplicaciones web offline ITParral Prieto y NassiAplicaciones web offline ITParral Prieto y Nassi
Aplicaciones web offline ITParral Prieto y NassiGuillermo Nassi
 
Magento Best Practices
Magento Best PracticesMagento Best Practices
Magento Best Practices
On4U Global Services
 
Analisis metadatos cookies
Analisis metadatos cookiesAnalisis metadatos cookies
Analisis metadatos cookies
Esteban Pillajo
 
Cookies
CookiesCookies
Cookies1 2d
 

Similar a Sesiones y cookies en php (20)

PHP: Cookies
PHP: CookiesPHP: Cookies
PHP: Cookies
 
2 8 cookiesy_sesionesphp
2 8 cookiesy_sesionesphp2 8 cookiesy_sesionesphp
2 8 cookiesy_sesionesphp
 
Cookies y sesiones en php
Cookies y sesiones en phpCookies y sesiones en php
Cookies y sesiones en php
 
Cookies y Sesiones
Cookies y SesionesCookies y Sesiones
Cookies y Sesiones
 
Cookies Y Bases De Datos
Cookies Y Bases De DatosCookies Y Bases De Datos
Cookies Y Bases De Datos
 
Cookies: Uso en JavaScript
Cookies: Uso en JavaScriptCookies: Uso en JavaScript
Cookies: Uso en JavaScript
 
Cookies
CookiesCookies
Cookies
 
70 Php. Las Cookies
70 Php. Las Cookies70 Php. Las Cookies
70 Php. Las Cookies
 
Manejo cookies
Manejo cookiesManejo cookies
Manejo cookies
 
la mejor forma de Conectar c# con mysql con archivos de configuracion
 la mejor forma de Conectar c# con mysql con archivos de configuracion  la mejor forma de Conectar c# con mysql con archivos de configuracion
la mejor forma de Conectar c# con mysql con archivos de configuracion
 
Cookies
CookiesCookies
Cookies
 
myprofly
myproflymyprofly
myprofly
 
71 Php. Sesiones I
71 Php. Sesiones I71 Php. Sesiones I
71 Php. Sesiones I
 
10.desarrollowebconjava
10.desarrollowebconjava10.desarrollowebconjava
10.desarrollowebconjava
 
Taller 23 analisis_metadatos_galarraga
Taller 23 analisis_metadatos_galarragaTaller 23 analisis_metadatos_galarraga
Taller 23 analisis_metadatos_galarraga
 
Aplicaciones web offline ITParral Prieto y Nassi
Aplicaciones web offline ITParral Prieto y NassiAplicaciones web offline ITParral Prieto y Nassi
Aplicaciones web offline ITParral Prieto y Nassi
 
Funciones
FuncionesFunciones
Funciones
 
Magento Best Practices
Magento Best PracticesMagento Best Practices
Magento Best Practices
 
Analisis metadatos cookies
Analisis metadatos cookiesAnalisis metadatos cookies
Analisis metadatos cookies
 
Cookies
CookiesCookies
Cookies
 

Más de Robert Moreira

Dormir cuando el viento sopla
Dormir cuando el viento soplaDormir cuando el viento sopla
Dormir cuando el viento sopla
Robert Moreira
 
El tornillo-1944
El tornillo-1944El tornillo-1944
El tornillo-1944
Robert Moreira
 
Aprender a programar aplicaciones moviles
Aprender a programar aplicaciones movilesAprender a programar aplicaciones moviles
Aprender a programar aplicaciones moviles
Robert Moreira
 
Programacion orientada a objetos en javascript
Programacion orientada a objetos en javascriptProgramacion orientada a objetos en javascript
Programacion orientada a objetos en javascript
Robert Moreira
 
Instalacion de mongodb
Instalacion de mongodbInstalacion de mongodb
Instalacion de mongodb
Robert Moreira
 
Mvc
MvcMvc
Fundamento de poo en php
Fundamento de poo en phpFundamento de poo en php
Fundamento de poo en php
Robert Moreira
 
Buenos formularios web
Buenos formularios webBuenos formularios web
Buenos formularios web
Robert Moreira
 
Buenos formularios web
Buenos formularios webBuenos formularios web
Buenos formularios web
Robert Moreira
 
Modelo de negocios paypal
Modelo de negocios paypalModelo de negocios paypal
Modelo de negocios paypal
Robert Moreira
 
Modelo negocio motel online.com
Modelo negocio motel online.comModelo negocio motel online.com
Modelo negocio motel online.com
Robert Moreira
 

Más de Robert Moreira (11)

Dormir cuando el viento sopla
Dormir cuando el viento soplaDormir cuando el viento sopla
Dormir cuando el viento sopla
 
El tornillo-1944
El tornillo-1944El tornillo-1944
El tornillo-1944
 
Aprender a programar aplicaciones moviles
Aprender a programar aplicaciones movilesAprender a programar aplicaciones moviles
Aprender a programar aplicaciones moviles
 
Programacion orientada a objetos en javascript
Programacion orientada a objetos en javascriptProgramacion orientada a objetos en javascript
Programacion orientada a objetos en javascript
 
Instalacion de mongodb
Instalacion de mongodbInstalacion de mongodb
Instalacion de mongodb
 
Mvc
MvcMvc
Mvc
 
Fundamento de poo en php
Fundamento de poo en phpFundamento de poo en php
Fundamento de poo en php
 
Buenos formularios web
Buenos formularios webBuenos formularios web
Buenos formularios web
 
Buenos formularios web
Buenos formularios webBuenos formularios web
Buenos formularios web
 
Modelo de negocios paypal
Modelo de negocios paypalModelo de negocios paypal
Modelo de negocios paypal
 
Modelo negocio motel online.com
Modelo negocio motel online.comModelo negocio motel online.com
Modelo negocio motel online.com
 

Último

Lecciones para el monitoreo transparente Experiencias de la Amazonía peruana
Lecciones para el monitoreo transparente Experiencias de la Amazonía peruanaLecciones para el monitoreo transparente Experiencias de la Amazonía peruana
Lecciones para el monitoreo transparente Experiencias de la Amazonía peruana
CIFOR-ICRAF
 
Equipo2fitopresentaciónproyectofinal.pdf
Equipo2fitopresentaciónproyectofinal.pdfEquipo2fitopresentaciónproyectofinal.pdf
Equipo2fitopresentaciónproyectofinal.pdf
anabelmejia0204
 
Mejorando la estimación de emisiones GEI conversión bosque degradado a planta...
Mejorando la estimación de emisiones GEI conversión bosque degradado a planta...Mejorando la estimación de emisiones GEI conversión bosque degradado a planta...
Mejorando la estimación de emisiones GEI conversión bosque degradado a planta...
CIFOR-ICRAF
 
AVANCCE DEL PORTAFOLIO 2.pptx por los alumnos de la universidad utp
AVANCCE DEL PORTAFOLIO 2.pptx por los alumnos de la universidad utpAVANCCE DEL PORTAFOLIO 2.pptx por los alumnos de la universidad utp
AVANCCE DEL PORTAFOLIO 2.pptx por los alumnos de la universidad utp
luismiguelquispeccar
 
Respuestas fisiológicas de las macroalgas al cambio climático.
Respuestas fisiológicas de las macroalgas al cambio climático.Respuestas fisiológicas de las macroalgas al cambio climático.
Respuestas fisiológicas de las macroalgas al cambio climático.
dlhc140904
 
1 PROYECTO ABP DESCUBRIENDO LA PRIMAVERA.pptx
1 PROYECTO ABP DESCUBRIENDO LA PRIMAVERA.pptx1 PROYECTO ABP DESCUBRIENDO LA PRIMAVERA.pptx
1 PROYECTO ABP DESCUBRIENDO LA PRIMAVERA.pptx
cintyapaolags
 
Inclusión y transparencia como clave del éxito para el mecanismo de transfere...
Inclusión y transparencia como clave del éxito para el mecanismo de transfere...Inclusión y transparencia como clave del éxito para el mecanismo de transfere...
Inclusión y transparencia como clave del éxito para el mecanismo de transfere...
CIFOR-ICRAF
 
manual de Seguridad d ela impresora. carestream
manual de Seguridad d ela impresora. carestreammanual de Seguridad d ela impresora. carestream
manual de Seguridad d ela impresora. carestream
decagua3067
 
Minerales en la tierra (corteza terrestre y océanos)
Minerales en la tierra (corteza terrestre y océanos)Minerales en la tierra (corteza terrestre y océanos)
Minerales en la tierra (corteza terrestre y océanos)
JUANCAMILOCAROORJUEL
 
El Medio Ambiente(concientizar nuestra realidad)
El Medio Ambiente(concientizar nuestra realidad)El Medio Ambiente(concientizar nuestra realidad)
El Medio Ambiente(concientizar nuestra realidad)
govesofsofi
 
Perú. las 11 ecorregiones, Antonio Brack Egg, ppt.pptx
Perú. las 11 ecorregiones, Antonio Brack Egg, ppt.pptxPerú. las 11 ecorregiones, Antonio Brack Egg, ppt.pptx
Perú. las 11 ecorregiones, Antonio Brack Egg, ppt.pptx
dennisvictorHuayapa
 
Contexto de TransMoni
Contexto de TransMoniContexto de TransMoni
Contexto de TransMoni
CIFOR-ICRAF
 
proyecto sotenibilidad. SILLON DE BOTELLAS Y BOTE DE BASURA.
proyecto sotenibilidad. SILLON DE BOTELLAS Y BOTE DE BASURA.proyecto sotenibilidad. SILLON DE BOTELLAS Y BOTE DE BASURA.
proyecto sotenibilidad. SILLON DE BOTELLAS Y BOTE DE BASURA.
VALERIARODRIGUEZDELG
 
RESIDUOS SOLIDOS en el hospital san.pptx
RESIDUOS SOLIDOS en el hospital san.pptxRESIDUOS SOLIDOS en el hospital san.pptx
RESIDUOS SOLIDOS en el hospital san.pptx
Cristian Silvano Zepita López
 
1.CAPACITACION-INSPECCIONES-PLANEADAS.ppt
1.CAPACITACION-INSPECCIONES-PLANEADAS.ppt1.CAPACITACION-INSPECCIONES-PLANEADAS.ppt
1.CAPACITACION-INSPECCIONES-PLANEADAS.ppt
LuzRequizSuloaga
 
Avances de Perú con relación al marco de transparencia del Acuerdo de París
Avances de Perú con relación al marco de transparencia del Acuerdo de ParísAvances de Perú con relación al marco de transparencia del Acuerdo de París
Avances de Perú con relación al marco de transparencia del Acuerdo de París
CIFOR-ICRAF
 
El Potencial Transformativo de la Inteligencia Artificial
El Potencial Transformativo de la Inteligencia ArtificialEl Potencial Transformativo de la Inteligencia Artificial
El Potencial Transformativo de la Inteligencia Artificial
SUSMAI
 
Manejo y Tratamiento de Neumonia en el Peru
Manejo y Tratamiento de Neumonia en el PeruManejo y Tratamiento de Neumonia en el Peru
Manejo y Tratamiento de Neumonia en el Peru
medicoocupacionalpiu
 
Biodiversidad, Flora-y-Fauna de Bolivia.pdf
Biodiversidad, Flora-y-Fauna de Bolivia.pdfBiodiversidad, Flora-y-Fauna de Bolivia.pdf
Biodiversidad, Flora-y-Fauna de Bolivia.pdf
reedrichards393
 
Resumen Presentacion Estado Sucre Venezuela
Resumen Presentacion Estado Sucre VenezuelaResumen Presentacion Estado Sucre Venezuela
Resumen Presentacion Estado Sucre Venezuela
ssuserf5ca0c
 

Último (20)

Lecciones para el monitoreo transparente Experiencias de la Amazonía peruana
Lecciones para el monitoreo transparente Experiencias de la Amazonía peruanaLecciones para el monitoreo transparente Experiencias de la Amazonía peruana
Lecciones para el monitoreo transparente Experiencias de la Amazonía peruana
 
Equipo2fitopresentaciónproyectofinal.pdf
Equipo2fitopresentaciónproyectofinal.pdfEquipo2fitopresentaciónproyectofinal.pdf
Equipo2fitopresentaciónproyectofinal.pdf
 
Mejorando la estimación de emisiones GEI conversión bosque degradado a planta...
Mejorando la estimación de emisiones GEI conversión bosque degradado a planta...Mejorando la estimación de emisiones GEI conversión bosque degradado a planta...
Mejorando la estimación de emisiones GEI conversión bosque degradado a planta...
 
AVANCCE DEL PORTAFOLIO 2.pptx por los alumnos de la universidad utp
AVANCCE DEL PORTAFOLIO 2.pptx por los alumnos de la universidad utpAVANCCE DEL PORTAFOLIO 2.pptx por los alumnos de la universidad utp
AVANCCE DEL PORTAFOLIO 2.pptx por los alumnos de la universidad utp
 
Respuestas fisiológicas de las macroalgas al cambio climático.
Respuestas fisiológicas de las macroalgas al cambio climático.Respuestas fisiológicas de las macroalgas al cambio climático.
Respuestas fisiológicas de las macroalgas al cambio climático.
 
1 PROYECTO ABP DESCUBRIENDO LA PRIMAVERA.pptx
1 PROYECTO ABP DESCUBRIENDO LA PRIMAVERA.pptx1 PROYECTO ABP DESCUBRIENDO LA PRIMAVERA.pptx
1 PROYECTO ABP DESCUBRIENDO LA PRIMAVERA.pptx
 
Inclusión y transparencia como clave del éxito para el mecanismo de transfere...
Inclusión y transparencia como clave del éxito para el mecanismo de transfere...Inclusión y transparencia como clave del éxito para el mecanismo de transfere...
Inclusión y transparencia como clave del éxito para el mecanismo de transfere...
 
manual de Seguridad d ela impresora. carestream
manual de Seguridad d ela impresora. carestreammanual de Seguridad d ela impresora. carestream
manual de Seguridad d ela impresora. carestream
 
Minerales en la tierra (corteza terrestre y océanos)
Minerales en la tierra (corteza terrestre y océanos)Minerales en la tierra (corteza terrestre y océanos)
Minerales en la tierra (corteza terrestre y océanos)
 
El Medio Ambiente(concientizar nuestra realidad)
El Medio Ambiente(concientizar nuestra realidad)El Medio Ambiente(concientizar nuestra realidad)
El Medio Ambiente(concientizar nuestra realidad)
 
Perú. las 11 ecorregiones, Antonio Brack Egg, ppt.pptx
Perú. las 11 ecorregiones, Antonio Brack Egg, ppt.pptxPerú. las 11 ecorregiones, Antonio Brack Egg, ppt.pptx
Perú. las 11 ecorregiones, Antonio Brack Egg, ppt.pptx
 
Contexto de TransMoni
Contexto de TransMoniContexto de TransMoni
Contexto de TransMoni
 
proyecto sotenibilidad. SILLON DE BOTELLAS Y BOTE DE BASURA.
proyecto sotenibilidad. SILLON DE BOTELLAS Y BOTE DE BASURA.proyecto sotenibilidad. SILLON DE BOTELLAS Y BOTE DE BASURA.
proyecto sotenibilidad. SILLON DE BOTELLAS Y BOTE DE BASURA.
 
RESIDUOS SOLIDOS en el hospital san.pptx
RESIDUOS SOLIDOS en el hospital san.pptxRESIDUOS SOLIDOS en el hospital san.pptx
RESIDUOS SOLIDOS en el hospital san.pptx
 
1.CAPACITACION-INSPECCIONES-PLANEADAS.ppt
1.CAPACITACION-INSPECCIONES-PLANEADAS.ppt1.CAPACITACION-INSPECCIONES-PLANEADAS.ppt
1.CAPACITACION-INSPECCIONES-PLANEADAS.ppt
 
Avances de Perú con relación al marco de transparencia del Acuerdo de París
Avances de Perú con relación al marco de transparencia del Acuerdo de ParísAvances de Perú con relación al marco de transparencia del Acuerdo de París
Avances de Perú con relación al marco de transparencia del Acuerdo de París
 
El Potencial Transformativo de la Inteligencia Artificial
El Potencial Transformativo de la Inteligencia ArtificialEl Potencial Transformativo de la Inteligencia Artificial
El Potencial Transformativo de la Inteligencia Artificial
 
Manejo y Tratamiento de Neumonia en el Peru
Manejo y Tratamiento de Neumonia en el PeruManejo y Tratamiento de Neumonia en el Peru
Manejo y Tratamiento de Neumonia en el Peru
 
Biodiversidad, Flora-y-Fauna de Bolivia.pdf
Biodiversidad, Flora-y-Fauna de Bolivia.pdfBiodiversidad, Flora-y-Fauna de Bolivia.pdf
Biodiversidad, Flora-y-Fauna de Bolivia.pdf
 
Resumen Presentacion Estado Sucre Venezuela
Resumen Presentacion Estado Sucre VenezuelaResumen Presentacion Estado Sucre Venezuela
Resumen Presentacion Estado Sucre Venezuela
 

Sesiones y cookies en php

  • 1. LOGO Msig. Ing. Robert Moreira Centeno mcrobertw@hotmail.com Septiembre de 2016 TEMA: «COOKIES Y SESIONES EN PHP» 1. ¿Qué son las cookies? Especificación RFC 6265(Abril del 2011) 2. ¿Cómo se crean las cookies? 3. ¿Cómo leer cookies? 4. ¿Cómo borrar cookies en PHP? 5. EJEMPLO: Detectar si un usuario ha regresado al sitio web o es nuevo 6. EJEMPLO: Tiempo transcurrido (años, meses, días, horas, minutos y segundos) desde la última vez que un usuario visito un website. 7. EJEMPLO: Contador de visitas 8. EJEMPLO: Elegir el color de una página con cookie 9. Cookie definida como un array 10. Concepto y uso de sesiones en PHP 11. EJEMPLO: GUARDAR Y LEER EN EL ARRAY $_SESSION (Administrando la sesión con cookies) 12. EJEMPLO: GUARDAR Y LEER EN EL ARRAY $_SESSION (Administrando la sesión con URL) 13. EJEMPLO: Contador de visitas con sesiones 14. EJEMPLO: Página de acceso con usuario y contraseña 15. EJEMPLO: Control de autenticación en 2 o más páginas Descargar Diapositiva y Ejercicios en: http://ouo.io/dT95PJ
  • 2. 1. ¿Qué son las cookies.? Company Logo Conseguir información sobre los hábitos de navegación del usuario, e intentos de spyware (programas espía), por parte de agencias de publicidad y otros. Esto puede causar problemas de privacidad y es una de las razones por la que las cookies tienen sus detractores. En realidad, las cookies son solo datos, no código, luego no pueden borrar ni leer información del ordenador de los usuarios. En una cookie se puede almacenar muy pocos datos (hasta un máximo de 4093 caracteres por cada cookie), y solo es posible almacenar hasta 20 cookies por dominio (esto es importante tenerlo presente por si en distintas sesiones de nuestro sitio hacemos uso de cookies), y un navegador solo puede almacenar hasta 300 cookies en total, compartidas entre todos los sitios que ese usuario visita (de lo contario, el navegador empezara a eliminar las cookies más antiguas, lo que constituye la razón de que algunos sitios que usan cookies para recordar nuestros datos, nos vuelvan a pedir una y otra vez que nos identifiquemos, periódicamente: es porque su cookie fue borrada , desplazada por otras cookies mas nuevas de otros sitios que fuimos visitando). Fuente: http://disenowebakus.net/almacenar-variables-en-cookies.php
  • 3. 2. ¿Cómo se crean las cookies? (PARTE 1 DE 3) Company Logo Ejemplo: setcookie (‘nombre’, ‘Ana’, time() + 4800) - El nombre de la cookie es nombre, contendrá el valor Ana, y expirará 4800 segundos después de su creación. bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ] ] ] ] ] ] ) - Las cookies se crean usando la función setcookie, Todos los argumentos exceptuando el argumento name son opcionales. Fuente: http://php.net/manual/es/function.setcookie.php
  • 4. 2. ¿Cómo se crean las cookies? (PARTE 2 DE 3) Company Logo index.php <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Ejercicio</title> </head> <body> <form action="cookie.php" method="POST"> Nombre:<input type="text" name="cliente"/> <input type="submit" value="Enviar!!"/> </form> </body> </html> <?php $cliente=$_POST['cliente']; setcookie('Cliente', $cliente, time()+4800); ?> cookie.php Crear en un proyecto en el IDE que se quiera los siguientes 2 archivos, al ejecutar index.php el resultado se verá si se visualiza la sección de cookies como en la siguiente diapositiva.
  • 5. 2. ¿Cómo se crean las cookies? (PARTE 3 DE 3) Company Logo - Esta captura corresponde al navegador Mozilla Firefox y se usó XAMPP como servidor de aplicaciones.
  • 6. 3. ¿Cómo leer cookies en PHP? Company Logo Para recibir las cookies que el navegador del usuario pueda tener creadas en el sistema se utiliza el array asociativo $_COOKIE. En este array están todas las cookies que tiene disponible la página PHP en el dominio y el directorio donde está colocado. En PHP 4.1.0 Se introdujo $_COOKIE, haciendo $HTTP_COOKIE_VARS obsoleta. Fuente: http://php.net/manual/es/reserved.variables.cookies.php http://www.desarrolloweb.com/articulos/cookies-en-php.html <?php if (isset($_COOKIE['Cliente'])){ echo 'Valor de la cookie: '.$_COOKIE['Cliente']; }else{ echo "No hay cookies..."; } ?> leercookie.php
  • 7. 4. ¿Cómo borrar cookies en PHP? Company Logo Se borra una cookie con la misma función setCookie asignando un tiempo negativo en expiración de la misma. index.php <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Ejercicio</title> </head> <body> <form action="CrearCookie.php" method="POST"> Nombre:<input type="text" name="cliente"/> <input type="submit" value="Enviar!!"/> </form> <a href="LeerCookie.php">Lectura de Cookie</a> <a href="BorrarCookie.php">Borrar de Cookie</a> </body> </html> <?php $cliente=$_POST['cliente']; setcookie('Cliente', $cliente, time()+4800); header("location: index.php"); ?> CrearCookie.php <?php if (isset($_COOKIE['Cliente'])){ echo 'Valor de la cookie: '.$_COOKIE['Cliente']; }else{ echo "No hay cookies..."; } ?> LeerCookie.php <?php setcookie('Cliente','', time()-4800); header("location: index.php"); ?> BorrarCookie.php
  • 8. 5. EJEMPLO: Detectar si un usuario ha regresado al sitio web o es nuevo Company Logo index.php <?php if (isset($_COOKIE['visita'])) { echo "Estas de regreso!"; }else{ setcookie('visita','ok',time()+31536000); echo "Eres nuevo, el sitio te gustará"; } ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> </body> </html> 60 segundos x 60 minutos x 24 horas x 365 días = Tiempo en segundos para un año que se pone en la función
  • 9. <?php if (isset($_COOKIE['fechaultimavisita'])) { $fecha_ultimavisita=$_COOKIE['fechaultimavisita']; $datetime1 = new DateTime(DateTime::createFromFormat('Y-m-d H:i:s', $fecha_ultimavisita)->format('Y-m-d H:i:s')); $datetime2= new DateTime(date("Y-m-d H:i:s", time())); $interval = $datetime1->diff($datetime2); //$diff = $interval->format('%y-%m-%d %H:%i:%s'); $anio=$interval->format('%y'); $mes=$interval->format('%m'); $dia=$interval->format('%d'); $hora=$interval->format('%H'); $minutos=$interval->format('%i'); $segundos=$interval->format('%s'); echo "<br>Estas de regreso!... tu última visita fue hace: <b>". $anio . "</b> años, <b>". $mes . "</b> meses, <b>". $dia . "</b> días, <b>". $hora . "</b> horas, <b>". $minutos . "</b> minutos, <b>". $segundos . "</b> segundos"; }else{ $fecha_visita=date('Y-m-d H:i:s'); setcookie('fechaultimavisita',$fecha_visita,time()+31536000); echo "Eres nuevo, el sitio te gustará"; } ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> </body> </html> 6. EJEMPLO: Tiempo transcurrido (años, meses, días, horas, minutos y segundos) desde la última vez que un usuario visito un website. Company Logo index.php En este ejercicio se usa el método diff para cálculo de la diferencia, pero sería interesante hacerlo con otros tipos como date o el formato DATE_COOKIE para las fechas en cookies
  • 10. <?php if (isset($_COOKIE['numerovisita'])){ $numerovisita=$_COOKIE['numerovisita']; $numerovisita+=1; setcookie('numerovisita',$numerovisita, time()+31536000); echo "Esta es tu visita Nro.<b>".$numerovisita."</b>"; }else{ setcookie('numerovisita',0, time()+31536000); echo "<br><b>Esta es tu visita Inicial.</b>"; } ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <?php // put your code here ?> </body> </html> 7. EJEMPLO: Contador de visitas Company Logo index.php Es importante volver a usar la función setcookie para actualizar el valor en el browser del navegante. Temas relacionados: - Tema 13: conteo con sesiones.
  • 11. <?php if(isset($_POST['color'])){ $color =$_POST['color']; setcookie('color',$color,time()+31536000); } else { if(isset($_COOKIE['color'])) $color=$_COOKIE['color']; else $color="green"; } ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body <?PHP echo "style='background-color:$color'";?>> <form method="POST" action="index.php"> <label for ="color"> Escoge el color de fondo!</label> <select name="color"> <option value="red">Rojo</option> <option value="blue">Azul</option> <option value="green">Verde</option> <option value="yellow">Amarillo</option> <option value="silver">Gris</option> <option value="black">Negro</option> </select> <input type="submit"value="Elegir"/> </form> </body> </html> 8. EJEMPLO: Elegir el color de una página con cookie Company Logo index.php Este else evalúa cuando el usuario ingresa por url (es decir navegando al sitio) El if de arriba es específicamente para cuando sucede el método POST. Este método setea el color de la página.
  • 12. 9. Cookie definida como un array Para guardar arrays en setcookie se usa el nombre y el índice de un array. <?php setcookie('color[0]',$color[0],time()+3600); setcookie('color[1]',$color[1],time()+3600); ?> Para leer arrays en setcookie: <?php echo "<br/>Primer color: ".$_COOKIE['colores']['0']; echo "<br/>Segundo color: ".$_COOKIE['colores']['1']; ?> <?php $persona=array('Robert','Moreira','33','sportage'); setcookie('usuario[nombre]',$persona[0], time()+3600); setcookie('usuario[apellido]',$persona[1], time()+3600); setcookie('usuario[edad]',$persona[2], time()+3600); setcookie('usuario[carro]',$persona[3], time()+3600); ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <?PHP foreach($_COOKIE['usuario'] as $clave => $valor){ echo "<b>$clave: </b>".$valor."<br/>"; } ?> </body> </html> Son las 2 formas de leer un array en una cookie. index.php
  • 13. 10. Concepto y uso de sesiones en PHP (PARTE 1 DE 3) El protocolo que utiliza la web (HTTP/HTTPS) es un protocolo sin estado (trata cada petición como una transacción independiente que no tiene relación con cualquier solicitud anterior), es decir, que no guarda ninguna información sobre conexiones anteriores: no sabe en qué página web estuviste antes ni si ya has enviado datos al sitio web. Lo único que conoce la página web son los datos que le llegan a través de la URL. Las formas que tiene un sitio web para propagar datos sobre un visitante son: la URL o las cookies. El problema con ambos recursos es que son fácilmente modificables por el usuario: la URL se puede cambiar directamente en la barra de direcciones del navegado. Así que, para guardar datos más críticos, se necesitaba un método que no fuera modificable por los usuarios (para evitar que, por ejemplo, un usuario autenticado se hiciera pasar por otro). Así nacieron las sesiones. Las sesiones siguen un flujo de trabajo sencillo. Cuando una sesión se inicia, PHP recuperará una sesión existente usando el ID pasado (normalmente desde una cookie de sesión “Cookie ID”) o, si no se pasa una sesión, se creará una sesión nueva. Información sensible del usuario (cédula, nombres, tarjeta de crédito) están guardadas en el servidor y son relacionadas en función del Cookie id. Fuente: http://www.arumeinformatica.es/blog/sesiones-en-php-que-son-y-como-funcionan/ https://es.wikipedia.org/wiki/Protocolo_sin_estado http://php.net/manual/es/session.examples.basic.php Parte agregada, no encontré fuente que lo corroborará
  • 14. 10. Concepto y uso de sesiones en PHP (PARTE 2 DE 3) Fuente: http://arthusu.blogspot.com/2014/03/parte-4-seguridad-en-php.html http://php.net/manual/es/session.configuration.php#ini.session.use-trans-sid http://www.desarrolloweb.com/articulos/propagar-id-sesion-php.html Una vez que la iniciamos solo debemos llenar o leer el array $_SESSION Para crear una sesión usaremos la función: session_start() «Administración de sesiones basadas en cookies» El problema de este método es que no podemos estar seguros que todos los usuarios acepten cookies de sesión en sus navegadores. Obtiene la PHPSESSID que esta almacenada en el browser del cliente, como lo muestra el tema 11, y rellena un array asociativo llamado: $_SESSION Rellena un array asociativo llamado: $_SESSION «Administración de sesiones basadas en URL» Consiste en enviar el identificador en todas las URL como parámetro, para recoger por método GET. Es un poco más engorroso porque en cada URL aparecerá el parámetro, algo como esto: pagina.php?PHPSESSID=8af7f 938a4ab81aa6406e3d57ea4 1081 Temas relacionados: Tema 11: Sesión con cookie Tema 12: Sesión con URL.
  • 15. 10. Concepto y uso de sesiones en PHP (PARTE 3 DE 3) Fuente: http://arthusu.blogspot.com/2014/03/parte-4-seguridad-en-php.html LLENAR UN ARRAY session_start(); $_SESSION[‘nombre’]=“Antonio”; $_SESSION[‘apellido’]=“Hidalgo”; LEER UN ARRAY session_start() If(isset($_SESSION[‘nombre’])){ echo $_SESSION[‘nombre’]; }else{ echo ‘No existe el nombre en $_SESSION’; } Tanto para leer o para llenar el array $_SESSION, se usa la función session_start()
  • 16. Forma de usar la aplicación Abrir primero (Escribiendo la url en el navegador) index.php, luego abrir index2.php. 11. EJEMPLO: GUARDAR Y LEER EN EL ARRAY $_SESSION (Administrando la sesión con cookies) <?php session_start(); $_SESSION['tipoacceso']="Administrador"; ?> <?php session_start(); if (isset($_SESSION['tipoacceso'])) echo "<br/>Se accedio a la aplicación como: ".$_SESSION['tipoacceso']; else echo "<br/>No se ha conseguido identificar sesión..."; ?> index.php Forma de acceder al PHPSESSID, que relaciona la sesión del usuario (en el navegador) con los datos del servidor. Temas relacionados: - En esta diapositiva se da respuesta a una pregunta del tema 10 ¿De donde PHPSESSID?. index2.php
  • 17. 12. EJEMPLO: GUARDAR Y LEER EN EL ARRAY $_SESSION (Administrando la sesión con URL) - PARTE 1 DE 2 PASO 1: Para probar el ejercicio, desactivar las cookies en el browser (en mi caso use OPERA) PASO 2: Configurar el archivo PHP.INI con lo siguiente. Función Valor por default Valor con el que debe quedar session.use_cookies Especifica si el módulo usará cookies para almacenar el id de sesión en la parte del cliente. 1 1 session.use_only_cookies Especifica si el módulo sólo usará cookies para almacenar el id de sesión en la parte del cliente. Habilitar este ajuste previene ataques que impican pasar el id de sesión en la URL. Este ajuste fue añadido en PHP 4.3.0. 1 0 session.use_trans_sid Cuando session.use_trans_sid está habilidado, la función session_start() registrará un gestor de salida interno para la reescritura de URL. 0 1 Temas relacionados: - Flujo de las sesiones
  • 18. 12. EJEMPLO: GUARDAR Y LEER EN EL ARRAY $_SESSION (Administrando la sesión con URL) - PARTE 2 DE 2 PASO 3: La Aplicación NOTA: La constante SID (que contiene el nombre de la sesión y el ID de sesión en la forma "name=ID") imprime una cadena vacía si el ID de sesión fue establecido en una cookie de sesión apropiada, por eso es mejor usar: echo "<br/>Antesde session start 2: ".session_id(); Y no: echo "<br/>Antesde session start 2: ".SID; <?php session_start(); $_SESSION['tipoacceso']="Administrador"; echo "<a href=index2.php?id=".htmlspecialchars(session_id()).">Acceso a index 2 despues de crear sesión</a>"; ?> index.php <?php session_start(); if (isset($_SESSION['tipoacceso'])) echo "<br/>Se accedio a la aplicación como: ".$_SESSION['tipoacceso']; else echo "<br/>No se ha conseguido identificar sesión..."; ?> index2.php Antes y después de este session_start() se puede practicar las siguientes líneas de código: echo "<br/>Antes de session start: ".session_id(); echo "<br/>Después de session start: ".session_id(); Estas instrucciones corroboran que se crean las variables de sesión Cuando ingreses a index2.php, seguramente no notaras que el id de sesión esta en la URL, solo selecciona la URL y aparecerá, el navegador la pone en invisible para dar cierta seguridad.
  • 19. <?php session_start(); if (isset($_SESSION['contadorvisitas'])) $_SESSION['contadorvisitas']++; else $_SESSION['contadorvisitas']=0; echo "<br> tú número de visitas es: ".$_SESSION['contadorvisitas']; ?> 13. EJEMPLO: Contador de visitas con sesiones Company Logo index.php La función session_start() es necesaria para crear la sesión por primera vez o para actualizar una sesión existente. Por eso se pone por encima del if, no importa que lado (verdadero o falso) es ejecute. Temas relacionados: - Tema 7: conteo con cookie.
  • 20. 14. EJEMPLO: Página de acceso con usuario y contraseña Company Logo index.php BLOQUE OPCIONAL Se ejecutará después de la primera autenticación fallida <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Ejercicio de autenticación</title> </head> <body> <?php if(isset($_GET['error'])){ echo "<br>Usuario o contraseña incorrectos..."; } ?> <form action="paginaprivada.php" method="POST"> <label for="nombre"> Nombre de usuario: </label> <input type="text" name="nombre" placeholder="Escribe tu nombre.."/> <label for="pass"> Contraseña: </label> <input type="password" name="pass"/> <br/> <input type="submit"value="Enviar"> </form> </body> </html> <?php $usuariook="robert"; $passok="abcd"; if($_POST['nombre']==$usuariook && $_POST['pass']==$passok){ session_start(); $_SESSION["verificado"]="si"; echo "<br> Tienes acceso a la página privada.."; } else { header("Location: index.php?error=si"); } ?> paginaprivada.php BLOQUE OPCIONAL Esta sección es necesaria para enviar la variable error por la que se pregunta en index.php Si la autenticación falla entonces redirige a index.php Estos datos normalmente se obtienen de una base de datos
  • 21. 15. EJEMPLO: Control de autenticación en 2 o más páginas Company Logo Fuente: https://www.youtube.com/watch?v=-J2i9NmXJBc <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Ejercicio de autenticación</title> </head> <body> <?php $variable= filter_input(INPUT_GET, 'errorx'); if($variable=="si") echo "<br/>Usuario o contraseña incorrectos..."; elseif($variable=='fuera') echo "<br/>No puedes saltarte la autenticación..."; ?> <form action="paginaprivada.php" method="POST"> <label for="nombre"> Nombre de usuario: </label> <input type="text" name="nombre" placeholder="Escribe tu nombre.."/> <label for="pass"> Contraseña: </label> <input type="password" name="pass"/> <br/> <input type="submit"value="Enviar"> </form> </body> </html> <?php $usuariook="robert"; $passok="abcd"; if($_POST['nombre']==$usuariook && $_POST['pass']==$passok){ session_start(); $_SESSION["verificado"]="si"; echo "<br> Tienes acceso a la página privada..<br/>"; echo "<a href='paginaprivada2.php'>Acceso al contenido privado!!</a>"; } else { header("Location: index.php?errorx=si"); } ?> <?php session_start(); if(isset($_SESSION['verificado'])){ echo "<br/>Esta es tu página privada<br/>"; }else{ header("Location: index.php?errorx=fuera"); } ?> index.php paginaprivada.php paginaprivada2.php En un servidor real si funciona la extracción de datos de la URL con $_GET['nombrevariable'], pero en ambientes de prueba como xampp no, por eso en este caso se usa la función filter_input. Se debe intentar acceder por url a la paginaprivada.php y luego a paginaprivada2.php para constatar la seguridad en el resultado de autenticación de estas 3 páginas.