Para abreviar. Mi cuesión es ¿ Como modificar o actualizar una linea concreta de un fichero de texto mediante php ?
La finalidad es crear un reporte en este archivo de las paginas que se cargar guardando en cada linea los datos básicos. ( De momento ).
$url | $fecha | contador
El siguiente código en primer lugar lee el archivo de texto si no está lo crea. El archivo se denomina a si mismo con la fecha actual.
Luego hace una comprobación linea a linea donde busca la cadena de texto de esta variable que recoge su valor de
$_SERVER['HTTP_REFERER'];
si no existe añade una linea al archivo txt con el valor del contador cero
pero en caso de existir debe sumarle a la linea en cuestión 1 al valor del contador
¿ Como modificar esa linea exclusivamente o que solución adoptar para solucionar el problema ?
¿Alguien me puede ayudar?
Os dejo parte del código de pruebas aquí en la parte central destaco donde deberia ejecutarse el proceso que responde a esta duda. Solucionado espero que pueda serviros de referencia.
Código:
<?php
// en este caso no defino ningun directorio vale? es una prueba
define('DIR_LOG', '');
// definimos SERVER variables están aquí por que las utilizaré luego
$get_idioma = $_SERVER['HTTP_ACCEPT_LANGUAGE']; // Nos informa principalmente sobre el sistema operativo y tipo y versión de navegador
$get_navegador = $_SERVER['HTTP_USER_AGENT']; // Nos devuelve la o las abreviaciones de la lengua considerada como principal por el navegador
$get_url_ref = $_SERVER['HTTP_REFERER']; // Nos indica la URL desde la cual se accede a la página
$get_url_actual = $_SERVER['PHP_SELF']; // Nos devuelve una cadena con la URL del script que está siendo ejecutado
$get_ip = $_SERVER['REMOTE_ADDR']; // nos muestra la ip
$get_path = $_SERVER['DOCUMENT_ROOT']; // Nos devuelve el path físico en el que se encuentra alojada la página en el servidor
$get_session = $_SERVER['PHPSESSID']; // Guarda el identificador de sesión del usuario. Veremos más adelante en qué consisten las sesiones.
$get_host = $_SERVER['HTTP_HOST']; // Nos indica la URL de la página actual
$get_fecha = date('Y-m-d'); // reporta la fecha actual para darle nombre al archivo txt
/* convierte cadenas de texto a minúsculas ( solo las de este ejemplo ) */
$get_url_actual=strtolower($get_url_actual);
/* establezco el valor del contador */
$count = 0;
/* quita los espacios en blanco a los lados de la cadena de texto */
$get_url_actual=trim($get_url_actual);
/* reemplazo los saltos de carro por la etiqueta <br> */
$get_url_actual=eregi_replace("<br>","<br>",$get_url_actual);
echo "ha visitado la página: ".$get_url_actual."<br>";
echo "proviene de: ".$get_url_ref."<br>";
echo "en fecha de: ".$get_fecha."<br>";
echo "Su navegador es: ".$get_navegador."<br>";
echo "País/idioma: ".$get_idioma."<br>";
echo "IP indenticador: ".$get_ip."<br><br><br>";
// nombre del fichero de paginas
$archivo_pag = DIR_LOG.$get_fecha.".txt";
// lee el fichero si no existe lo crea
if ( ! fopen($archivo_pag, "a+")) {
echo "El archivo no se puede abrir\n";
} else {
// lo primero seria comprobar si la url de la página ya existe
$archivo = file($archivo_pag);
//creamos el array con las lineas del archivo
$lineas = count($archivo);
//contamos los elementos del array, es decir el total de lineas
for($i=0; $i < $lineas; $i++){
$archivo[$i] = str_replace('<META','<META',$archivo[$i]);
$archivo[$i] = str_replace('">','">',$archivo[$i]);
$campo=explode("|",$archivo[$i]);
echo $archivo[$i];
echo "<br>";
// comprobamos si existe la url actual dentro de la cadena de texto
// si existe damos el valor 1 a la variable search y la linea del array de su posicion
ereg($get_url_actual, $archivo[$i]);
if(ereg($get_url_actual, $archivo[$i] )) {
$search = 1 ; $linea = $i; $cadena = $archivo[$i]; $value_count = $campo[2];
$new_value_count = $value_count+1;
$datos .= "$get_url_actual|$get_fecha|$new_value_count|\n";
}
}
if( $search == 1 ) {
// A Q U I E S D O N D E D E B E R I A M O S M O D I F I C A R L A L I N E A
// insertando una nueva con el valor de la cadena $datos
// esa es la cuestion ¿ Como hacerlo ?
//
echo "<p>se ha encontrado la cadena $get_url_actual en el archivo </p>";
echo "<p>cadena: $value_count</p>";
} else {
// si no existe creamos una linea nueva
echo "<p>NO se ha encontrado la cadena $buscar en la cadena </p>";
// si no existe creamos la nueva linea
$datos .= "$get_url_actual|$get_fecha|$count|\n";
$archivo = fopen($archivo_pag, "a");
fputs($archivo, $datos);
fclose($archivo); /* se cierra el archivo */
}
}
?>