Overwritten data when saving access log to file

3

I have a problem that I think is easy to solve, but I do not know how to solve it.

Below is a script to record who accessed the page. It worked fine, but it overrides one access on top of the other, and I need every IP that it accessed to be saved, one underneath the other.

I also do not know how to set the time, it is appearing with 5 hours more.

<?php
   /* se o arquivo não existir, será criado, dê
      permissão 777 na pasta onde ele será criado */
   $arquivo = "includes/spy.txt"; // arquivo que gravará os dados
   $data = date("d/m/Y H:i:s"); // Data do acesso
   $ip = $_SERVER['REMOTE_ADDR']; // IP de acesso
   $host = getHostByAddr($ip); // Host de acesso
   $pagina = $_SERVER['PHP_SELF']; // Página de acesso
   $browser = $_SERVER['HTTP_USER_AGENT']; // Browser de acesso
   $fp = fopen($arquivo, "w+");
   fwrite( $fp,
      "Data: $data | IP: $ip | host: $host | Pagina Acessada: $pagina | Navegador: $browser"
   );
   fclose($fp);
?>
    
asked by anonymous 29.09.2014 / 19:24

2 answers

6

Change mode from fopen to a ( append ):

$fp = fopen($arquivo, 'a+');

See the difference of fopen flags in the PHP manual (I highlighted the key points) :

  

w+ Opens for reading and writing; puts the file pointer at the beginning of the file and reduces the file length to zero . If the file does not exist, try to create it.

     

a+ Opens for reading and writing; puts the file pointer at the end of the file . If the file does not exist, try to create it.


As for the date, the problem is probably the timezone server. The line below should resolve (use before date ):

date_default_timezone_set('America/Sao_Paulo'); // Europe/Lisbon
    
29.09.2014 / 19:28
0
    <?php
       /* se o arquivo não existir, será criado, dê
          permissão 777 na pasta onde ele será criado */
       date_default_timezone_set('America/Sao_Paulo');
       $arquivo = "includes/spy.txt"; // arquivo que gravará os dados
       $data = date("d/m/Y H:i:s"); // Data do acesso
       $ip = $_SERVER['REMOTE_ADDR']; // IP de acesso
       $host = getHostByAddr($ip); // Host de acesso
       $pagina = $_SERVER['PHP_SELF']; // Página de acesso
       $browser = $_SERVER['HTTP_USER_AGENT']; // Browser de acesso
       $fp = fopen($arquivo, "a+");
       fwrite( $fp,
          "Data: $data | IP: $ip | host: $host | Pagina Acessada: $pagina | Navegador: $browser"."\r\n"
       );
       fclose($fp);
    ?>

OU

<?php
   /* se o arquivo não existir, será criado, dê
      permissão 777 na pasta onde ele será criado */
   date_default_timezone_set('America/Sao_Paulo');
   $arquivo = "includes/spy.txt"; // arquivo que gravará os dados
   $data = date("d/m/Y H:i:s"); // Data do acesso
   $ip = $_SERVER['REMOTE_ADDR']; // IP de acesso
   $host = getHostByAddr($ip); // Host de acesso
   $pagina = $_SERVER['PHP_SELF']; // Página de acesso
   $browser = $_SERVER['HTTP_USER_AGENT']; // Browser de acesso
   $fp = fopen($arquivo, "a+");
   fwrite( $fp,
      "Data: $data | IP: $ip | host: $host | Pagina Acessada: $pagina | Navegador: $browser"."\r\n"."\r\n"
   );
   fclose($fp);
?>
    
28.07.2015 / 04:15