Crear y escribir en un archivo con php

Crear archivos en php

Hola, hoy os traigo un script en php que crea un archivo y luego escribimos en él la el año y la hora de cuando hemos creado o modificado dicho archivo

Primero nos creamos una carpeta en nuestro servidor local, donde almacenaremos nuestros dos script, por ejemplo, ejercicio1_w (archivo que nos va a permitir escribir en él).


<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<?php 

	/*
	 * 1.- Creamos la variable que contiene el archivo que tenemos que crear.
	 * 2.- preguntamos si existe el archivo, si el archivo existe "se ha modificado"
	   en caso contrario el archivo se ha creado.
	 * 3.- Con fopen abrimos un archivo o url, en este caso vamos a abrir un archivo
	   pasando como parámetro la variable $nombre_archivo que es la que contiene 
	   nuestro archivo y como segundo parámetro como lo vamos a abrir, en este caso "a"
	   que nos abre el fichero en solo lectura y sitúa el puntero al final del fichero
	   y en el caso de que no exista lo crea.

	   ******Para terminar*******

	   4.-Con el fwrite escribimos dentro del archivo la fecha con la hora de Creación 
	   o modificación, según el caso, con la variable $mensaje, 

	*/
	
	$nombre_archivo = "logs.txt"; 

	if(file_exists($nombre_archivo))
	{
		$mensaje = "El Archivo $nombre_archivo se ha modificado";
	}

	else
	{
		$mensaje = "El Archivo $nombre_archivo se ha creado";
	}

	if($archivo = fopen($nombre_archivo, "a"))
	{
		if(fwrite($archivo, date("d m Y H:m:s"). " ". $mensaje. "\n"))
		{
			echo "Se ha ejecutado correctamente";
		}
		else
		{
			echo "Ha habido un problema al crear el archivo";
		}

		fclose($archivo);
	}

 ?>

Y segundo, el archivo que nos va a mostrar los datos en el navegador.


<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<?php 

	$nombre_archivo = "logs.txt"; //variable con el nombre del archivo que vamos a crear

	/* 1.- Si el archivo existe mostramos en el navegador el contenido con
	 * "file_get_contents" que nos devuelve lo que hay en el archivo
	 * logs.txt.
	 * 2.-forzamos con nl2br que los saltos de linea "\n" los muestre en HTML <br />
	*/
	if(file_exists($nombre_archivo)) 
	{
		echo  nl2br(file_get_contents($nombre_archivo));
	}
	else
	{
		$mensaje = "El archivo no existe";
	}


 ?>

Espero que os sea útil.

¡Un saludo!

Etiquetas:

  • http://galiciapirata.blogspot.com.es/ Uinglond

    Gracias, me ha servido

    • http://www.webioss.com admin

      Gracias a ti, por entrar y por comentar en el blog

      Un saludo!!

  • Gonzalo

    Hola,

    Gracias, tu ejemplo me ha servido pila.

    Por cierto, deberías corregir en el texto superior “varibale” y “habre” va sin hache.

    Saludos,!
    Gonzalo

  • http://www.meetinglands.com mauricio

    buenisimo me sirbio y esplicado de forma simple y sin complicaciones , gracias sigan asi!

    • http://www.webioss.com admin

      Gracias Mauricio por tu comentario.

      Saludos!!

  • Elias

    Gracias a esto la generacion de logs me resulta facil,
    que buen aporte.

  • http://Enproceso Carlos

    Está muy genial el código, de verdad me fue de ayuda, solo tengo una duda. Que tal si ya no quiero seguir escribiendo sobre ese mismo archivo, como mando un mensaje de que el archivo ya está creado y no puedo hacer otro con el mismo nombre?

    Gracias y espero que me puedas responder… =D

    • http://www.webioss.com admin

      Hola Carlos, para eso lo mejor sería empezar con una clase y un par de métodos que reciban una variable por argumento, ese argumento que se les pasa será el archivo a modificar, Creo que sería lo mas lógico y lo mas limpio.

      Espero que me haya explicado!!

      Un saludo!!

  • juan jose gonzález rodríguez

    date(“d m Y H:m:s”) -> date(“d m Y H:i:s”)

  • Juan L. Valadez

    Gracias, me has ayudado.
    Amigo otra duda, se podra cambiar el nombre “log.txt” a una variable

    $nombre= $_SERVER[‘REMOTE_ADDR’];
    $archivo321 = fopen(‘$nombre.txt’, “w+”) ¿?