Como fazer php abrir um arquivo html, ir duas linhas para cima, em seguida, escrever lá e fechar?
-
20-08-2019 - |
Pergunta
Estou fazendo um php-file litte para registrar alguns endereços IP. Ele vai escrever os ips e data / hora em um arquivo html. O arquivo html vai ser uma mesa. Então, eu quero mak-lo assim:
<table cellpadding="6" rules="groups" frame="no">
<thead>
<tr><th>IP</th><th>Date</th><th>Time</th></tr>
</thead>
<tbody>
<tr><td>192.168.0.1</td><td>31. January 2009</td><td>19:21:09</td></tr>
</tbody>
</table>
Então, eu preciso dele para abrir o ficheiro, escreva o ip e data / hora na linha acima </table>
Eu já tenho o php para escrever o que eu quero, mas ele grava uma parte inferior.
Eu sou muito novato, eu não sei o que colocar onde ..
Isto é o que eu tenho:
<?php
$ip = $_SERVER['REMOTE_ADDR'];
$date = date("j. F Y");
$time = date("H:i:s");
$file = fopen('./iplogg.html', 'a', 1);
$text="<tr><td>{$ip}</td><td>{$date}</td><td>{$time}</td></tr> \n";
fwrite($file, $text);
fclose($file);
?>
Solução
Eu estou indo supor que há apenas uma única tabela no arquivo. Se houver mais de um, isso irá adicioná-lo a cada um.
<?php
$ip = $_SERVER['REMOTE_ADDR'];
$date = date("j. F Y");
$time = date("H:i:s");
$text="<tr><td>{$ip}</td><td>{$date}</td><td>{$time}</td></tr> \n";
$originalfile = file_get_contents ('./iplogg.html');
$newFile = str_replace('</table>',$text.'</table>',$originalfile);
file_put_contents('./iplogg.html', $newFile);
?>
Editar Mixed minha sugestão com o seu código
Outras dicas
O que eu sugiro é usar 2 arquivos, um arquivo de log para armazenar os dados em bruto e um script php que lê a partir desse arquivo de log e gerar uma tabela. As principais razões são:
1) seu arquivo de log permanecerá muito menor
2) se você quiser alterar o esquema, é sempre possível editando o script php
3) quando o arquivo de log se torna enorme, talvez não seja possível armazenar seu conteúdo em uma string com file_get_contents