TIP PHP: Creación de Documentos Dinámicos

TIP PHP: Creación de Documentos Dinámicos
TIP1

Hola amigos de GeekyTheory, en este TIP vamos a aprender a realizar carpetas y documentos dinámicos, para ello vamos a crear un formulario en el que introduciremos el nombre de la carpeta y se nos creará dinámicamente un archivo dentro de la carpeta llamado index.php que contendrá el texto que introduzcamos en nuestro textarea. Los métodos que vamos a ver para crear carpetas y documentos son los siguientes: mkdir ("RUTA DEL DIRECTORIO","MODO","RECURSIVE")

  1. Nombre del directorio: String que contiene la ruta del directorio.
  2. Modo: El modo por defecto y más usado es el 0777 da permisos de escritura y lectura.
  3. Recursive: Poner a "true" si queremos que se creen carpetas anidadas, de tal forma que si en la ruta del directorio aparecen subcarpetas, estas también se crean.

file_exists ("RUTA DEL DIRECTORIO")

  • Devuelve true si la ruta existe, de lo contrario, devuelve false.

file_put_contents("RUTA DEL DIRECTORIO", "CONTENIDO DEL FICHERO")

  1. Ruta Del Directorio: indica donde queremos introducir nuestro fichero.
  2. Introducimos el contenido del fichero.

Una vez que hemos explicado los métodos que vamos a emplear, pasamos al contenido del tutorial. Así pues el código HTML de nuestro formulario será el siguiente: <form method="post" action="create.php"> Titulo de la carpeta <br /> <input type="text" name="tfolder" /> <br /> Texto <br /> <textarea rows="20" cols="20" name="texto"> </textarea> <br /> <input type="submit" /> </form>Podemos observar que tenemos un input file donde introduciremos el nombre de la carpeta que queremos crear en nuestro servidor y un textarea donde se escribirá el texto/código que queramos introducir en el archivo index.php que estará incluido dentro de la carpeta que hemos creado. Así pues, nuestro código PHP es el siguiente: <?php if(isset($_POST["tfolder"]) &&  isset($_POST["texto"])){ $titulo = $_POST["tfolder"]; $texto = $_POST["texto"]; //creamos directorio if(file_exists("./".$titulo)){ echo("EL NOMBRE DE ESTA CARPETA YA EXISTE"); }else{ mkdir("./".$titulo, 0777); //indicamos la ruta del fichero index.php $ruta = "./".$titulo."/index.php"; //Creamos el fichero index.php e introducimos el contenido del TextArea $a = file_put_contents($ruta, $texto); if(!$a){echo "ERROR al insertar el fichero";} echo "<a href=".$ruta.">ENLACE A: ".$titulo."</a>"; echo "<br/>"; echo "<br/>"; } } ?> Primero, usando la condición if vemos si hemos llamado a la página mediante POST, en caso de que la llamada sea mediante POST guardaremos en las variables $titulo y $texto el contenido del formulario. Seguidamente, testearemos si la carpeta con el titulo introducido en el formulario existe, en caso de que exista dará mostrará en pantalla un error. Si la carpeta no existiese la crearemos mediante el método mkdir. Posteriormente, pasaremos a crear nuestro archivo index.php, para ello, nos creamos una variable $ruta donde guardaremos la ruta del archivo index.php, el cual dependerá del titulo de la carpeta. Con el método file_put_contents crearemos el archivo index.php introduciendo el contenido de la variable $texto en el. Finalmente comprobaremos que no se ha producido ningun error a la hora de crear el documento, he introduciremos un enlace a nuestro archivo creado index.php. Así pues podemos ver a continuación un pequeño ejemplo de este código:

Captura1

Si ahora nos vamos a nuestra carpeta del servidor local donde tenemos almacenado nuestro código podemos ver que se ha creado la carpeta con el nombre que hemos puesto en el formulario.

Captura2

El archivo index.php creado contendrá lo siguiente:

Captura3

Pues esto es todo, hemos visto cómo crear sencillamente carpetas dinámicas. Este código puede dar mucho juego, así pues se podrian generar páginas web complejas usando este código y administrandola con una base de datos. Si tuvieraís alguna duda no dudéis en contactar conmigo a traves de comentarios en esta entrada, o en twitter @alex_esquiva. No olvidéis compartir este TIP en vuestras redes sociales. Un Saludo.