Escrevendo em ficheiros com PHP

PaNcRoNi

What is folding?
Boas pessoal,

há um tempo que não vinha aqui ao fórum mas agora que estou de volta penso que poderei começar a ajudar e a ser ajudado.

Deixando isso de parte, gostava que me ajudassem aqui numa dúvida que estou a ter, caso saibam a maneira de o fazer. :)

Estou a desenvolver um pequeno código que me vai guardar em determinado ficheiro com alguma informações dos membros que entram na página, mas estou agora com uma dúvida pois quero armazenar esta informação numa tabelae queria meter o ponteiro num determina lugar do ficheiro.

Resumindo:

PHP:
$arquivo = fopen("Privado/NM/log.html",  "a");

fputs($arquivo, " " );

fclose($arquivo);

A minha ideia é que a cada visita ele me adicione o código seguinte:

PHP:
<tr>
    <td>$data</td>
    <td>$hora</td>
    <td>$ip</td>
    <td>$browser</td>
    <td>$pagina</td>
</tr>

Ao ficheiro já exitente ( +/- isto ):

PHP:
<body><table width="90%" border="1">
<tr>
<td height="10%"><b>Data:</b></td>
<td height="10%"><b>Hora:</b></td>
<td height="20%"><b>IP:</b></td>
<td height="20%"><b>Browser:</b></td>
<td height="20%"><b>Página:</b></td>
</tr>
</body>
</html>

A minha ideia é a de colocar o ponteiro entre </tr></body> e imprimir ai a informação em questão, alguém sabe como o posso fazer?

Desde já agradeço o tempo dispensado a ler!

Com os melhores cumprimentos,
Nelson Ferreira
 
Continuando

Boas novamente,

como eu não desisto facilmente estive a pesquisar o que havia na net sobre este assunto e acabei por descobrir um caminho:

PHP:
$linhas = file('Privado/NM/log.html');

$numLinhas = count($linhas);

$htmlFim = $linhas[$numLinhas];
$bodyFim = $linhas[$numLinhas-1];

echo "HTML - ".$htmlFim."<br>";
echo "BODY - ".$bodyFim."<br>";

O meu problema é que não está a devolver o suposto código, tendo em conta que as últimas 2 linhas do ficheiro são:

HTML disse:
</body>
</html>

Alguma ideia do porque?

Obrigado
 
é simples

Boas, tu no ficheiro não deves guardar o HTML.

Guardas a informação por linhas:

Data, Hora, ip, ...
D1 , H1, , ip1, ...
... .... ... ...

Para aceder à informação:
  1. abres o ficheiro para leitura
  2. carregas a linha para uma variável
  3. separas os elementos de cada linha (data, hora, etc que estão na variável) para um array
  4. fazes echo com com os valores do array formatados como quiseres neste caso tu querias numa tabela <td>
  5. repetir para todas as linhas com um ciclo foreach
*ver informação sobre as funções de arrays

É tudo.
 
Back

Obrigado K0mA mas ontem acabei por resolver o problema da seguinte maneira:

Código do ficheiro que guarda todas as visitas num ficheiro TXT, neste caso ( log.txt )

PHP:
<?
putenv('TZ=Europe/Lisbon');
$ano = date('Y');
$mes = date("n");
$dia = date('d');
$data = $dia.'/'.$mes.'/'.$ano;
$hora = date("h:iA");

$ip = $REMOTE_ADDR;  
$referencia = $HTTP_REFERER;  
$browser = $HTTP_USER_AGENT;  
$pagina = $_SERVER['REQUEST_URI'];
$arquivo = fopen("../log.txt", "a");

fputs($arquivo, "
<tr>
<td>".$_SESSION['nome']."</td>
<td>$data</td>
<td>$hora</td>
<td>$ip</td>
<td>$browser</td>
</tr>
");
 
fclose($arquivo);
?>
Código do ficheiro que inclui este anterior:

PHP:
<?
if ( $EntrouNaPagina == 'Sucesso' ) include("Privado/NM/GuardaVisitas.php");
?>
Quando o utilizador faz Login, eu tenho uma caixa de texto do tipo "escondida" que envia a variável $EntrouNaPagina com o valor Sucesso, para que só quando façam o login ele registe no ficheiro.

Código do ficheiro que mostra o painel de visitas:

PHP:
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>
<meta name='Author' content='Júlio César Mendes Lustosa < NVW Design - Tecnologia & Design - www.nvw.com.br >'>
<title>NM Page Control</title>
<style type='text/css'>
<!--
body,td,th { color: #666666; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; }
a:link { text-decoration: none; color: #0066FF; }
a:visited { text-decoration: none; color: #0066FF; }
a:hover { text-decoration: underline; color: #0000FF; }
a:active { text-decoration: none; }
-->
</style></head>
<body>
<table width='95%' border='1' cellpadding="0" cellspacing="0">
<tr>
<td height='20%' align="center"><b>User</b></td>
<td height='10%' align="center"><b>Data</b></td>
<td height='10%' align="center"><b>Horário</b></td>
<td height='20%' align="center"><b>IP</b></td>
<td height='40%' align="center"><b>Browser</b></td>
</tr>

<? 
$html = file_get_contents('log.txt'); 
echo $html;
?>

</table>
</body>
</html>
Pode não ser a maneira mais inteligente de o fazer, mas foi a maneira com que eu consegui por isto a funcionar, mais tarde vou colocar este informação em base de dados, o que vai simplicar bastante o código.

Fica o exemplo aqui, para todos.

Com os melhores cumprimentos,
Nelson Ferreira aka PaNcRoNi
 
Última edição pelo moderador:
Back
Topo