Diferencia entre revisiones de «Plantilla:PHP/Formularios/accionesFicheros»
De WikiEducator
(→Leer de un fichero) |
(→Escribir en un fichero) |
||
Línea 101: | Línea 101: | ||
</source> | </source> | ||
+ | *Vamos a hacer un ejercicio dónde si presionamos un botón mostramos el contenido del fichero | ||
+ | *En la primera versión lo hacemos todo sencillo seǵun hemos estudado | ||
+ | <source lang=php> | ||
+ | <?php | ||
+ | $index = null; | ||
+ | if ($_POST['submit']) { | ||
+ | $index = file_get_contents("index.php"); | ||
+ | } | ||
+ | ?> | ||
+ | <!DOCTYPE html> | ||
+ | <html> | ||
+ | <head> | ||
+ | <meta charset="UTF-8"> | ||
+ | <title></title> | ||
+ | </head> | ||
+ | <body> | ||
+ | <fieldset> | ||
+ | <legend>Presionar</legend> | ||
+ | |||
+ | <form action="index.php" method ='POST'> | ||
+ | <input type="submit" value="Ver contenido" name="submit"> | ||
+ | </form> | ||
+ | <?php | ||
+ | if (!is_null($index) | ||
+ | echo htmlspecialchars($index)); | ||
+ | ?> | ||
+ | </fieldset> | ||
+ | </body> | ||
+ | </html> | ||
+ | </source> | ||
+ | *Vemos que el resultado no es muy agradable a la vista | ||
+ | [[Archivo:get_content_file_index1.png]] | ||
====Escribir en un fichero ==== | ====Escribir en un fichero ==== | ||
<source lang=php> | <source lang=php> | ||
fwrite($fichero, "texto para escribir"); | fwrite($fichero, "texto para escribir"); | ||
</source> | </source> | ||
+ | |||
===Acceso a un directorio=== | ===Acceso a un directorio=== | ||
<source lang=php> | <source lang=php> |
Revisión de 22:39 15 oct 2018
Contenido
Acceso a un fichero
- Son muchas las acciones que podemos hacer con los ficheros
http://php.net/manual/es/book.filesystem.php
- Acciones típicas sobre un fichero
- Vamos a verlas según nuestras necesidades
- 1.-Crear un fichero para escribir en él
- Si no existe que se intenta crear
- Si sí que existe:
- Agregar cosas sin perder lo que había.
- Borrar lo que hubiera crearlo para escribir en él.
- 2.-Abrir un fichero para leer
- Si no existe dará un error
- Si sí que existe lo abrirá para obtener bytes de él
(: En ambos casos obtendremos un recurso descriptor del fichero para operarar con él)
Abrir un fichero
- Parar poder acceder a un fichero necesitamos tener una referencia a él (Tanto para escribir como para leer).
(: Recuerda que es el usuario apache el que ha de tener los permisos necesarios (leer(r),escribir (w), ejecutar (x))
$archivo = fopen($nombre_fichero,$modo)
- $archivo Va a ser la variable con la que vamos a poder gestionar el archvio. Será de tipo recurso, un objeto de una clase del sistema.
- $nombre_fichero Es el nombre del fichero. Nos movemos en ruta respecto a la ubiciación del script que se está ejecutando. Podemos indicar también la ruta
//Ruta absoluta $archivo = fopen('/var/www/html/log.txt',$modo); //Ruta relativa al directorio donde se encuentra el proyecto $archivo = fopen('log.txt',$modo);
- $modo Es el modo de apertura (lectura, creación, añadir )· Hay varios modos
- r => Lectura.
- w => Escritura (Trunca el contenido).
- a => append o añadir.
- Una vez abierto vamos a ver cómo leer o escribir de/en él.
|
|
|
r | Lee un fichero desde el principio. | Se abre el fichero sólo para leer. Sitúa el cursor al principio del archivo. Si el fichero no existe o no hay permisos de lectura retorno false. |
r+ | Abre el fichero para lectura y permite la escritura. | Abre el archivo para lectura y escritura. Sitúa el cursor o puntero al principio del archivo. Si el fichero no existe o no hay permisos de lectura retorno false. |
w | Escribe un archivo y corta su contenido. | Abre el fichero sólo para escribir. Sitúa el puntero al principio y perdiéndose cualquier contenido que hubiera si existía y contenía datos. Si el archivo no existe, intenta crearlo, retornando false si no ha podido. |
w+ | Escribe un archivo desde el principio, corta su contenido, y permite la lectura. | Abre un archivo para lectura y escritura. Sitúa el puntero al principio dejando eliminando el contenido del archivo si hubiera algo. Si el archivo no existe, intenta crearlo. |
a | Abre el fichero en modo añadir . | Abierto sólo en escritura. Sitúa el puntero al final del archivo. Si el archivo no existe, intenta crearlo. |
a+ | Abre el fichero en modo lectura y añadir . | Se abre el archivo para lectura y escritura. Sitúa el puntero al final del archivo. Si el archivo no existe, intenta crearlo. |
Leer de un fichero
- Podemos realizar una lectura de su contenido por partes
String fread ($fichero, $leng);
- Leemos de un fichero la longuitd en bytes que indique el segundo parámetro
- No será algo habitual pero en alguna ocasión puede venir bien
- Podemos obtener todo el contenido de un fichero.
- Para este cometido tenemos dos funciones
array file($fichero)
- la función file()Esta función devuelve el contenido del fichero como un array indexado de cada una de sus líneas.
string file_get_content($fichero).
- la función file_get_contents() retorna el contenido del fichero como un string.
echo "<div class='fichero'>"; echo "<h2>Fichero index.php </h2>"; echo "<pre class=\"prettyprint\">".htmlspecialchars($index)."</pre>"; echo "<hr />"; echo "</div> ";
- Vamos a hacer un ejercicio dónde si presionamos un botón mostramos el contenido del fichero
- En la primera versión lo hacemos todo sencillo seǵun hemos estudado
<?php $index = null; if ($_POST['submit']) { $index = file_get_contents("index.php"); } ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <fieldset> <legend>Presionar</legend> <form action="index.php" method ='POST'> <input type="submit" value="Ver contenido" name="submit"> </form> <?php if (!is_null($index) echo htmlspecialchars($index)); ?> </fieldset> </body> </html>
- Vemos que el resultado no es muy agradable a la vista
Archivo:Get content file index1.png
Escribir en un fichero
fwrite($fichero, "texto para escribir");
Acceso a un directorio
<?php $base = "/var/www/"; $dir = scandir($base); var_dump($dir); foreach ($dir as $directorio){ if (is_dir("$base$directorio")){ if ($directorio!="." && $directorio!=".."){ $ficheros = scandir ($directorio); if (in_array("index.php", $ficheros)){ $txt .= "<h2><a href=$directorio/index.php>$directorio</a></h2>"; } } } } ?> <!DOCTYPE html> <!-- To change this license header, choose License Headers in Project Properties. To change this template file, choose Tools | Templates and open the template in the editor. --> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <?php echo $txt; ?> </body> </html>