Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Douglas Fernandess

Como fazer recurso ultimos itens visitados

Recommended Posts

Jogue as paginas visitadas em um array e jogue esse array em uma session ou cookie...

 

Ou

 

Você pode criar uma session com um ID e a cada pagina que alguem visitar você cadastra a pagina a qual foi visitada por akele ID no Banco de dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

De uma maneira simples salvando as paginas no Banco de dados:

 

Crie uma tabela dessa forma:

ID - int (7) auto increment chave primária
id_rand - int (20)
pagina - varchar (255)

 

e coloque isso no topo de sua pagina

 

PaginasVisitadas.inc.php

<?
$pagina_atual = $_SERVER['REQUEST_URI'];
if(!isset($_COOKIE['page']{
$rand = mt_rand(0, 9999999999999999999);
setcookie("page", "$rand");
$cookie = $rand;
}else{
$cookie = $_COOKIE['page'];
}

$query = mysql_query("INSERT INTO paginas_visitadas (id_rand, pagina) VALUES ('$cookie', '$pagina_atual')");
?>

 

 

Para saber qual foi as paginas visitadas pelo usuário basta dar um select onde o id_rand = o valor do cookie criado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah desculpe... mude essa linha

 

if(!isset($_COOKIE['page']{

 

 

para

 

 

if(!isset($_COOKIE['page'])){

 

Outra coisa... Você pode alterar a $_SERVER['REQUEST_URI']; pelo id dos itens, assim você vai guardar menos informações no banco de dados!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Foi nada, eu fiz assim e funcionou, mais fica dando erro na linha 5 no setcookie("page", "$rand");

Aparece a seguinte mensagem:

 

Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\guia_mart\sidebars\sidebar_esq.php:66) in C:\wamp\www\guia_mart\nav\paginas_visitadas.php on line 5

 

 

<?php

$pagina_atual = $topico;

if(!isset($_COOKIE['page'])){

$rand = mt_rand(0, 9999999999999999999);

setcookie("page", "$rand");

$cookie = $rand;

}else{

$cookie = $_COOKIE['page'];

}

 

$query = mysql_query("INSERT INTO paginas_visitadas (id_rand, pagina) VALUES ('$cookie', '$pagina_atual')");

?>

 

ele tah pegando o id autoincremente tudo certo, coloquei pra pega o cod da variavel $topico, mas o que faria o id_rand? porque ele nao pegou nada tah vazio no BD.

 

Muito obrigado pela ajuda Cristian ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro vamos ao erro:

 

Warning: Cannot modify header information - headers already sent by

 

Como o proprio erro diz, você já enviou o cabeçalho do site, e ele não pode ser enviado. Isso ocorre quando porque para você cadastrar um cookie, você não pode liberar nem uma saida HTML. e isso já foi feito. Por isso eu disse pra colocar na parte de cima do codigo.

 

La vai um exemplo:

 

teste1.php

Olá
<?
setcookie("page", "324234234324");// Vai dar erro
?>

 

teste2.php

<?
setcookie("page", "324234234324");// Não vai dar erro
?>
Olá

 

O rand faria que que o usuário fosse identificado. O codigo faz o seguinte. Ele verifica sé existe o cookie page caso não exista, ele o cria. depois insere no banco de dados o a pagina e o valor do cookie para que você saiba que akele usuário dakele id foi nakelas paginas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom como você me falou eu coloquei no topo da página o comando mais deu esse mesmo erro. Essa página seria a single que mostra o próprio conteudo solicitado na pagina que lista.

 

 

 

 

<?php

$pagina_atual = $topico;

if(!isset($_COOKIE['page'])){

$rand = mt_rand(0, 9999999999999999999);

setcookie("page", "$rand");

$cookie = $rand;

}else{

$cookie = $_COOKIE['page'];

}

 

$query = mysql_query("INSERT INTO paginas_visitadas (id_rand, pagina) VALUES ('$cookie', '$pagina_atual')");

?>

 

 

 

<div id="espaco_dest_categoria">

 

 

<?php

$topico = $_GET['topico'];

 

$noticias = mysql_query("SELECT thumb, titulo, texto, categoria, `data`, autor, visitas FROM up_posts WHERE id = '$topico'")

 

or die(mysql_error());

 

if(@mysql_num_rows($noticias) <= '0'){

 

echo "$info_not";

 

}else{

 

$numero = '0';

 

while($res_noticias=mysql_fetch_array($noticias)){

 

$thumb = $res_noticias[0];

 

$titulo = $res_noticias[1];

 

$texto = $res_noticias[2];

 

$categoria = $res_noticias[3];

 

$data = $res_noticias[4];

 

$autor = $res_noticias[5];

 

$visitas = $res_noticias[6];

 

$numero++;

 

 

 

$add_visita = $visitas + 1;

 

$up_visitas = mysql_query("UPDATE up_posts SET visitas = '$add_visita', data = '$data' WHERE id = '$topico'")

 

or die(mysql_error());

 

$pega_autor = mysql_query("SELECT nome FROM up_users WHERE id = '$autor'")

 

or die(mysql_error());

 

if(@mysql_num_rows($pega_autor) <= '0') echo 'Erro ao lesecionar o usuario';

 

else{

 

while($res_autor=mysql_fetch_array($pega_autor)){

 

$autor_do_post = $res_autor[0];

?>

 

 

 

<h2><?php echo $titulo;?></h2>

 

<center><img src="uploads/<?php echo $categoria; ?>/<?php echo $thumb; ?>" width="250" alt="<?php echo $titulo; ?>" /></center>

 

<div id="texto_topico"> <?php echo $texto;?></div>

<div align="right" style="margin-right:25px;"><a href="javascript:history.back()"><img src="imgs/voltar.png" /></a>

</div>

</div>

 

 

<?php

 

}

 

}

 

?>

 

<?php

 

}

 

}

 

?>

 

 

<div id="sidebar_paginas">

 

<?php include"sidebars/sidebar_dir.php";?>

 

</div><!--FIM_SIDEBAR_DIR-->

 

 

</div><!--MEIO-->

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse é o codigo completo da pagina? Por que tá faltando a conexão com o banco.

 

Outra coisa que pode estar acontecendo é que tenha algum espaço em branco antes do seu codigo começar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você tem certeza absoluta que seu codigo não tem NENHUMA saída html antes desse codigo?

 

 

 

<?php
$pagina_atual = $topico;
if(!isset($_COOKIE['page'])){
$rand = mt_rand(0, 9999999999999999999);
setcookie("page", "$rand");
$cookie = $rand;
}else{
$cookie = $_COOKIE['page'];
}
...

 

Se tiver um espaço em branco já pode ocasionar esse erro. Esse codigo deve ser colocado antes de qualquer saída pro navegador.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom mudei de lugar o código e tinha colocado no cabeçario do site, mais creio que la não funcione neh, mudei para o mesmo lugar onde estava anteriormente e funcionou porém o id_rand não pegou nada fica em branco no BD.

 

Não sei se você conseguiu entender a estrutura que eu montei, mais seria assim:

 

tenho um arquivo por exemplo ndex.php?pg=nav/servicos/esportes categoria esportes, quando você clica no itens solicitado vai para uma página chamada index.php?pg=nav/single&topico=283 que recupera o cod pela variavel $topico.

Coloquei o codigo nessa pagina.

 

Não apareceu o erro na minha máquina local porém no servidor sim se quiser da uma olhada para entender melhor

 

http://f2spropaganda.com.br/guiamart/index.php?pg=nav/single&topico=284

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça o seguinte teste: e veja se retorna algo.

<?
$pagina_atual = $_SERVER['REQUEST_URI'];
if(!isset($_COOKIE['page']{
$rand = mt_rand(0, 9999999999999999999);
setcookie("page", "$rand");
$cookie = $rand;
}else{
$cookie = $_COOKIE['page'];
}

echo "O Valor de Rand é=:".$cookie
exit();

$query = mysql_query("INSERT INTO paginas_visitadas (id_rand, pagina) VALUES ('$cookie', '$pagina_atual')");
?>

 

Outra coisa, tome cuidado seu site está vulnerável com PHP injection olhe só

 

http://f2spropaganda.com.br/guiamart/index.php?pg=pagina&topico=284

Você deve tratar desses erros urgentemente. Faça um array que verifique as paginas as quais podem ser acessadas e verifique se a $_GET['pg']; está nesse array, caso esteja inclua ela na pagina caso não esteja mostre uma pagina de erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe passei o codigo errado

 

<?
$pagina_atual = $_SERVER['REQUEST_URI'];
if(!isset($_COOKIE['page'])){
$rand = mt_rand(0, 9999999999999999999);
setcookie("page", "$rand");
$cookie = $rand;
}else{
$cookie = $_COOKIE['page'];
}

echo "O Valor de Rand é=:".$cookie
exit();

$query = mysql_query("INSERT INTO paginas_visitadas (id_rand, pagina) VALUES ('$cookie', '$pagina_atual')");
?>

 

Sobre PHP injection há MUIIITOS topicos relacionados a isso aki no forum, você devia dar uma lida, há também muitos codigos para evita-lo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.