Ir para conteúdo
Fórum Script Brasil
  • 0

Como criar contador clicks em php


Guilherme Francisco

Pergunta

Olá pessoal! Tudo bem? Gostaria de saber como faço para montar um contador de cliques em php?

Minha idéia é um contador que registre a quantidade de cliques que os usuários deram no link que irá levá-los a uma página que está fora do servidor do meu site. Agradeço a ajuda.

Se der para usar php e javascript também é bem aceito.

Editado por Guilherme Francisco
Link para o comentário
Compartilhar em outros sites

18 respostass a esta questão

Posts Recomendados

  • 0

É relativamente fácil...

Faça uma página de redirecionamento. Ela deve receber via GET um id da página (ou até mesmo o endereço da página).

Então, ela grava no banco de dados o acesso e redireciona.

Um exemplo de url comum...

http://www.site.com.br/parceiros.php?id=23

Ou seja, a página 'parceiros' recebe o id 23. Vai até o banco de dados, incrementa o contador de acessos, pega o endereço do site e redireciona a página.

Link para o comentário
Compartilhar em outros sites

  • 0

O host de seu site lhe fornece um banco de dados MySQL?

Se sim, basta criar uma tabela, com os seguintes campos:

ID: Um número que identifica o link

link: o endereço que será redirecionado

acessos: o número de acessos.

Todos os links devem estar 'cadastrados' nesse banco de dados.

Por exemplo... o link cujo ID é 12 é acessado pela url

http://www.site.com.br/links.php?id=12

Então, a página parceiros pega o ID via GET, faz a consulta no banco para incrementar o campo 'acessos' do ID 12, e pega a url que está no campo 'link' do ID 12.

Depois, só redirecionar para a url que foi pega no banco de dados.

Link para o comentário
Compartilhar em outros sites

  • 0

Resolvi praticar um pouco, e fiz o contador.

arquivo 'conecta_db.php'

<?php
//CONEXÃO COM O BANCO DE DADOS
//Informações de conexão ao banco de dados

$servidor = "localhost";
$user = "root";
$senha = "root";
$nome_db = "contacliques";
$nome_tabela = "links";

/************************************/

$sql = @mysql_connect($servidor, $user, $senha);
$sel_db = @mysql_select_db($nome_db);

if(!$sql){
    echo "Impossível conectar ao banco de dados.";
    exit();
}
if(!$sel_db){
    echo "Impossível selecionar o banco de dados.";
    exit();
}
?>
arquivo 'links.php'
<?php
//Conecta-se ao banco de dados
require_once("conecta_db.php");

//Pega o ID do parceiro, que esta na URL.
//Exemplo: http://www.site.com.br/links.php?id=123456
$id = $_GET['id'];
if(!isset($id)){
    echo "Erro: Impossível identificar o ID do link.";
    exit();
}

//Incrementa o número de acessos
$incrementar = @mysql_query("UPDATE `".$nome_tabela."` SET `acessos` = `acessos` + 1  WHERE `id` = '".$id."'");

//Pegar a URL que será redirecionada
$pegarURL = @mysql_query("SELECT `link` FROM `".$nome_tabela."` WHERE `id` = '".$id."'");
$url = @mysql_fetch_array($pegarURL);

if((!$incrementar) || (!$pegarURL)){
    echo "Erro nas consultas.";
    exit();
}

//Desconecta do banco de dados
mysql_close($sql);

//Redireciona
header("Location: ".$url[0]."");
?>

É mais ou menos isso ae, considerando um banco de dados chamado 'contacliques', uma tabela 'links', com os campos

id: tipo inteiro, com auto_increment

acessos: inteiro, inicializado com zero

link: endereço que será redirecionado.

Editado por mJi
Link para o comentário
Compartilhar em outros sites

  • 0

Olá, por algum motivo estranho estou tendo um problema com o header("Location: $url") quando coloco a página no servidor..... quando subo para o servidor aparece esse erro:

Warning: Cannot modify header information - headers already sent by (output started at /home/../red_link.php:5) in /home/anima204/public_html/Prop/red_link.php on line 31 - na linha 31 tem o header("Location: $url")

Link para o comentário
Compartilhar em outros sites

  • 0

Desculpe, mas andei tão focado nisso que esqueci de postar o script completo para vocês verem....

<?php header("Location: http://www.google.com.br/");  ?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

<?php
$conexao = mysql_connect('localhost','root',' ')
           or die("Não conseguiu conectar com o banco de dados");
$db = mysql_select_db('propagandas')
      or die("Erro ao selecionar o banco de dados");
      
//-- CORRIGI ERROS COM ACENTUAÇÃO --------------------------------------
header('Content-Type: text/html; charset=utf-8');
mysql_query("SET NAMES 'utf8'");
mysql_query('SET character_set_connection=utf8');
mysql_query('SET character_set_client=utf8');
mysql_query('SET character_set_results=utf8');
//-- CORRIGI ERROS COM ACENTUAÇÃO --------------------------------------
?>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv=Refresh content="10; url=http://animac.com.br" />
<title>Documento sem título</title>
</head>

<body>

<?php

$linkID = $_GET['g'];//g é o valor do id
//echo 'página de redirecionamento do link ' .$linkID;


$selecionaTab = mysql_query("SELECT * FROM listabanners WHERE id = $linkID");
if($selecionaTab == '')
{
    echo 'erro ao selecionar tabela ou tabela vazia';
}

while ($res_selecionaTab = mysql_fetch_array($selecionaTab))
{
    $id = $res_selecionaTab['id'];
    $link = trim($res_selecionaTab['urlLink']);
    $cliquesBanners = $res_selecionaTab['Cliques'] + 1;
}

//echo $id."<br />";
//echo $link."<br />";
//echo $cliquesBanners;

$atualizarTabela = mysql_query("UPDATE listabanner SET Cliques = $cliquesBanners WHERE id = $id");


?>
</body>
</html>

Bom espero que ajude. Toda a parte de conexão com o banco de dados, pegar a url através do método get, atualizar a tabela no banco de dados está funcionando....

Link para o comentário
Compartilhar em outros sites

  • 0

Porque colocaste o header n primeira linha?

Tu só saberás a url para a qual redirecionará o usuário após fazer a consulta no banco de dados.

Porque não faz 100% php?

Dá uma olhada no que eu fiz acima

Link para o comentário
Compartilhar em outros sites

  • 0

Não sei pessoal, mas eu faria algo diferente, eu contaria quantas vezes a ID da tabela foi acessada e não a URL,

toda vez que a página fosse acessada por $_GET eu pegaria essa ID e jogava na mesma tabela em uma coluna chamada counterclick,

ex:

isset($_GET['id']) {
 $id = $_GET['id'];
 //faça qualquer coisa, qualquer operação e atualiza a tabela ex:
 $update = mysql_query("update banners set COUNTERCLICK = counterclick+1 where id = $id
}

Por lógica eu faria assm.

Abs.

Link para o comentário
Compartilhar em outros sites

  • 0

Olá pessoal, problema finalmente resolvido.... o problema não estava no código...

como fique meio atribulado por causa desse problema, fui perguntar para o pessoal que hospeda o meu site, ai eles mandaram eu mexer num item de um arquivo do servidor e o resultado foi.... agora funciona...... nossa agora fiquei bravo.....

Problema: no servidor o arquivo php.ini estava com o item output_buffering = no, bastava colocar on e o infeliz passa a funcionar....

Como o pessoal decidiu me ajudar com tão boa vontade então decidi postar a solução daquele problema.

Editado por Guilherme Francisco
Link para o comentário
Compartilhar em outros sites

  • 0

Ficou bravo à toa, o problema não é no servidor e sim no seu script, o padrão do output_buffering é off mesmo, e não é à toa, isso trás um impacto para o servidor que é desnecessário. Você conseguiria o mesmo resultado com o ob_start() no script.

Link para o comentário
Compartilhar em outros sites

  • 0
Em 01/12/2011 em 18:19, mJi disse:

Resolvi praticar um pouco, e fiz o contador.

 

arquivo 'conecta_db.php'

 

 

<?php
//CONEXÃO COM O BANCO DE DADOS
//Informações de conexão ao banco de dados

$servidor = "localhost";
$user = "root";
$senha = "root";
$nome_db = "contacliques";
$nome_tabela = "links";

/************************************/

$sql = @mysql_connect($servidor, $user, $senha);
$sel_db = @mysql_select_db($nome_db);

if(!$sql){
    echo "Impossível conectar ao banco de dados.";
    exit();
}
if(!$sel_db){
    echo "Impossível selecionar o banco de dados.";
    exit();
}
?>

arquivo 'links.php'

 

<?php
//Conecta-se ao banco de dados
require_once("conecta_db.php");

//Pega o ID do parceiro, que esta na URL.
//Exemplo: http://www.site.com.br/links.php?id=123456
$id = $_GET['id'];
if(!isset($id)){
    echo "Erro: Impossível identificar o ID do link.";
    exit();
}

//Incrementa o número de acessos
$incrementar = @mysql_query("UPDATE `".$nome_tabela."` SET `acessos` = `acessos` + 1  WHERE `id` = '".$id."'");

//Pegar a URL que será redirecionada
$pegarURL = @mysql_query("SELECT `link` FROM `".$nome_tabela."` WHERE `id` = '".$id."'");
$url = @mysql_fetch_array($pegarURL);

if((!$incrementar) || (!$pegarURL)){
    echo "Erro nas consultas.";
    exit();
}

//Desconecta do banco de dados
mysql_close($sql);

//Redireciona
header("Location: ".$url[0]."");
?>

 

 

É mais ou menos isso ae, considerando um banco de dados chamado 'contacliques', uma tabela 'links', com os campos

id: tipo inteiro, com auto_increment

acessos: inteiro, inicializado com zero

link: endereço que será redirecionado.

Muito bom MJI

Eu estou aprendendo e como eu faria isso tudo em pdo?

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,2k
×
×
  • Criar Novo...