PHP: imprescindible para crear páginas web de modo profesional
Y ahora tambien aprende a programar en C++ con Aprende Web C++
y entérate de las novedades o deja un comentario.
última modificación: 13-07-2018.
Visitas este mes: 18
Visitas el mes pasado: 47
Mi agradecimiento a los siguientes sitios en los que me he basado para la elaboración de este manual.:
Por elegir aprende-web
Aprende-web está diseñado a partir de los lenguajes que aquà mismo se enseñan.
By Anyelguti
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 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:
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().
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: 600145588Para 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."; ?>
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
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.
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. | |
Las siguientes funciones sirven para manejar archivos pero no necesitan tener abierto el archivo mediante fopen() para poder utilizarlas.
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. | |
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.
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. | |
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.
Las siguientes funciones se usan también con directorios y no requieren tener el archivo abierto.
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.
Sugerencias:
aprendeweb@aprende-web.net. Envia un
Visita nuestro blog par saber en qué estamos trabajando: Aprende Web Blog
Más sobre anyelguti en http://anyelguti.16mb.com