Jump to content
Carlos Web Soluções Web

Contador por IP\Valor Inicial

Recommended Posts

<?php 

 # Criando um cookie 
 setcookie(); 

 # Dados para conexão 
 $host = "localhost"; 
 $user = "usuario"; 
 $senha= "senha"; 
 $conexao = mysql_connect("$host", "$usuario", "$senha"); 
 $db = mysql_select_db("nome_da_tabela"); 
 $inserir = "INSERT INTO nome_da_tabela (campo_ip) VALUES ('$_SERVER[REMOTE_ADDR]')"; 
 $selecionar = "SELECT campo_ip FROM nome_da_tabela"; 

 # Se o IP for novo será inserido na DB 
 If ($_SERVER["REMOTE_ADDR"] != $_COOKIE["visitante"]) { 
 mysql_query ($inserir, $conexao); 
 $_SERVER["REMOTE_ADDR"] = $_COOKIE["visitante"]; 
 } 
 else { 
 echo "Obrigado por retornar ao nosso site!"; 
 } 

 # Conta visitas de IP únicos 
 $contador = mysql_query ($selecionar, $conexao); 
 $visitantes_unicos = mysql_num_rows($contador); 

 # Exibe visitas de IP únicos 
 echo "<br />Visitantes Únicos: " . $visitantes_unicos . ".<br />" . "O seu IP: " . $_SERVER["REMOTE_ADDR"] . "<br />"; // Mostra o IP 

 ?>

Preciso que o contador começe com o valor inicial de número '19.500' !

Share this post


Link to post
Share on other sites

é só somar esse número a $visitantes_unicos...

 

outra coisa: se quer apenas contar, não precisa de um SELECT buscando os dados. Basta usar SELECT COUNT(*): http://www.w3schools.com/sql/sql_func_count.asp

 

No seu if, você atribui o valor do cookie ao IP do usuário.

Deveria ser o contrário, não?

 

 

PS: funções mysql_* estão obsoletas desde o PHP 5.5 e já foram removidas no PHP 7. Prefira usar MySQLi ou PDO. Veja mais aqui: http://rberaldo.com.br/mysql-obsoleto-php/

Share this post


Link to post
Share on other sites

Tentei elabora um novo script, novo código, prefiro assim de que com cookies........pois pode estar desabilitado no navegador do usuário !

 

<?php 

 # Dados para conexão 
 $host = "host"; 
 $usuario = "usuário"; 
 $senha = "senha"; 
 $conexao = mysql_connect("$host", "$usuário", "$senha"); 
 mysql_select_db("banco_de_dados"); 


 $IP_0 = $_SERVER["REMOTE_ADDR"];
 
 $resultado = mysql_query("SELECT * FROM Visitantes");
 $linhas = mysql_num_rows($resultado);
    for($i=0; $i<$linhas; $i++){
        $registro = mysql_fetch_row($resultado);
        $IP_1 = $registro[0];
        if($IP_0 == $IP_1){
            goto a;
        } elseif($IP_0 != $IP_1) {
            $resultado = mysql_query("SELECT MAX(visitantes_total) FROM Visitantes");
            $visitates_total = mysql_result($resultado,0,0);
            $visitantes_total = $visitantes_total + 1;
            mysql_query("INSERT INTO Visitantes VALUES('$IP_0','$visitantes_total')");
            echo "<font size='3' face='Arial'><b>Visitantes: <font color='#8000FF'>$visitantes_total</font></b></font>";
            mysql_close($conexao);
            exit;
        }
    }
 
a:
            $resultado = mysql_query("SELECT MAX(visitantes_total) FROM Visitantes");
            $visitates_total = mysql_result($resultado,0,0);
            echo "<font size='3' face='Arial'><b>Visitantes: <font color='#8000FF'>$visitantes_total</font></b></font>";
 
mysql_close($conexao);
 
 ?>
O que precisa fazer funcionar é o seguinte:
Listar todo o campo 'IP' da tabela e verificar dentre os resultados se existe o IP atual do usuário ($_SERVER["REMOTE_ADDR"];).
...é o que não está funcionando, não sei como fazer !

Share this post


Link to post
Share on other sites

0baa1b9fae6aec55bbb73037f3016001-xkcd-go
Fonte: http://php.net/manual/en/control-structures.goto.php

... você até pode deixar esse "goto" aí, mas não é nada elegante...


Outro problema: você execute "SELECT MAX(visitantes_total) FROM Visitantes" diversas vezes. Se ela trará sempre os mesmos registros, por que colocar no loop? Execute uma única vez, fora do loop. Cuidado com o Problema do N+1

 

Sobre o IP, REMOTE_ADDR pode ter o valor errado, caso o servidor use proxy reverso. Use o código mostrado nesta resposta

Share this post


Link to post
Share on other sites

1-) Concertei a repetição da retirada do valor da seleção Mysql;

2-) A versão do PHP do meu servidor é '5.2.17', que ainda aceita ás versões antigas do código Mysql;

3-) O comando goto pode não ser elegante porém funciona !;

4-) Não tenho o 'Problema do Número 1' pois sempre adicionei á variáveis númericas a '$variável = $variável + 1';

5-) No meu servidor, fiz o teste da variável '$_SERVER["REMOTE_ADDR"] e funcionou corretamente;

Preciso de resposta mais concretas..........que funcionem e modifique precisamente o meu código.........porém sem cookies !

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By RodrigoWD3
      Boa tarde pessoal estou com uma dúvida, seguinte estou criando uma pagina de blog para teste de url amigável ja configurei o .htaccess  , o banco de dados , as postagem com slugs , o problema e que só consigo exibir a noticia completa quando ha uma categoria exemplo .
       
      O site exibe assim :  meusite.com.br/noticias/post-da-noticia/   
      Queria desse jeito: meusite.com.br/post-da-noticia/
       
      porem não queria exibir a categoria noticias, pois os posts vão esta na index
      vou colocar o código da index, acredito que a configuração seja nela
       
      INDEX.PHP
      <?php include "admin/conexao.php"; require_once("include/header.php"); @$url = $_GET['url']; $urlE = explode('/',$url); @$arquivo = $urlE['0']; @$post = $urlE['1']; $paginas = array('empresa','noticias','categoria','contato'); if(isset($post) && $post != ''){ include "single.php"; }elseif(isset($arquivo) && in_array($arquivo, $paginas)){ include "$arquivo.php"; }elseif(isset($arquivo) && $arquivo == ''){ include "home.php"; }else{ include "categoria.php"; } require_once("include/footer.php"); ?>  
    • By opl12
      Olá Mestres
      Podem dar uma direção?
      Estou apanhando em algo que aparentemente é fácil
      Preciso: 
                  *Tenho um Banco de Dados com as Colunas: Id, nome, password, data, nivel             ... na coluna "nivel" tem duas informações ou é "staff" ou é "operacao"               *no 1º Select ele vai validar se o usuário e a senha estão corretos conforme no Banco de Dados do PhpMyAdmin             pelas variáveis $nome e $password               *no 2º Select ele valida o nível de acesso, se é "staff" ou "operacao"             se o $nome pertencer a um "staff".. então abre o "Site A"... se pertencer a um "operacao" vai para o "Site B"  
      <!DOCTYPE html> <html lang="pt-br"> <head> <title>Comprovar Usuário</title> <meta charset="utf-8"> </head> <body> <?php try { $base=new PDO("mysql:host=localhost;dbname=painel","root",""); $base->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // ....... select para validar login e senha se estão ok $sql="SELECT * FROM login WHERE nome= :nome AND password= :password"; $resultado=$base->prepare($sql); $nome=($_POST["nome"]); $password=($_POST["password"]); $resultado->bindValue(":nome",$nome); $resultado->bindValue(":password",$password); $resultado->execute(); $numero_registro=$resultado->rowCount(); //Validar Camada de Nível $sql2="SELECT * FROM login WHERE name= :nome AND nivel = 'staff'"; $resultado2=$base2->prepare($sql2); $nome=($_POST["nome"]); $resultado2->bindValue(":nome",$nome); $resultado2->execute(); $numero_registro2=$resultado2->rowCount(); if($numero_registro!=0) { //echo "<h1>Logado com Sucesso</h1>"; ...Se Login e Senha estão ok, então abre a página session_start(); $_SESSION["usuario"] = $_POST["nome"]; header("Location:reports.php"); }else { echo "Senha incorreta, favor verificar! <br><br>"; echo '<a href="index.php">Clique aqui para tentar novamente!</a>'; //header("Location:index.php"); } }catch(Exception $e) { die("Error" . $e->getMessage()); } ?> </body> </html>  
    • By opl12
      Olá Mestres,
      Não achei um tópico com este assunto
       
      No Código abaixo, eu dou um echo e me retorna o valor de um array,
      *que é o resultado de um SELECT feito no Banco de Dados PhpMyAdmin
      *no banco tenho a tabela LOGIN, com as colunas: Nome, Password, Nivel
       
      no PHP eu carrego as variáveis $nome e $password
      com isso eu faço um select com uma condição na coluna "nivel" .. para me trazer apenas o resultado onde consta a palavra "staff" na coluna "nivel"
       
      ao dar um echo:
      echo $key.": ".$value."<br>";  
      o PHP me retorna:
      nome: jeferson
      password: 123
      nivel: staff
       
      ***a pergunta:
      Tem como eu gravar o resultado da coluna "nivel" ( que neste caso é "staff" ) em uma variável?? ao ponto de dar um echo e aparecer apenas a palavra "staff" ?
       
      Se puderem me ajudar, já agradeço
       
      <!DOCTYPE html> <html lang="pt-br"> <head> <title>Comprovar Usuário</title> <meta charset="utf-8"> </head> <body> <?php $nome = "jeferson"; $password = "123"; try { $base=new PDO("mysql:host=localhost;dbname=painel","root",""); $base->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql="SELECT nome, password, nivel FROM login WHERE nome= :nome AND password= :password"; $resultado=$base->prepare($sql); $resultado->bindValue(":nome",$nome); $resultado->bindValue(":password",$password); $resultado->execute(); $result = $resultado->fetch(PDO::FETCH_ASSOC); foreach ($result as $key => $value) { echo $key.": ".$value."<br>"; } }catch(Exception $e) { die("Error" . $e->getMessage()); } ?> </body> </html>  
       
       
       
    • By jonathasouza
      Como eu poderia colocar um botão no para setar um valor na tabela do php?
      meu codigo php abaixo, eu gostaria que ele colocasse o valor onclick $nome na parte do analista da tabela via modal.
       
       
       

          <?php
      $nome = isset($_GET["nome"])? $_GET["nome"]:null;
      $matricula = isset($_GET["matricula"])? $_GET["matricula"]:null;
      $solicitacao = isset($_GET["solicitacao"])? $_GET["solicitacao"]:null;
      $prioridade = isset($_GET["prioridade"])? $_GET["prioridade"]:null;
      $orgao = isset($_GET["orgao"])? $_GET["orgao"]:null;
      $conexao = mysqli_connect('localhost', 'root', '', 'analistas');
      $query = "SELECT `solicitacao`,`prioridade`,`orgao`, `nome` from `analistas` WHERE `analistas`";
      if (mysqli_query($conexao, $query))
          { ?>
       
       
         <?php
      $conexao = mysqli_connect('localhost', 'root', '', 'analistas');
      if(mysqli_connect_errno($conexao)){
      echo 'Failed to connecto to database'.mysqli_connect_error();}

      $query= mysqli_query($conexao, "SELECT DISTINCT `solicitacao`, `prioridade`, `orgao` FROM ordem");
      ?>
                                  <?php while($rows = mysqli_fetch_array($query)): ?>
                                  <tr>
                                      <td><?php echo $rows['solicitacao']; ?></td>
                                      <td><?php echo $rows['prioridade']; ?></td>
                                      <td></td>
                                      <td></td>
                                      <td><?php echo $rows['orgao']; ?></td>
                                      <td></td>
                                      <td></td>
                                  </tr>
                                  <?php endwhile; ?>
       
       
       <!-- Modal -->
                          <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
                              <div class="modal-dialog" role="document">
                                  <div class="modal-content">
                                      <div class="modal-header">
                                          <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                                          <h4 class="modal-title" id="myModalLabel"><strong>Solicitação</strong></h4>
                                      </div>
                                      <div class="modal-body">
                                          <div class="insertHere">
                                          </div>
                                      </div>
                                      <div class="modal-footer">
                                          <button type="button" class="btn btn-danger" data-dismiss="modal">Close</button>
                                          <button class="btn btn-success" data-dismiss="modal" value="Add Item" onClick="addRow('OrderTable')">Confirmar</button>
                                      </div>
                                  </div>
                              </div>
                          </div>
    • By drx
      Olá Pessoal!
       
      É possível editar meu código em php em qualquer página no WP ?
      E com relação à segurança no WP, qual procedimento devo realizar? Devo deletar algum arquivo dentro da instalação do WP?
      Desde já agradeço.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.