modos para salvar datos para usos posteriores: archivos planos: archivos de texto recomendable para...

30
ARCHIVOS EN PHP

Upload: manolito-santo

Post on 12-Jan-2015

16 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Modos para salvar datos para usos posteriores: Archivos planos: Archivos de texto recomendable para manejar un volumen pequeño de información. Bases de

ARCHIVOS EN PHP

Page 2: Modos para salvar datos para usos posteriores: Archivos planos: Archivos de texto recomendable para manejar un volumen pequeño de información. Bases de

Modos para salvar datos para usos posteriores:

◦ Archivos planos: Archivos de texto recomendable para manejar un volumen pequeño de información.

◦ Bases de datos: Recomendable para un volumen grande de información.

ARCHIVOS

Page 3: Modos para salvar datos para usos posteriores: Archivos planos: Archivos de texto recomendable para manejar un volumen pequeño de información. Bases de

Escribir datos a un archivo:1. Abrir el archivo. Si no existe crearlo.2. Escribir datos en un archivo.3. Cerrar el archivo.

Leer datos de un archivo:1. Abrir el archivo.2. Leer datos del archivo.3. Cerrar el archivo.

Fases para el procesamiento de un archivo

Page 4: Modos para salvar datos para usos posteriores: Archivos planos: Archivos de texto recomendable para manejar un volumen pequeño de información. Bases de

Se utiliza la función fopen:

◦ $fp = fopen(“archivo", “modo de archivo");◦ $fp = fopen("../pedidos/pedidos.txt", "a");◦ $fp = fopen(“ftp://pedidos/pedidos.txt", "a");◦ $fp = fopen(“http://www.servidor.com/pedidos.txt", "a");◦ $fp = fopen(“$DOCUMENT_ROOT/../pedidos/pedidos.txt",

"a");

Variable preconstruida $DOCUMENT_ROOT: Se refiere al directorio raíz del documento bajo el cual se ejecuta actualmente el script, es definido en el archivo de configuración del servidor.

◦ $fp=fopen(“$DOCUMENT_ROOT/../pedidos/pedidos.txt", "a");

Abrir el archivo

Page 5: Modos para salvar datos para usos posteriores: Archivos planos: Archivos de texto recomendable para manejar un volumen pequeño de información. Bases de

Modo Significado

r Modo lectura: Abre el archivo para leer, empieza desde el principio del archivo.

r+ Modo lectura: Abre el archivo para leer y Escribir, empieza en el principio del archivo.

w Modo escritura: Abre el archivo para escribir, empieza desde el principio del archivo. Si el archivo ya existe, borra el contenido existente. Si no existe, intentará crearlo.

w+ Modo escritura: Abre el archivo para escribir y leer, empieza desde el principio del archivo. Si el archivo ya existe, borra el con-tenido existente. Si no existe, intentará crearlo.

a Modo Añadir: Abre el archivo para añadir (escribir) y leer, empezan-do al final de los contenidos existentes si los hay.

a+ Modo Añadir: Abre el archivo para añadir (escribir) y leer, empezan-do al finalde los contenidos existentes si los hay.

b Modo Binario: Usado junto con alguno de los otros modos. Puede usarse enWindows. Unix no diferencia entre archivos de texto y binarios

Modos de Archivo para fopen

Page 6: Modos para salvar datos para usos posteriores: Archivos planos: Archivos de texto recomendable para manejar un volumen pequeño de información. Bases de

Debemos tener permiso para abrir un archivo.

◦ $fp = fopen(“ruta archivo", “modo de archivo");◦ $fp = fopen("../pedidos/pedidos.txt", "a");◦ $fp = fopen(“ftp://pedidos/pedidos.txt", "a");◦ $fp = fopen(“http://www.servidor.com/pedidos.txt", "a");◦ $fp = fopen(“$DOCUMENT_ROOT/../pedidos/pedidos.txt",

"a");

Variable preconstruida $DOCUMENT_ROOT: Se refiere al directorio raíz del documento bajo el cual se ejecuta actualmente el script, es definido en el archivo de configuración del servidor.

◦ $fp=fopen(“$DOCUMENT_ROOT/../pedidos/pedidos.txt", "a");

Abrir el archivo

Page 7: Modos para salvar datos para usos posteriores: Archivos planos: Archivos de texto recomendable para manejar un volumen pequeño de información. Bases de

Para escribir en un directorio por encima del directorio del archivo◦ @ $fp = fopen("../pedidos/pedidos.txt", "a");

Para escribir en un directorio al mismo nivel que el archivo◦ @ $fp = fopen("pedidos/pedidos.txt", "a");

Para escribir en un archivo en el mismo nivel que el archivo◦ @ $fp = fopen("pedidos.txt", "a");

@: Suprime cualquier error resultante de la llamada a la función.

Escribir el archivo

Page 8: Modos para salvar datos para usos posteriores: Archivos planos: Archivos de texto recomendable para manejar un volumen pequeño de información. Bases de

fwrite: Escribe en un archivo◦ fwrite(“variable”, ”destino”, tamaño);◦ fwrite($fp, $stringsalida, 100);

Determinar el formato en el que queremos almacenar los datos

$stringsalida = $date."\t".$actionqty." actionscript\t“.$photoqty." photoshop\t”.$flashqty." flash\t“.$totalqty."\t".$totalamount."\t".$direcc."\t“.$find."\n";

Escribir el archivo

Page 9: Modos para salvar datos para usos posteriores: Archivos planos: Archivos de texto recomendable para manejar un volumen pequeño de información. Bases de

feof (file end-of-file): Permite controlar si se ha llegado al final del archivo.

fgets: Obtiene una línea del fichero apuntado.◦ fgets(variable, valor);

fgetss: Recupera los datos de un archivo eliminando todas las etiquetas html y php, a menos que indiquemos que etiquetas permitir.◦ fgetss($fp, 100, “<b>”):

fgetcsv: Guarda datos en un array◦ fgetcsv ($fp, 100, “\t”);

Leer el archivo línea por línea

Page 10: Modos para salvar datos para usos posteriores: Archivos planos: Archivos de texto recomendable para manejar un volumen pequeño de información. Bases de

Comprobar si un archivo existe:◦ file_exist (“ruta_del_archivo”);

Tamaño en bites de un archivo:◦ filesize (“ruta_del_archivo”);

Leer un fragmento del archivo:◦ fread($fp, “125”);

Leer el archivo línea por línea

Page 11: Modos para salvar datos para usos posteriores: Archivos planos: Archivos de texto recomendable para manejar un volumen pequeño de información. Bases de

OPCION 1: readfile: Abre, lee y cierra el archivo

◦ readfile(“ruta del archivo”);

OPCION2:◦ $fp=fopen(“../pedidos/pedidos.txt”, “r”);◦ fpassthru (“$fp”);

OPCION 3: file: abre, guarda en un array y cierra el archivo

◦ file(“../pedidos/pedidos.txt”);

Leer el archivo completo

Page 12: Modos para salvar datos para usos posteriores: Archivos planos: Archivos de texto recomendable para manejar un volumen pequeño de información. Bases de

Algo más de archivos

Page 13: Modos para salvar datos para usos posteriores: Archivos planos: Archivos de texto recomendable para manejar un volumen pequeño de información. Bases de

Lectura de archivos<?php// archivo a leer$file = 'texto.txt';

// abrimos el archivo$fh = fopen($file, 'r') or die('No se puede abrir el archivo!');

// leemos el contenido del archivo$data = fread($fh, filesize($file)) or die('No es posible leer el archivo!');

// cerramos el archivofclose($fh);

// imprimimos el contenido del archivoecho $data;?>

archivo1.php

Page 14: Modos para salvar datos para usos posteriores: Archivos planos: Archivos de texto recomendable para manejar un volumen pequeño de información. Bases de

Tenemos un identificador de archivo creado por la función fopen(). Esta función recibe dos argumentos.

Si la función fopen() es exitosa, regresa un identificador $fh el cual nos permitirá manipular el archivo posteriormente.

En necesario cerrar el archivo para optimizar memoria.

Archivos

Page 15: Modos para salvar datos para usos posteriores: Archivos planos: Archivos de texto recomendable para manejar un volumen pequeño de información. Bases de

Diferencia de exit () y die

<?php if (!mysql_connect('localhost')) { echo 'Error al conectar a la base de datos'; exit (0); } ?>

<?php if (!mysql_connect('localhost')) { die ('Error al conectar a la base de datos'); } ?>

Page 16: Modos para salvar datos para usos posteriores: Archivos planos: Archivos de texto recomendable para manejar un volumen pequeño de información. Bases de

Una forma más. Función file()Un método alternativo de lectura de datos desde un archivo es la función file(), que lee el archivo entero en un array con una sola llamada de función. Cada elemento del array contiene una línea del archivo. Para mostrar el contenido del archivo simplemente es necesario iterar sobre el array empleando un foreach () y se imprime cada elemento (línea).

<?php// archivo a leer

$file = 'texto.txt';

// Leemos el archivo en el array$data = file($file) or die('No se puede leer el archivo!');

// loop para imprimir cada línea del archivoforeach ($data as $line){echo $line;}?>

archivo2.php

Page 17: Modos para salvar datos para usos posteriores: Archivos planos: Archivos de texto recomendable para manejar un volumen pequeño de información. Bases de

La escritura en un archivo es similar a la lectura, veamos el ejemplo

<?php// Archivo a escribir$file = 'textow.txt';// abrir el archivo$fh = fopen($file, 'w') or die('No se puede abrir el archivo!');// escribir en el archivofwrite($fh, 'Hola amigo') or die('No se puede escribir en el

archivo');// cerrar el archivofclose($fh);?>

Escritura de archivos

archivo3.php

Page 18: Modos para salvar datos para usos posteriores: Archivos planos: Archivos de texto recomendable para manejar un volumen pequeño de información. Bases de

Define un array asociativo de 4 elementos.

Recorre el arreglo con un foreach() y obtén el promedio de dichos elementos.

Guarda el resultado en un archivo “resultado.txt”.

Ejercicio

Page 19: Modos para salvar datos para usos posteriores: Archivos planos: Archivos de texto recomendable para manejar un volumen pequeño de información. Bases de

Manejo de sesiones y uso de variables de

sesión

Page 20: Modos para salvar datos para usos posteriores: Archivos planos: Archivos de texto recomendable para manejar un volumen pequeño de información. Bases de

A veces es necesario mantener el estado de una conexión entre distintas páginas o entre distintas visitas a un mismo sitio

◦ Ejemplos: aplicaciones personalizadas, carrito de la compra, control de acceso

HTTP es un protocolo sin estado: cada conexión entre el cliente y el servidor es independiente de las demás

Para mantener el estado entre diferentes conexiones hay que establecer lo que se conoce como una sesión

Las sesiones permiten disponer de unas variables con valores persistentes durante toda la conexión del usuario. Estas variables pueden almacenarse en el cliente mediante cookies o en el servidor

PHP dispone de una biblioteca de funciones para la gestión de sesiones

Introducción

Page 21: Modos para salvar datos para usos posteriores: Archivos planos: Archivos de texto recomendable para manejar un volumen pequeño de información. Bases de

Funciones de PHP para el manejo de sesiones (register_globals On)

◦ session_start () inicializa una sesión y le asigna un identificador de sesión

único. Si la sesión ya está iniciada, carga todas las variables de sesión

◦ session_register (variable) registra una variable de sesión

◦ session_unregister (variable) elimina una variable de sesión

◦ session_is_registered (variable) comprueba si una variable está registrada. Devuelve true en

caso afirmativo y false en caso contrario◦ session_destroy ()

cierra una sesión

Manejo de sesiones

Page 22: Modos para salvar datos para usos posteriores: Archivos planos: Archivos de texto recomendable para manejar un volumen pequeño de información. Bases de

El manejo de las sesiones se realiza de la siguiente forma:

◦ Todas las páginas deben realizar una llamada a session_start() para cargar las variables de la sesión

◦ Esta llamada debe estar colocada antes de cualquier código HTML

◦ Conviene llamar a session_destroy() para cerrar la sesión

Manejo de sesiones

Page 23: Modos para salvar datos para usos posteriores: Archivos planos: Archivos de texto recomendable para manejar un volumen pequeño de información. Bases de

Ejercicio 1: ejemplo simple de sesiones

◦ Ilustra cómo registrar variables, acceder a ellas y posteriormente eliminarlas.

◦ Ejercicio1.php◦ Ejercicio1b.php◦ Ejercicio1c.php

Manejo de sesiones

Page 24: Modos para salvar datos para usos posteriores: Archivos planos: Archivos de texto recomendable para manejar un volumen pequeño de información. Bases de

Una cuestión frecuente en un sitio web es controlar el acceso de los usuarios a una zona determinada del mismo

La autenticación de usuarios puede realizarse en el propio servidor web. Así, en Apache los ficheros .htaccess permiten limitar el acceso a un determinado recurso del servidor

Una alternativa más compleja pero más flexible es utilizar PHP junto con una base de datos para controlar el acceso de los usuarios. Para ello se utilizan las sesiones

Autentificación de usuarios

Page 25: Modos para salvar datos para usos posteriores: Archivos planos: Archivos de texto recomendable para manejar un volumen pequeño de información. Bases de

Esquema de una página que utiliza sesiones para autenticar usuarios:

<?PHP session_start ();?><HTML LANG="es"><HEAD> ... </HEAD><BODY><?PHP if (isset($_SESSION["usuario_valido"])) // Código para usuarios autorizados else // Mensaje de acceso no autorizado?></BODY></HTML>

Autentificación de usuarios

Page 26: Modos para salvar datos para usos posteriores: Archivos planos: Archivos de texto recomendable para manejar un volumen pequeño de información. Bases de

Ejercicio 2: autenticación de usuarios◦ Para nuestro sistema de gestión de noticias se va a

restringir el acceso a las operaciones a unos usuarios identificados por un nombre y una contraseña

◦ La información de los usuarios autorizados se almacenará en una tabla de la base de datos

◦ Las contraseñas de los usuarios se almacenarán en forma encriptada

◦ Esquema:

Autenticación de usuarios

Page 27: Modos para salvar datos para usos posteriores: Archivos planos: Archivos de texto recomendable para manejar un volumen pequeño de información. Bases de

Autenticación de usuarios

login

menúmostrarformulario

mostrar error

insertarnoticia

logoutconsultarnoticias

eliminarnoticia

Page 28: Modos para salvar datos para usos posteriores: Archivos planos: Archivos de texto recomendable para manejar un volumen pequeño de información. Bases de

Autenticación de usuarios

inicio

enviado formulario

iniciar sesión

datos correctos

sesión iniciada

menú

mostrar errormostrar formulario

insertar noticia logoutconsultar noticias

no

no

no error

eliminar noticia

Page 29: Modos para salvar datos para usos posteriores: Archivos planos: Archivos de texto recomendable para manejar un volumen pequeño de información. Bases de

Existen algunas reglas básicas para el manejo de cookies.

Dado que las cookies se utilizan para registrar información sobre sus actividades en un sitio particular, solo puede ser leída por el sitio que los creó.

Un dominio no puede establecer más de 20 cookies y cada cookie se limita a un tamaño máximo de 4 KB.

Una cookie normalmente posee cinco tipos de atributos.

De todos los cinco atributos, sólo el primero no es opcional.

Almacenando datos en cookies

Page 30: Modos para salvar datos para usos posteriores: Archivos planos: Archivos de texto recomendable para manejar un volumen pequeño de información. Bases de

CookiesAtributo Función

Name Establece el nombre y el valor de la cookie

Expires Establece la fecha y la hora en que expira la cookie

path Establece el directorio de nivel superior en el que la cookie puede acceder

domain Establece el dominio para el que la cookie es válida

secure Establece un indicador booleano que señala que la cookie debe ser transmitida sólo en una conexión HTTP segura