Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/09/2005, 02:25
Avatar de papanoelmola
papanoelmola
(Desactivado)
 
Fecha de Ingreso: junio-2003
Ubicación: Toledo
Mensajes: 136
Antigüedad: 20 años, 10 meses
Puntos: 0
modificando linea txt para log de paginas visitadas

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','&lt;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 */
			 
	 }


}


?>