Redirección basada en el remitente o IP con PHP Uso de PHP puede redirigir fácilmente sus visitantes a una página diferente dependiendo de dónde vienen.Noticias 

Manejo de Archivos en PHP

Manejo de Archivos en PHP

Incluye Practica

 

Habrá muchas ocasiones en las que nos interese acceder a ficheros, bien para recuperar sus datos, bien para escribir en ellos. Piensa por ejemplo en contadores de hits, libros de visitas, logs, o simplemente web fetching (recuperar datos de otra web para incluirlos en la tuya). En esta sección veremos las funciones mas usuales para estos fines

 

Apertura de un archivo.

La función utilizada para abrir un archivo en PHP es fopen, y su sintaxis:
file_handler=fopen(“nombre_de_archivo”,”modo”);
Donde file_handler es el puntero que se crea sobre el archivo, nombre_de_archivo es la ruta y nombre del archivo a abrir, y modo se refiere a los diferentes modos escritura/lectura.

Los modos en los que se puede abrir un archivo son:

  • r Sólo lectura. El puntero al comienzo del archivo
  • r+ Lectura y escritura; apuntador al inicio del archivo
  • w Sólo escritura, si no existe el archivo lo crea, si existe lo convierte en fichero de longitud cero y el apuntador se coloca en el inicio (sobreescribe el contenido, vamos)
  • w+ Lectura y escritura, si existe lo trunca a tamaño cero, y se situa al inicio, si no existe lo crea
  • a Modo append, sólo escritura, si no existe lo crea. Si existe, el apuntador se coloca al final del ficero (listo para escribir a continuacion del contenido)
  • a+ Modo append, lectura y escritura, si no existe lo crea; apuntador al final del archivo
  • b es un flag adicional a cualquiera de los anteriores que indica que vamos a operar sobre un archivo binario (en contraposicion a archivo de texto) como una imagen o un sonido. En algunos sistemas operativos como linux no existe esta diferencia asi que el indicador b será ignorado.

 

La función devuelve un file_handler que luego debe ser usado en todas las funciones de tipo fgets, fputs, fclose, fread, fwrite, etc.  Con fopen podemos abrir ficheros locales o remotos. Si nombre_de_archivo comienza con “http://” (o HTTP://), php abre una conexión HTTP hacia el servidor especificado y se devuelve un apuntador de fichero al comienzo del texto de respuesta. Asi puedes acceder (en modo lectura solamente) a ficheros de otros servidores. La dirección en estos casos debe ser completa.

Si nombre_de_archivo comienza con “ftp://” (o FTP://), se abre una conexión ftp hacia el servidor indicado.

Si nombre_de_archivo empieza de cualquier otra forma, php considera que se trata de una ruta a un fichero local y intenta recuperarlo. Si la operación falla (no existe el fichero en esa ruta, o no se puede abrir) la función devuelve FALSE.

Advierte que en todos los casos nos referimos no solo a la apertura de un fichero, sino a la obtención de un puntero o apuntador a su contenido. fopen solo debe usarse para abrir un archivo cuyo contenido vamos a manipular. Si unicamente queremos recuperar su contenido (y por ejemplo mostrarlo en pantalla), hay otras funciones mas adecuadas.

 

Cerrar el archivo: fclose()

Con fclose cerramos el apuntador adquirido sobre un fichero previamente abierto con fopen. Su sintaxis es fclose (file_handler)

Es muy importante cerrar el fichero al terminar de operar con el, para evitar deterioro de los datos.

 

Veamos un ejemplo:

<?php
//vamos a ir construyendo un contador básico
//abrimos “contador.txt” en modo lectura

if ($file = fopen( “/otros/contador.txt”,  “r”)) {

// tenemos un puntero ($file) sobre contador.txt
// apunta al comienzo … Aqui incluiriamos código para recuperar datos

fclose($file); // hemos terminado, cerramos el apuntador
}

// Abrimos el archivo de nuevo, ahora en modo escritura.

if ($file = fopen( “/otros/contador.txt”,  “w”)) {

// tenemos nuevo apuntador. Aqui iria el código que sobreescribiria
// el archivo con los nuevos datos.

fclose($file); //hemos terminado, cerramos el archivo.
}
?>

 

Como habrás advertido, $file no es el nombre del archivo, es nuestro apuntador (file handler) al contenido del mismo. Y en otra sección abordaremos como leer y escribir el fichero. Como recordatorio final, si tienes que indicar la ruta a un fichero en un entorno windows, recuerda que si usas barras invertidas \ tienes que incluir la barra adicional de escape \\.

 

Funciones de gestión de archives
Función Descripción Sintaxis
Copy Copia un archive copy($origen,$destino)
Rename Cambia el nombre del archivo de $antes a $despues rename($antes,$despues)
Unlink Borra el archivo unlink($archivo)

 

Funciones para la lectura de archivos
Función Descripción Sintaxis
Fopen Abre un archivo y le asigna un identificador id. Veremos el modo más adelante $id = Fopen($archivo, $modo)
Fgets Lee una línea de un archivo hasta un numero máximo de caracteres fgets($id,$max)
Fwrite Escribe una cadena dentro del archivo fwrite($id, $cadena)
Fseek Avanza o retrocede el puntero del archivo un cierto numero de posiciones fseek($id,$posiciones)
Feof Comprueba si el puntero que lee el archivo ha llegado al final feof($id)
fpassthru lee completamente el archivo y lo muestra fpassthru($id)
Fclose Cierra el archivo abierto previamente fclose($id)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Práctica  1:

 

Encuesta

Crear un formulario con la siguiente estructura, pagina encuesta.php.

 

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>

<html xmlns=”http://www.w3.org/1999/xhtml”>

<head>

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

<title>Documento sin título</title>

</head>

<body>

<form action=”guarda_encuesta.php” method=”post” enctype=”multipart/form-data”>

<table width=”352″ border=”1″ align=”center” cellpadding=”0″ cellspacing=”0″>

<tr>

<td colspan=”4″ align=”center”>Encuesta</td>

</tr>

<tr>

<td colspan=”4″ align=”center”>¿Qué piensa del futuro de Venezuela?</td>

</tr>

<tr>

<td width=”83″>Excelente

<input type=”radio” name=”encuesta” id=”radio” value=”excelente” /></td>

<td width=”80″>Buena

<input type=”radio” name=”encuesta” id=”radio2″ value=”buena” /></td>

<td width=”85″>Regular

<input type=”radio” name=”encuesta” id=”radio3″ value=”regular” /></td>

<td width=”94″>Mala

<input type=”radio” name=”encuesta” id=”radio4″ value=”mala” /></td>

</tr>

<tr>

<td colspan=”4″ align=”center”><input type=”submit” name=”enviar” id=”enviar” value=”Enviar” /></td>

</tr>

</table>

</form>

</body>

</html>

 

Crearemos el archivo guarda_encuesta.php, que guardara los resultados de la encuesta en un archivo de texto.

 

<?php

$archivo1=file(“encuesta.txt”);

$lineas1=count($archivo1);

$id=fopen(“encuesta.txt”,”a”);

 

if($lineas1) $cadena=”\n”.$_POST[‘encuesta’];

else $cadena=$_POST[‘encuesta’];

 

$cadena.=” , “.$_SERVER[‘REMOTE_ADDR’].” , “.date(“d/m/Y h:i:s a”);

fwrite($id,$cadena);

fclose($id);

 

$archivo=file(“encuesta.txt”);

$lineas=count($archivo);

for($i=0;$i<$lineas;$i++)

{

$arr=explode(“,”, $archivo[$i]);

switch(trim($arr[0]))

{

case “excelente”:

$excelente++;

break;

case “buena”:

$buena++;

break;

case “regular”:

$regular++;

break;

case “mala”:

$mala++;

break;

}

}

?>

<table border=”1″ align=”center” cellpadding=”6″>

<tr>

<td colspan=”4″ align=”center”><b>Resultados de <?php echo $lineas;?>Cargas</b></td>

</tr>

<tr>

<td><b>Excelente</b></td>

<td><b>Buena</b></td>

<td><b>Regular</b></td>

<td><b>Mala</b></td>

</tr>

<tr>

<td><?php echo $excelente.”-“.number_format(($excelente*100/$lineas),2,”,”,”.”);?></td>

<td><?php echo $buena.”-“.number_format(($buena*100/$lineas),2,”,”,”.”);?></td>

<td><?php echo $regular.”-“.number_format(($regular*100/$lineas),2,”,”,”.”);?></td>

<td><?php echo $mala.”-“.number_format(($mala*100/$lineas),2,”,”,”.”);?></td>

</tr>

</table>


Si quieres seguir aprendiendo con nosotros, puedes ingresar a nuestros

Cursos y Diplomados de Tecnología Web visita www.uneweb.edu.ve  para más información

Entradas relacionadas