SlideShare una empresa de Scribd logo
1 de 21
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

Transformar modelo entidad relacion a modelo logico
Transformar modelo entidad relacion a modelo logicoTransformar modelo entidad relacion a modelo logico
Transformar modelo entidad relacion a modelo logicojosecuartas
 
diseño lógico y diseño físico
diseño lógico y diseño físicodiseño lógico y diseño físico
diseño lógico y diseño físicoerrroman
 
Arquitectura de sistemas
Arquitectura de sistemasArquitectura de sistemas
Arquitectura de sistemasTensor
 
Grupo 5-modelos-de-procesos-de-software
Grupo 5-modelos-de-procesos-de-softwareGrupo 5-modelos-de-procesos-de-software
Grupo 5-modelos-de-procesos-de-softwarePrimoLaura
 
tipos de pruebas.
tipos de pruebas.tipos de pruebas.
tipos de pruebas.Juan Ravi
 
Metodologia web
Metodologia webMetodologia web
Metodologia webAnel Sosa
 
25 Estandares - IEEE Calidad de Software
25 Estandares - IEEE Calidad de Software25 Estandares - IEEE Calidad de Software
25 Estandares - IEEE Calidad de SoftwareCamila Arbelaez
 
15 metodologia web qem
15 metodologia web qem15 metodologia web qem
15 metodologia web qemUVM
 
Métricas de Calidad del Software.pptx
Métricas de Calidad del Software.pptxMétricas de Calidad del Software.pptx
Métricas de Calidad del Software.pptxEduardo Robayo
 
Modelo Cascada y Espiral
Modelo Cascada y EspiralModelo Cascada y Espiral
Modelo Cascada y Espiraljuanksi28
 
Pruebas de aplicaciones web
Pruebas de aplicaciones webPruebas de aplicaciones web
Pruebas de aplicaciones webpaulinaaillon
 
ASEGURAMIENTO DE LA CALIDAD EN LOS SISTEMAS DE INFORMACION SQA
ASEGURAMIENTO DE LA CALIDAD EN LOS SISTEMAS DE INFORMACION SQAASEGURAMIENTO DE LA CALIDAD EN LOS SISTEMAS DE INFORMACION SQA
ASEGURAMIENTO DE LA CALIDAD EN LOS SISTEMAS DE INFORMACION SQApabloreyes154
 
Arquitectura de objetos distribuidos 1
Arquitectura de objetos distribuidos 1Arquitectura de objetos distribuidos 1
Arquitectura de objetos distribuidos 1Javier Rubiano Quiroga
 
Diagramas de caso de uso
Diagramas de caso de usoDiagramas de caso de uso
Diagramas de caso de usoTensor
 

La actualidad más candente (20)

Transformar modelo entidad relacion a modelo logico
Transformar modelo entidad relacion a modelo logicoTransformar modelo entidad relacion a modelo logico
Transformar modelo entidad relacion a modelo logico
 
diseño lógico y diseño físico
diseño lógico y diseño físicodiseño lógico y diseño físico
diseño lógico y diseño físico
 
Arquitectura de sistemas
Arquitectura de sistemasArquitectura de sistemas
Arquitectura de sistemas
 
Grupo 5-modelos-de-procesos-de-software
Grupo 5-modelos-de-procesos-de-softwareGrupo 5-modelos-de-procesos-de-software
Grupo 5-modelos-de-procesos-de-software
 
Arquitectura del software
Arquitectura del softwareArquitectura del software
Arquitectura del software
 
tipos de pruebas.
tipos de pruebas.tipos de pruebas.
tipos de pruebas.
 
Diseño de Software
Diseño de SoftwareDiseño de Software
Diseño de Software
 
Metodologia web
Metodologia webMetodologia web
Metodologia web
 
Uml
UmlUml
Uml
 
Metodología Mobile-D.pdf
Metodología Mobile-D.pdfMetodología Mobile-D.pdf
Metodología Mobile-D.pdf
 
25 Estandares - IEEE Calidad de Software
25 Estandares - IEEE Calidad de Software25 Estandares - IEEE Calidad de Software
25 Estandares - IEEE Calidad de Software
 
15 metodologia web qem
15 metodologia web qem15 metodologia web qem
15 metodologia web qem
 
Métricas de Calidad del Software.pptx
Métricas de Calidad del Software.pptxMétricas de Calidad del Software.pptx
Métricas de Calidad del Software.pptx
 
Metodología RUP
Metodología RUPMetodología RUP
Metodología RUP
 
Modelo Cascada y Espiral
Modelo Cascada y EspiralModelo Cascada y Espiral
Modelo Cascada y Espiral
 
Pruebas de aplicaciones web
Pruebas de aplicaciones webPruebas de aplicaciones web
Pruebas de aplicaciones web
 
ASEGURAMIENTO DE LA CALIDAD EN LOS SISTEMAS DE INFORMACION SQA
ASEGURAMIENTO DE LA CALIDAD EN LOS SISTEMAS DE INFORMACION SQAASEGURAMIENTO DE LA CALIDAD EN LOS SISTEMAS DE INFORMACION SQA
ASEGURAMIENTO DE LA CALIDAD EN LOS SISTEMAS DE INFORMACION SQA
 
Metamodelo UML
Metamodelo UMLMetamodelo UML
Metamodelo UML
 
Arquitectura de objetos distribuidos 1
Arquitectura de objetos distribuidos 1Arquitectura de objetos distribuidos 1
Arquitectura de objetos distribuidos 1
 
Diagramas de caso de uso
Diagramas de caso de usoDiagramas de caso de uso
Diagramas de caso de uso
 

Similar a Sesiones y cookies en php

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 soplaRobert Moreira
 
Aprender a programar aplicaciones moviles
Aprender a programar aplicaciones movilesAprender a programar aplicaciones moviles
Aprender a programar aplicaciones movilesRobert Moreira
 
Programacion orientada a objetos en javascript
Programacion orientada a objetos en javascriptProgramacion orientada a objetos en javascript
Programacion orientada a objetos en javascriptRobert Moreira
 
Instalacion de mongodb
Instalacion de mongodbInstalacion de mongodb
Instalacion de mongodbRobert Moreira
 
Fundamento de poo en php
Fundamento de poo en phpFundamento de poo en php
Fundamento de poo en phpRobert Moreira
 
Buenos formularios web
Buenos formularios webBuenos formularios web
Buenos formularios webRobert Moreira
 
Buenos formularios web
Buenos formularios webBuenos formularios web
Buenos formularios webRobert Moreira
 
Modelo de negocios paypal
Modelo de negocios paypalModelo de negocios paypal
Modelo de negocios paypalRobert Moreira
 
Modelo negocio motel online.com
Modelo negocio motel online.comModelo negocio motel online.com
Modelo negocio motel online.comRobert 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

picaduras de insectos. enfermedades transmitidas por vector
picaduras de insectos. enfermedades transmitidas por vectorpicaduras de insectos. enfermedades transmitidas por vector
picaduras de insectos. enfermedades transmitidas por vectorDamiiHernandez
 
La Cuenca del Lagunas de Montebello .pdf
La Cuenca del Lagunas de Montebello .pdfLa Cuenca del Lagunas de Montebello .pdf
La Cuenca del Lagunas de Montebello .pdfSUSMAI
 
La infografía reglas para relaizar UNO sera
La infografía reglas para relaizar UNO seraLa infografía reglas para relaizar UNO sera
La infografía reglas para relaizar UNO seraMariaCleofeTolentino
 
Cuadro-comparativo-de-los-Modelos-Atomicos-6 (1).pptx
Cuadro-comparativo-de-los-Modelos-Atomicos-6 (1).pptxCuadro-comparativo-de-los-Modelos-Atomicos-6 (1).pptx
Cuadro-comparativo-de-los-Modelos-Atomicos-6 (1).pptxMarcoSanchez652945
 
La perdida de la biodiversidad y su importancia.pptx
La perdida de la biodiversidad y su importancia.pptxLa perdida de la biodiversidad y su importancia.pptx
La perdida de la biodiversidad y su importancia.pptxBrendaPalomaresSalas
 
Informe del 1er simulacro inopinado 2024.docx
Informe del 1er simulacro inopinado 2024.docxInforme del 1er simulacro inopinado 2024.docx
Informe del 1er simulacro inopinado 2024.docxCarlos Muñoz
 
TECNOLOGÍA de la MADERA y propiedades.pptx
TECNOLOGÍA de la MADERA y propiedades.pptxTECNOLOGÍA de la MADERA y propiedades.pptx
TECNOLOGÍA de la MADERA y propiedades.pptxCeciliaRacca1
 
Fracking: amenaza para el clima en México.pdf
Fracking: amenaza para el clima en México.pdfFracking: amenaza para el clima en México.pdf
Fracking: amenaza para el clima en México.pdfSUSMAI
 
Guia para el cuidado de plantas de 0 a experto..pdf
Guia para el cuidado de plantas de 0 a experto..pdfGuia para el cuidado de plantas de 0 a experto..pdf
Guia para el cuidado de plantas de 0 a experto..pdfGenioViral
 
La Sostenibilidad y los ODS Normas y proyectos
La Sostenibilidad y los ODS  Normas y proyectosLa Sostenibilidad y los ODS  Normas y proyectos
La Sostenibilidad y los ODS Normas y proyectosEnrique Posada
 
Respiración de los mamíferos pptx........
Respiración de los mamíferos  pptx........Respiración de los mamíferos  pptx........
Respiración de los mamíferos pptx........juandiegomartinezesp
 
Presentación sobre las teorías atómicas química
Presentación sobre las teorías atómicas químicaPresentación sobre las teorías atómicas química
Presentación sobre las teorías atómicas químicaJuanDavidMonsalveMar
 
Agenda socioamebiental 2024: diagnósticos y propuestas.pdf
Agenda socioamebiental 2024: diagnósticos y propuestas.pdfAgenda socioamebiental 2024: diagnósticos y propuestas.pdf
Agenda socioamebiental 2024: diagnósticos y propuestas.pdfSUSMAI
 
Hidrocarburos no convencionales en México.pdf
Hidrocarburos no convencionales en México.pdfHidrocarburos no convencionales en México.pdf
Hidrocarburos no convencionales en México.pdfSUSMAI
 
Atlas del socioecosistema Río Grande de Comitán.pptx
Atlas del socioecosistema Río Grande de Comitán.pptxAtlas del socioecosistema Río Grande de Comitán.pptx
Atlas del socioecosistema Río Grande de Comitán.pptxSUSMAI
 
Conceptos de las Normas ISO 14000 y 14001
Conceptos de las Normas ISO 14000 y 14001Conceptos de las Normas ISO 14000 y 14001
Conceptos de las Normas ISO 14000 y 14001Nicolle932479
 
Impactos al desarrollo fetal por proximidad a pozos de gas natural_230523FINA...
Impactos al desarrollo fetal por proximidad a pozos de gas natural_230523FINA...Impactos al desarrollo fetal por proximidad a pozos de gas natural_230523FINA...
Impactos al desarrollo fetal por proximidad a pozos de gas natural_230523FINA...SUSMAI
 
Taller 1 Reflexión Docente Colectivo Presencial_2024 _20 de marzo.pptx
Taller 1 Reflexión Docente Colectivo Presencial_2024 _20 de marzo.pptxTaller 1 Reflexión Docente Colectivo Presencial_2024 _20 de marzo.pptx
Taller 1 Reflexión Docente Colectivo Presencial_2024 _20 de marzo.pptxLala NOmas
 
Descripción de la obra Adrián y Fabiola.pptx
Descripción de la obra Adrián y Fabiola.pptxDescripción de la obra Adrián y Fabiola.pptx
Descripción de la obra Adrián y Fabiola.pptxSUSMAI
 

Último (20)

picaduras de insectos. enfermedades transmitidas por vector
picaduras de insectos. enfermedades transmitidas por vectorpicaduras de insectos. enfermedades transmitidas por vector
picaduras de insectos. enfermedades transmitidas por vector
 
La Cuenca del Lagunas de Montebello .pdf
La Cuenca del Lagunas de Montebello .pdfLa Cuenca del Lagunas de Montebello .pdf
La Cuenca del Lagunas de Montebello .pdf
 
La infografía reglas para relaizar UNO sera
La infografía reglas para relaizar UNO seraLa infografía reglas para relaizar UNO sera
La infografía reglas para relaizar UNO sera
 
Cuadro-comparativo-de-los-Modelos-Atomicos-6 (1).pptx
Cuadro-comparativo-de-los-Modelos-Atomicos-6 (1).pptxCuadro-comparativo-de-los-Modelos-Atomicos-6 (1).pptx
Cuadro-comparativo-de-los-Modelos-Atomicos-6 (1).pptx
 
La perdida de la biodiversidad y su importancia.pptx
La perdida de la biodiversidad y su importancia.pptxLa perdida de la biodiversidad y su importancia.pptx
La perdida de la biodiversidad y su importancia.pptx
 
Informe del 1er simulacro inopinado 2024.docx
Informe del 1er simulacro inopinado 2024.docxInforme del 1er simulacro inopinado 2024.docx
Informe del 1er simulacro inopinado 2024.docx
 
TECNOLOGÍA de la MADERA y propiedades.pptx
TECNOLOGÍA de la MADERA y propiedades.pptxTECNOLOGÍA de la MADERA y propiedades.pptx
TECNOLOGÍA de la MADERA y propiedades.pptx
 
Fracking: amenaza para el clima en México.pdf
Fracking: amenaza para el clima en México.pdfFracking: amenaza para el clima en México.pdf
Fracking: amenaza para el clima en México.pdf
 
Guia para el cuidado de plantas de 0 a experto..pdf
Guia para el cuidado de plantas de 0 a experto..pdfGuia para el cuidado de plantas de 0 a experto..pdf
Guia para el cuidado de plantas de 0 a experto..pdf
 
La Sostenibilidad y los ODS Normas y proyectos
La Sostenibilidad y los ODS  Normas y proyectosLa Sostenibilidad y los ODS  Normas y proyectos
La Sostenibilidad y los ODS Normas y proyectos
 
Respiración de los mamíferos pptx........
Respiración de los mamíferos  pptx........Respiración de los mamíferos  pptx........
Respiración de los mamíferos pptx........
 
Presentación sobre las teorías atómicas química
Presentación sobre las teorías atómicas químicaPresentación sobre las teorías atómicas química
Presentación sobre las teorías atómicas química
 
Agenda socioamebiental 2024: diagnósticos y propuestas.pdf
Agenda socioamebiental 2024: diagnósticos y propuestas.pdfAgenda socioamebiental 2024: diagnósticos y propuestas.pdf
Agenda socioamebiental 2024: diagnósticos y propuestas.pdf
 
Hidrocarburos no convencionales en México.pdf
Hidrocarburos no convencionales en México.pdfHidrocarburos no convencionales en México.pdf
Hidrocarburos no convencionales en México.pdf
 
Introducción sintética a las Enfermedades de las Plantas
Introducción sintética a las Enfermedades de las PlantasIntroducción sintética a las Enfermedades de las Plantas
Introducción sintética a las Enfermedades de las Plantas
 
Atlas del socioecosistema Río Grande de Comitán.pptx
Atlas del socioecosistema Río Grande de Comitán.pptxAtlas del socioecosistema Río Grande de Comitán.pptx
Atlas del socioecosistema Río Grande de Comitán.pptx
 
Conceptos de las Normas ISO 14000 y 14001
Conceptos de las Normas ISO 14000 y 14001Conceptos de las Normas ISO 14000 y 14001
Conceptos de las Normas ISO 14000 y 14001
 
Impactos al desarrollo fetal por proximidad a pozos de gas natural_230523FINA...
Impactos al desarrollo fetal por proximidad a pozos de gas natural_230523FINA...Impactos al desarrollo fetal por proximidad a pozos de gas natural_230523FINA...
Impactos al desarrollo fetal por proximidad a pozos de gas natural_230523FINA...
 
Taller 1 Reflexión Docente Colectivo Presencial_2024 _20 de marzo.pptx
Taller 1 Reflexión Docente Colectivo Presencial_2024 _20 de marzo.pptxTaller 1 Reflexión Docente Colectivo Presencial_2024 _20 de marzo.pptx
Taller 1 Reflexión Docente Colectivo Presencial_2024 _20 de marzo.pptx
 
Descripción de la obra Adrián y Fabiola.pptx
Descripción de la obra Adrián y Fabiola.pptxDescripción de la obra Adrián y Fabiola.pptx
Descripción de la obra Adrián y Fabiola.pptx
 

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.