1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Escrevendo em ficheiros com PHP

Discussão em 'Web Development' iniciada por PaNcRoNi, 3 de Novembro de 2006. (Respostas: 4; Visualizações: 1859)

  1. PaNcRoNi

    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
     
  2. PaNcRoNi

    PaNcRoNi What is folding?

    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:

    Alguma ideia do porque?

    Obrigado
     
  3. K0mA

    K0mA Power Member

    é 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.
     
  4. PaNcRoNi

    PaNcRoNi What is folding?

    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: 27 de Novembro de 2006
  5. K0mA

    K0mA Power Member

    É preciso é que funcione :)
     

Partilhar esta Página