Creazione file log personalizzato

  • Creatore Discussione Creatore Discussione Monital
  • Data di inizio Data di inizio

Monital

Utente Attivo
15 Apr 2009
778
2
18
Salve mi chiedevo se qualcuno può aiutarmi a creare un file log personalizzato. io ho trovato una funzione che mi crea un file log in txt che identifica l'ip ora e giorno e file visitati, invece io vorrei creare un log per ogni ID che entra per verificare le azioni che fa sulle pagine

ad esempio

pippo si logga e compra 10 caramelle

vorrei che mi risultasse un file pippo_log.txt(php quel che sia) che mi dica

pippo si è collegato il giorno x alle ore y ed ha comprato 10 caramelle

Qualcuno sa come si può fare e mi potrebbe aiutare?

thank
 
premetto che come detto l'ho trovata in giro sul web e non l'ho manco toccata perchè per ora non sonoa ncorra capace a crearal una funzione
questa però non fa quello che vorrei.
PHP:
<?php
function logItNow()
{
$path_parts = pathinfo( $_SERVER['PHP_SELF'] );
$pageName = $path_parts['dirname'] . '/' . basename( $_SERVER['PHP_SELF'] );
$data = date( 'd/m/y h:i:s', time());
$ip = $_SERVER['REMOTE_ADDR'];
$auth = $_SESSION['AuthInfo'] != 'codAutenticazione' ? '[ Ut. sconosciuto ]' : '[ Ut.riconosciuto ]';

$msg = ' [' . $data . '] [ IP ' . $ip . ' ] ' . $auth . ' .' . $pageName . '' . PHP_EOL ;

$fp = fopen( 'log_accessi.txt' , 'a+' );
fwrite( $fp , $msg );
fclose( $fp );

return $msg;
}
?>

intanto devo registrare l'user che si logga $_SESSION['user_id'] e non l'ip e poi come spiegato su vorrei vedere tutte le operazioni che compie in quella sessione. che poi l'ideale sarebbe che per ogni user che si collega mi apra un file per ogni user
 
cioa
non uso molto i file, però secondo me se segui uno o l'altro esempio sotto dovresti riuscire a fare quello che vuoi
per php 5
PHP:
<?php
//dati da inserire presi da qualche parte
$dato[0]=$nome;//es pinco
$dato[1]=$cognome;//es pallo
$dato[2]=$quante_caramelle;//es 2000
$dato[3]=$data_acquisto;//es 01.06.2012
$scrivi=implode("|",$dato)."\n";//risultato: pinco|pallo|2000|01.06.2012\n
$nome_file=$nome.".txt";//pinco.txt
// da php 5
$ris= file_put_contents($nome_file,$scrivi, FILE_APPEND | LOCK_EX);//se non esiste tenta di crearlo (verifica i permessi)
?>
oppure per PHP 4 e PHP 5
PHP:
<?php
//come sopra
$nome_file=$nome.".txt";//pinco.txt
$handle=fopen($nome_file,'w');//se non esiste tenta di crearlo (verifica i permessi)
fwrite($handle, $scrivi);
fclose($handle);
?>

prova, al massimo non funzia
 
ciao borgo e grazie ma questa sarebbe la parte finale

il problema sono proprio i dati che non so da dove prenderli perchè non so come/dove metterli.

Come faccio a sapere quali operazioni ha effettuato l'utentex?
 
ciao
l'utente si loggherà da qualche parte o comunque per fare un acquisto dovrà indicare sempre da qualche parte i suoi dati, cosa comprare e quanto comprare
è da quelle operazioni che fa l'utente che devi ricavare i dati.
da quello che capisco il problema non è creare un file
 
ciao
l'utente si loggherà da qualche parte o comunque per fare un acquisto dovrà indicare sempre da qualche parte i suoi dati, cosa comprare e quanto comprare
è da quelle operazioni che fa l'utente che devi ricavare i dati.
da quello che capisco il problema non è creare un file
l'acquisto er aun esempio, in realtà si tratta di una speci di un pannello dia mministrazione ed io vorrei vedere le azioni che compie sullo script chi si logga , del tipo quali pulsanti ha premuto, quali modifiche fatte ald atabase etc.
 
forse mi è venuta un idea qualcuno può rinfrescarmi le idee su come memorizzare la pagina su cui si trova l'utente?

perchè pensandoci bene per le operazioni mi basterebbe inviare le variabili al file log avendo usato el sessioni posso inserire i vari dati nell'id della sessione
tipo

riga 1 --> [id sessione] [Accesso data] [Dato orignali del database] [Dati inviati al database] [Pagina di invio]
 
per il login usi le sessioni?
perchè una volta che l'utente è loggato ti basta interrogare il db e prendere i dati dell'utente e buttarli nel file di testo...
per comodità ti converrebbe chiamarlo così
Codice:
 $nomeutente."_log.txt"
perchè altrimenti non sai a chi appartiene quel log...
scusami se sono andato troppo oltre o se avevi risolto...
 
il file potresti crearlo così...
Codice:
$a=time();
$b=date('dMyHis', $a);
$query_user="QUERY PER SELEZIONARE L'UTENTE LOGGATO";
$result_user=mysql_query($query_user);
$row_user=mysql_fetch_row($result_user);
$user=$row_user[0];
$file=$user.$b.".txt";
$file_pointer=fopen($file,'w') or die ('Impossibile aprire il file');
E COME NOME GLI DAI IL NOME DELL'UTENTE E L'ORA IN CUI VIENE CREATO
E POTRESTI RIEMPIRLO IN QUESTO MODO
Codice:
$query="QUERY PER RECUPERARE I DATI CHE TI SERVONO DAL DB;
$result=mysql_query($query);
$row=mysql_fetch_row($result);
$CAMPO1=$row[0];
$CAMPO2=$row[1];
$CAMPO3=$row[2];

$CAMPOn=$row[n];

$dati= 'CAMPO1: '.$CAMPO1.', CAMPO2: '.$CAMPO2.', ..., CAMPOn: '.$CAMPOn.';
flock($file_pointer,2); 
fwrite($file_pointer,$dati);
flock($file_pointer, 3); 
fclose($file_pointer);

spero di esserti stato utile
 
grazie carter non ho testato ma è già u inizio seppur...............

altro non è he la fine quella. il problemma principale e che nons o come fr capire al log quali pagine visita il loggatoe che azioni intrapende, probabilmente non è possiible come cosa cmq continuoa ceercare
 
grazie carter non ho testato ma è già u inizio seppur...............

altro non è he la fine quella. il problemma principale e che nons o come fr capire al log quali pagine visita il loggatoe che azioni intrapende, probabilmente non è possiible come cosa cmq continuoa ceercare

per le pagine visitate potresti farlo con dei flag...se sono pagine riservate l'utente è loggato e magari setti il flag se viene visualizzata la pagina...
per le operazioni che compie...dovrebbe essere un pò studiata come cosa...

se tu utilizzassi un cms potresti cercare dei plugin...
di nulla
 
se può servirti però,
queste sono istruzioni che ho visto da qualche parte e che in qualche modo potrebbero fare al caso tuo...
Codice:
 $_SERVER['REQUEST_URI']
oppure
Codice:
 $_SERVER['SCRIPT_NAME']

dovrebbero restituirti il nome della pagina...

Codice:
 date_format()

dovrebbe darti la data e l'ora di connessione
e
Codice:
 $_SERVER['HTTP_REFERER']
(anche se non funziona proprio benissimo)
dovrebbe darti la pagina precedente...
almeno per quanto riguarda la prima parte di quello che devi fare..
per quanto riguarda le azioni che intraprende non so cosa intendi...
 
per le pagine visitate potresti farlo con dei flag...se sono pagine riservate l'utente è loggato e magari setti il flag se viene visualizzata la pagina...
per le operazioni che compie...dovrebbe essere un pò studiata come cosa...

se tu utilizzassi un cms potresti cercare dei plugin...
di nulla


ok ok ci sto arrivando mi hai dato delle info preziosissime, visto che ti vedo rpeparato su sta cosa mi vorrei evitare una ricerca, dato che è una cosa a stempo perso,


per curiosità sarebbe sto flag?
 
per flag intendo una variabile che viene avvalorata nel caso l'utente "faccia qualcosa" in una pagina...
per esempio, se un utente visita una pagina di questo forum...per flag intendo una variabile magari di sessione che viene avvalorata "nel frammento" di codice che l'utente esegue per fare l'azione...che in questo esempio potrebbe essere la risposta a una discussione...questo per evitare che la variabile venga avvalorata caricando soltanto la pagina...
però se devo esserti sincero non ho studiato bene la cosa...dovrei avere sotto mano un pò del tuo codice...
come l'utente esegue le azioni (se deve essere loggato o no)...quali sono queste azioni...se puoi posta il codice di una pagina in cui ti serve sapere se l'utente compie l'azione o no...magari ci capisco qualcosa di più...o ti aiuta qualcunaltro...
saluti
dario
 

Discussioni simili