Entendido.

Este sitio utiliza cookies para analizar la navegación. Si continúa navegando se entiende que acepta su uso. Ver más detalles.";

Logo

Aprende Web

Crea y diseña tus sitios en la Web.

Manual de PHP

PHP: imprescindible para crear páginas web de modo profesional


Y ahora tambien aprende a programar en C++ con Aprende Web C++

logo rss RSS. Suscribir canal.

Buscar en Aprende Web

Traducir página

Visita nuestro blog:

bolg.aprende-web.net

y entérate de las novedades o deja un comentario.

Dudas y sugerencias:

aprendeweb@aprende-web.net





Sobre ésta página

Ültima modificación: 29-01-2016.

Visitas este mes: 18

Visitas el mes pasado: 32

logo
WEB-GRAFÍA

Mi agradecimiento a los siguientes sitios en los que me he basado para la elaboración de este manual.:

Curso de PHP
www.programaciónweb.net
Lecciones PHP
WebTaller.com
Manual de PHP
manualdephp.com
Curso de PHP
Aula Fácil.com
Manual de PHP en español
manual-php.com
PHP a fondo
desarrolloweb.com
Manual de PHP
Foros del Web
Manual de PHP
www.php.net
PHP Tutorial
w3schools.com

Donativos

Si este sitio te parece interesante puedes contribuir con una pequeña aportación.




16. Resumen(IX)

16.9 Manejar archivos

php

Con PHP podemos crear, modificar, guardar, y leer archivos en nuestra página. Esto nos permite guardar datos de forma permanente, de manera que podamos recuperarlos al abrir la página o cuando el usuario inicie su sesión.

El método fopen()

El método fopen nos permite manejar archivos. El método utiliza varias funciones. Se abre un archivo mediante la función fopen(), si el archivo no existe se crea. Después tenemos otras funciones para modificarlo, y una vez modificado se cierra mediante la función fclose():

$manejador = fopen($ruta,$modo); //abrir o crear el archivo
//... código para manejar el archivo ...
fclose($manejador)

Debemos guardar la función fopen() en una variable ($manejador), esta variable será el manejador del archivo. y es la que se le pasa como argumento a la función $fclose() para cerrar el archivo.

La función $fopen() tiene dos argumentos. En el primero pondremos la ruta del archivo. La función abre el archivo, y si el archivo no existe, crea uno nuevo.

El segundo argumento indica el modo en que se abre el archivo. Con cada modo tendremos unas opciones de trabajo distinto. Los distintos valores que podemos poner en $modo son:

Crear un archivo.

Para crear un archivo sólo hay que abrir el archivo con fopen() indicando como primer argumento la ruta con el nombre del nuevo archivo. Después utiizaremos el método fwrite() para escribir en el archivo. Veamos un ejemplo:

<?php  
//datos para pasar al archivo:
$nombre="Santiago";$apellido=Gonzalez;$email="santigonzi@hotmail.com";$tel="600145588"; 
//utilizamos el nombre y apellido como nombre del archivo. Este se guarda en la carpeta "archivos"
$manejador=fopen("archivos/".$nombre.$apellido.".txt","w"); 
$datos ="Nombre: ".$nombre."; Apellido: ".$apellido."; E-Mail: ".$email."; Teléfono: ".$tel;
fwrite($manejador,$datos); //introducimos los datos;
fclose($manejador); //cerramos el archivo.
?>

Para introducir los datos utilizamos la función fwrite(). Como primer argumento pasamos el manejador, y como segundo los datos a introducir.

En la carpeta archivos, que tenemos que haber creado previamente, tras ejecutarse el código encontraremos el nuevo archivo SantiagoGonzalez.txt, y su contenido será el siguiente:

Nombre: Santiago; Apellido: Gonzalez; E-Mail: santigonzi@hotmail.com; Teléfono: 600145588

Aquí hemos utilizado datos que hemos creado nosotros, pero también podemos guardar datos provenientes de las respuestas de un formulario. De esta forma podemos guardar datos de los usuarios.

También podemos utilizar la función fputs() que funciona exactamente igual que fwrite().

Leer el archivo.

Para leer el archivo, utilizaremos la función fgets() una vez abierto el archivo. Esta función lee el archivo línea a línea. Como el archivo anterior sólo tiene una línea, basta con ponerla una vez.

Pero antes de eso comprobaremos que el archivo realmente existe, para ello utilizaremos la función:

file_exists($ruta) or die("El archivo buscado no existe");

La función file_exists() tiene como argumento la ruta del archivo y comprueba si este existe, Detrás ponemos la intrucción or die(), que nos da un texto alternativo en caso de que la función no exista. Esta función no necesita tener el archivo abierto para que funcione.

<?php  
//Comprobar si el archivo existe
file_exists("archivos/SantiagoGonzalez.txt") or die ("Error: El archivo no existe.");
$manejador=fopen("archivos/SantiagoGonzalez.txt",'r'); //abrir archivo
$ver = fgets($manejador); //leer archivo
fclose($manejador); //cerrar archivo
echo $ver; 
?> 

Observa que para crear o modificar el archivo lo hemos abierto en modo escritura (w), mientras que para leerlo lo hemos abierto en modo lectura (r).

El resultado del código anterior será el texto siguiente:

Nombre: Santiago; Apellido: Gonzalez; E-Mail: santigonzi@hotmail.com; Teléfono: 600145588
Borrar archivos

Para borrar archivos utilizaremos la funciòn unlink(). Como argumento pasaremos el archivo a borrar.

En este ejemplo comprobamos si el archivo existe antes de borrarlo.

<?php 
$ruta="archivos/SantiagoGonzalez.txt"; //ruta del archivo 
file_exists($ruta)or die ("no existe el archivo indicado"); //comprobar si existe
unlink($ruta); //borrar archivo
echo "tu archivo ha sido borrado.";
?>

Leer archivos de más de una línea

Al leer el archivo con la función fgets(), leemos sólo la primera línea del archivo. Para leer la segunda línea deberemos utilizar otra vez la función fgets(), y así sucesivamente hasta leer todas.

Esto se debe a que al abrir el archivo se crea un puntero interno. Este al abrir el archivo apunta al primer carácter del archivo. La función fgets() Localiza el puntero interno. Lee la línea en la que está, y lo coloca en la siguiente línea.

Sabiendo esto veamos cómo leer un archivo con varias líneas. Para ello pondremos un ejemplo:

Creamos primero un archivo nuevo:

<?php 
$nombre="Joaquín";$apellido="Rodríguez";$email="jkinrodri@gmail.com";$tel="688211454";
$datos="<p>Nombre: ".$nombre."</p>\n<p> Apellido: ".$apellido."</p>\n<p> E-Mail: ".$email."</p>\n<p> Teléfono: ".$tel."</p>";
$manejador=fopen("archivos/".$nombre.$apellido.".html","w");
fwrite($manejador,$datos);
fclose($manejador);
?>

Hasta aquí hemos seguido los mismos pasos que en el ejemplo anterior, las diferencias son que en lugar de archivo de texto hemos escrito un archivo HTML, y para ponerlo en distintas líneas hemos utilizado el carácter de escape \n.

si abrimos este nuevo archivo con el editor de textos comprobaremos que cada dato está dentro de una etiqueta de párrafo y ocupa una línea distinta.

Para poder leer este archivo necesitamos que la función fgets() lea todas las líneas del archivo, y no sólo la primera. Para ello utilizamos un bucle while que comprueba si la línea a la que apunta el puntero interno existe, y de ser así la lee.

<?php 
$manejador=fopen("archivos/JoaquínRodríguez.html","r"); //abrimos el archivo en modo lectura
while ($ver=fgets($manejador)) { //si la línea existe la condición se cumple
      echo $ver; //ver en pantalla la línea
      }
fclose($manejador); //cerramos el archivo
?>

El resultado del ejemplo anterior nos dará el siguiente texto (aquí resaltado en azul):

Nombre: Joaquin

Apellido: Rodríguez

E-Mail: jkinrodri@gmail.com

Teléfono: 688211454

El puntero interno

Tenemos ahora el problema de manejar el puntero interno. Éste al crearse apunta hacia el primer carácter. Va avanzando al ir leyendo el archivo y llega al final. Una vez en el final, éste no vuelve al principio, a no ser que se le especifique mediante una función.

Las siguientes funciones permiten controlar el puntero interno. Todas ellas deben utilizarse con el archivo abierto y su primer argumento es el manejador.

Funciones que controlan el puntero interno.
Nombre Código y explicación
fgetc() $caracter = fgetc($manejador);
Lee el carácter al que apunta el puntero interno. El puntero avanza después una posición hacia el siguiente carácter.
ftell() $num = ftell($manejador);
Devuelve un número que indica la posición del puntero interno.
fseek() fseek($manejador,$avance,$num_desde);
Permite mover el puntero interno. el 2º argumento $avance indica el número de posiciones que avanza el puntero. El tercer argumento es opcional, e indica la posición desde la que debe empezar a avanzar el puntero.
rewind() rewind($manejador);
Coloca el puntero interno al principio del archivo.
fgetcsv() $array = fgetcsv($manejador,$num,"separador");
Devuelve un array en el qe el 2º argumento indica hasta dónde avanzar el puntero interno para formar los elementos del array. El 3º argumento indica el carácter que separará los elementos del array. Si el número del 2º argumento es superior al número de caracteres del archivo, éste se tomará hasta el final.
feof() $comprobar = feof($manejador);
Indica si el puntero interno ha llegado al final del archivo. En ese caso devuelve true, si no es así devuelve false.

Funciones con el archivo cerrado

Las siguientes funciones sirven para manejar archivos pero no necesitan tener abierto el archivo mediante fopen() para poder utilizarlas.

Funciones con archivo cerrado
Nombre Código y explicación
copy() copy($ruta_origen,$ruta_destino);
Copia un archivo ubicado en $ruta_origen en la $ruta_destino. El 1º argumento es la ruta para localizar al archivo, y el 2º la ruta del nuevo archivo que se crea.
rename() rename("ruta_origen","ruta_destino");
Mueve (cambia de sitio) un archivo ubicado en $ruta_origen a la $ruta_destino. El 1º argumento es la ruta para localizar al archivo, y el 2º la ruta de la nueva ubicación del archivo.
file_get_contents() $miarchivo = file_get_contents($ruta);
Lee el archivo completo. Como argumento pasamos la ruta el archivo.

file() $array = file($ruta);
Crea un array que lee el contenido del archivo. Cada uno de los elementos del array está delimitado por los saltos de línea en el archivo. Como argumento pasamos la ruta del archivo.
fileatime() $fecha = fileatime($ruta);
Devuelve la fecha (en tiempo Unix) de la ultima vez que se accedió al archivo.
filectime() $fecha = filectime("ruta_archivo");
Devuelve la fecha (en tiempo Unix) de la última vez que se modificó el archivo.
filesize() $tamano = filesize($ruta);
Devuelve el tamaño en bytes del archivo.
filetype() $tipo = filetype($ruta);
Devuelve el tipo MIME de archivo, por ejemplo "file", si es un archivo de texto.
fileperms() $num = fileperms($ruta);
Devuelve un número que indica los permisos del archivo.
fileowner() $propiedad = fileowner($ruta);
Devuelve el nombre del dueño del archivo, normalmente el mismo que hay en la carpeta donde fue creado.
is_executable() $comprobar = is_executable($ruta);
Devuelve un booleano. Verdadero si el archivo puede ejecutarse, o falso en caso contrario.
is_readable() $comprobar = is_readable($ruta);
Devuelve un booleano. Verdadero si el archivo puede leerse, o falso en caso contrario.
is_writable() $comprobar = is_writable($ruta);
Devuelve un booleano. Verdadero si el archivo puede escribirse, o falso en caso contrario.

Directorios

PHP permite también crear y borrar carpetas del sitio. Para ello tenemos las siguientes funciones. Todas ellas tienen como argumento la ruta donde está la carpeta.

Funciones con directorios
Nombre Código y explicación
is_dir() $comprobar = is_dir($ruta);
Comprueba si la carpeta existe. Devuelve el booleano verdadero si existe, o falso si no existe.
mkdir() mkdir($ruta);
Crea una nueva carpeta en la ruta con el nombre especificado. Si la carpeta ya existe no hace nada y devuelve el booleano falso.

mrdir() mrdir($ruta);
Borra la carpeta especificada siempre que ésta exista y esté vacía. En caso contrario devuelve false y da un mensaje de error.

Abrir directorios.

Al igual que con los archivos, hay una serie de funciones que necesitan de un método que deje abierto el directorio, para poder aplicarlas. Esto lo hacemos de la siguiente manera:

$ruta="archivos"; //ruta de la carpeta
$manejador=opendir($ruta); //abrir archivo
// incluir funciones con el archivo abierto
closedir($manejador); //cerrar el archivo

Con la función opendir() abrimos el directorio. Una vez abierto escribimos el codigo para leer o modificar el directorio. Después lo cerramos con la función closedir(). Fíjate que aquí también nos hace falta un "manejador".

Con el directorio abierto podemos utilizar las siguientes funciones:

readdir($manejador); Permite desplazarse por los distintos elementos dentro del directorio. Devuelve el nombre del archivo o carpeta a la que apunta el puntero interno. Una vez leído el puntero avanza una posición hacia el siguiente elemento.

El orden de los elementos no está definido, aunque suele ser el mismo que tienen dentro del directorio.

Para ver todos los elementos de un directorio utilizaremos un código parecido a este:

$manejador=opendir("documentos/archivos"); //abrir directorio
while ($archivo=readdir($manejador)) { //Si hay archivo el bucle sigue, si no se para.
      $archivos.=$archivo." ,<br/>"; //añadir a archivos encontrados
      }
closedir($manejador); //cerrar directorio.
echo $archivos; //leer resultados.

rewinddir($manejador); : Esta función coloca el puntero interno al principio del directorio, de manera que podamos volver a trabajar con todos los elementos.

Otras funciones para directorios

Las siguientes funciones se usan también con directorios y no requieren tener el archivo abierto.

Otras funciones con directorios
Nombre Código y explicación
getcwd() $ruta = getcwd();
Devuelve la ruta del directorio actual, esta función no tiene argumentos.
scandir() $array = scandir($ruta);
Devuelve en un array todos los archivos y subdirectorios que están en el directorio pasado en el argumento.
disk_free_space() $espacio = disk_free_space($ruta);
Devuelve el espacio máximo disponible en bytes, que puede usarse en ese directorio. Puede usarse también con ficheros si pasamos en el argumento la ruta del fichero.



En la siguiente página veremos cómo guardar los datos de forma permanente en bases de datos.

Bases de datos.



manual de PHP

Anterior siguiente ... Siguiente siguiente


imprimir esta página

Página creada por ANYELGUTI.

Sugerencias: aprendeweb@aprende-web.net. Envia un manda un correo

Visita nuestro blog par saber en qué estamos trabajando: Aprende Web Blog

Más sobre anyelguti en http://anyelguti.16mb.com