|
|
(Una revisión intermedia por el mismo usuario no mostrado) |
Línea 30: |
Línea 30: |
| | | |
| Fecha dia/mes/año h:minuto:s cuantos directorios se han entregado | | Fecha dia/mes/año h:minuto:s cuantos directorios se han entregado |
| + | |
| + | |
| + | {{plegable|hide|posible_solucion| |
| + | <source lang=php> |
| + | <?php |
| + | $numero_directorios=0; |
| + | |
| + | //Obtenemos los directorios que nos interesan del /var/www |
| + | $ficheros = scandir("/var/www"); |
| + | var_dump($ficheros); |
| + | foreach ($ficheros as $fichero) { |
| + | if (is_dir("/var/www/$fichero")) |
| + | if (file_exists("/var/www/$fichero".DIRECTORY_SEPARATOR."index.php")) { |
| + | echo "<a target='_blank' href='http://localhost/$fichero/index.php'> |
| + | $fichero</a><br>"; |
| + | $numero_directorios++; |
| + | } |
| + | |
| + | } |
| + | |
| + | //Preparo el log donde anotar informacion de cada ejecución |
| + | $log = fopen("./log/log.txt", "a"); |
| + | $fecha = date("d/m/Y H:i:s"); |
| + | $cadena = "$fecha Se han entregado $numero_directorios directorios ".PHP_EOL; |
| + | fwrite($log, $cadena); |
| + | fclose($log); |
| + | |
| + | |
| + | ?> |
| + | <!doctype html> |
| + | <html lang="en"> |
| + | <head> |
| + | <meta charset="UTF-8"> |
| + | <meta name="viewport" |
| + | content="width=device-width"> |
| + | <meta http-equiv="X-UA-Compatible" content="ie=edge"> |
| + | <title>Document</title> |
| + | </head> |
| + | <body> |
| + | <h1>Hola</h1> |
| + | </body> |
| + | </html> |
| + | |
| + | </source> |
| + | |
| + | }} |
| + | |
| | | |
| }} | | }} |
Última revisión de 04:47 19 ene 2022
LENGUAJE PHP: TRABAJANDO CON ALMACENAMIENTO ESTÁTICO : Ficheros
PHP Un lenguaje de script al lado del servidor
Ficheros |
Ejercicios |
Práctica
Ejercicios de ficheros CRUD
- Esta primera parte consiste en realizar ejercicios para aprender a usar el sistema de fichero en el servidor.
- Es un frecuente llevar un log de lo que hace nuestra aplicación.
- Para implementar estos ejercicio utiliza la programación orientada a objetos
(Contruye una clase llamada Fichero y desarrolla los métodos que necesites)
- Realiza los ejercicios planteados en el wiki, intenta hacerlos y luego compararlos con la solución
Ejercicio 1: Escribir en un fichero
- Realiza un programa para escribir contenido en un fichero
- Lo podrás hacer tanto en modo añadir como en modo escribir
- Verifica luego en el directorio del proyecto que ha funcionado correctamente
|
Ejercicio 20: Obtener el contenido de un directorio
- Se quiere obtener el contenido de todos los directorios de mi documentRoot, de aquellos que tengan en su contenido un fichero llamado index.php
- Se retornará estos directorios en una una ancla html
<a href=$directorio/index.php>$directorio</a>
<a href=/var/www/calculadora/index.php>Caculadora</a>
- A la vez anotaremos en un log llamado log.txt, una anotació por cada vez que se ejecute
Fecha dia/mes/año h:minuto:s cuantos directorios se han entregado
posible_solucion |
---|
<?php
$numero_directorios=0;
//Obtenemos los directorios que nos interesan del /var/www
$ficheros = scandir("/var/www");
var_dump($ficheros);
foreach ($ficheros as $fichero) {
if (is_dir("/var/www/$fichero"))
if (file_exists("/var/www/$fichero".DIRECTORY_SEPARATOR."index.php")) {
echo "<a target='_blank' href='http://localhost/$fichero/index.php'>
$fichero</a><br>";
$numero_directorios++;
}
}
//Preparo el log donde anotar informacion de cada ejecución
$log = fopen("./log/log.txt", "a");
$fecha = date("d/m/Y H:i:s");
$cadena = "$fecha Se han entregado $numero_directorios directorios ".PHP_EOL;
fwrite($log, $cadena);
fclose($log);
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<h1>Hola</h1>
</body>
</html>
|
|
}}
Ejercicio 2: Escribir y leer de un fichero
- Modifica el ejercicio anterior con una nueva opción llamada Leer
- En este caso se leerá el fichero especificado si existe, y su contenido aparecerá en el textarea
- En caso de no existir el fichero no se visualizará nada
- En la parte superior del forumulario debe de aparecer un mensaje informativo según la acción que se esté ejecutando
- Inserte datos y seleccione opción
- Se ha creado el fichero especificado o no se ha podido crear el fichero
- Se ha leído el fichero especificado o no se ha podido leer
|
Ejercicio 3: Leer de un directorio
- Un programa que nos muestre en un deplegable todos los ficheros del directorio actual
- Alternativamente puedes tener una caja de texto para especificar el directorio
Al seleccionar uno de ellos y dar a mostrar se verá en contenido del fichero
- Debes leerlo línea a línea
- Para ver el contenido html usa la función htmlspecialchar
- Al seleccionar uno veremos su contenido (si tenemos permisos para ver
PRueba a crear ficheros con la práctica 1 y leerlos con la practica 2
|
<nr />
Ejercicio 4: Leer el contendio de un fichero
- Partiendo de que tenemos un fichero llamado nombres.txt en el directorio actual
nombres.txt |
---|
Manuel Romero
<h6>Luis javier Ruiz</h6>
Elena Rubio<br />
Nieves López
<span style=strong>Lourdes Jimenez</span>
|
- Lee su contenido usando las siguientes funciones
- fgets
- fgetss
- fread
- file
- file_get_content()
- Recurda abir y cerrar el fichero o bien reubicarte con la función fseek
- Funciones de ayuda
filesize($nombre_fichero) retorna el tamaño en bytes del fichero
fseek ( resource $file, int $offset) pone la cabeza de leer/escribir en el fichero en la posición especificada: 0 al principio del fichero)
Las funciones que trabajan con el puntero retornan nul si ya he llegado al final del fichero
|
Ejercicio 5: Crear y borrar ficheros
- Un programa que nos permita crear y borrar ficheros
- Trabajaremos sobre un directorio llamado ficheros de nuestro proyecto
- mostraremos un desplegable con todos los ficheros
- Crear ficheros creará 20 ficheros aleatorios en esa carpeta usa la función tempnam(...)
- Borrar ficheros borrará todos los ficheros de ese directorio usa la función unlink(...)
- Borrar fichero seleccionado eliminará el fichero que seleccionemos
$name tempnam($directorio,$prefijo);
$directorio es el directorio dónde se creará el fichero aleatorio
$prefijo es un string que se pondrá delante del nombre aleatorio generado
$name es el nombre del fichero que se ha creado (false si no se ha podido crear)
|
Ejercicio 7: Renombrando ficheros
- Trabajaremos sobre un directorio llamado ficheros de nuestro proyecto que tendrá una serie de ficheros
- mostraremos un desplegable con todos los ficheros
- una caja de texto nos permitirá poner el nuevo nombre del fichero selecionado
bool rename($origen,$desntino);
|