Jump to content
Fórum Script Brasil
  • 0

Como criar contador clicks em php


Guilherme Francisco

Question

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.

Edited by Guilherme Francisco
Link to comment
Share on other sites

18 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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.

Edited by mJi
Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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.

Edited by Guilherme Francisco
Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...