Home
Button Mobile Webdesign em Foco
Newsletter Webdesign em Foco
Support Webdesign em Foco
Contribuition Webdesign em Foco
Doe para a Webdesign em Foco
Suporte da Webdesign em Foco
Fechar

Contador de Visitas com Validação de Usuário por IP

04/04/2018

Nessa vídeo-aula vamos aprender como fazer um contador de visitas no nosso site, verificando o IP, data e hora de acesso do usuário, evitando assim visitas repetitivas do mesmo usuário.

Para criar esse sistema vamos precisar de 3 arquivos (index.php, ClassConexao.php e ClassVisitas.php). Além disso, precisamos criar o banco de dados.

Criando banco de dados de contagem de visitas

Criaremos nosso banco de dados com 4 colunas.

CREATE TABLE 'visitas' (
  'Id' int(11) NOT NULL,
  'Ip' varchar(30) NOT NULL,
  'Data' varchar(30) NOT NULL,
  'Hora' varchar(30) NOT NULL
);
ALTER TABLE 'visitas' ADD PRIMARY KEY ('Id');
ALTER TABLE 'visitas' MODIFY 'Id' int(11) NOT NULL AUTO_INCREMENT;

Criando a conexão com o banco de dados

Para a conexão com o banco de dados mysql utilizaremos o PDO. A classe será abstract para que fique mais segura, podendo ser apenas extendida.

abstract class ClassConexao{
public function Conectar()
{
    try{
        $Con=new PDO("mysql:host=localhost;dbname=sistema","root","");
        return $Con;
    }catch (PDOException $Erro){
        return $Erro->getMessage();
    }
}
}

Criando a verificação do usuário e inserção da visita no banco

Na classe abaixo realizaremos a verificação do usuário no banco, testando primeiramente se naquela data o ip dele está inserido. Caso não esteja já faremos a inserção imediata, caso esteja faremos um segundo teste verificando se a hora atual menos a hora da última visita dele são maiores que o horário limite que desejamos (por exemplo uma hora) e caso seja maior faremos a inserção no banco.

Fazendo essas verificações evitamos que o mesmo usuário some diversas visitas de uma só vez.

include ("ClassConexao.php");
class ClassVisitas extends ClassConexao{
    private $Id, $Ip , $Data , $Hora , $Limite;

    #Construtor para setar atributos
    public function __construct()
    {
        $this->Id=0;
        $this->Ip=$_SERVER['REMOTE_ADDR'];
        $this->Data=date("Y/m/d");
        $this->Hora=date("H:i");
        $this->Limite=50;
    }

    #Verifica se o usuário recebeu visita recentemente
    public function VerificaUsuario()
    {
        $Select=$this->Conectar()->prepare("select * from visitas where Ip=:ip and Data=:datas order by Id desc");
        $Select->bindParam(":ip",$this->Ip,PDO::PARAM_STR);
        $Select->bindParam(":datas",$this->Data,PDO::PARAM_STR);
        $Select->execute();
        if($Select->rowCount() == 0){
            $this->InserindoVisitas();
        }else{
            $FSelect=$Select->fetch(PDO::FETCH_ASSOC);
            $HoraDB=strtotime($FSelect['Hora']);
            $HoraAtual=strtotime($this->Hora);
            $HoraSubtracao=$HoraAtual-$HoraDB;

            if($HoraSubtracao > $this->Limite){
                $this->InserindoVisitas();
            }
        }
        echo "

Visitantes no site: ".$Select->rowCount()."

"; } #Inseri a visita no banco de dados private function InserindoVisitas() { $Select=$this->Conectar()->prepare("insert into visitas values (:id , :ip , :datas , :hora)"); $Select->bindParam(":id",$this->Id,PDO::PARAM_STR); $Select->bindParam(":ip",$this->Ip,PDO::PARAM_STR); $Select->bindParam(":datas",$this->Data,PDO::PARAM_STR); $Select->bindParam(":hora",$this->Hora,PDO::PARAM_STR); $Select->execute(); } }
Receba as aulas da Webdesign em Foco em Seu Email
Suporte Webdesign em Foco

Posts Relacionados

Instalação e uso do Composer - PHPOO
Na vídeo-aula de hoje aprenderemos como instalar e utilizar o Composer no nosso sistema de PHP Orientado a Objetos, relacionando classes e importando classes.
Saiba mais!
Integrando site aos Correios
Nessa vídeo-aula vamos aprender como integrar nosso site com os Correios realizando a busca pelo CEP e calculando prazo e preço do frete.
Saiba mais!
PHP
PHP é uma das principais linguagens de programação utilizada nas plataformas web. Isso porque além de ser uma linguagem leve, o PHP é robusto.
Saiba mais!