Foros del Web » Programando para Internet » PHP »

modificando linea txt para log de paginas visitadas

Estas en el tema de modificando linea txt para log de paginas visitadas en el foro de PHP en Foros del Web. Para abreviar. Mi cuesión es ¿ Como modificar o actualizar una linea concreta de un fichero de texto mediante php ? La finalidad es crear ...
  #1 (permalink)  
Antiguo 05/09/2005, 02:25
Avatar de papanoelmola
(Desactivado)
 
Fecha de Ingreso: junio-2003
Ubicación: Toledo
Mensajes: 136
Antigüedad: 20 años, 9 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 */
			 
	 }


}


?>
  #2 (permalink)  
Antiguo 07/09/2005, 23:56
Avatar de papanoelmola
(Desactivado)
 
Fecha de Ingreso: junio-2003
Ubicación: Toledo
Mensajes: 136
Antigüedad: 20 años, 9 meses
Puntos: 0
vaya x lo que veo esto es un reto jejeje ¿ Ninguna solución o sugerencia ?
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:33.