Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
<?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' !
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 !
/applications/core/interface/imageproxy/imageproxy.php?img=http://php.net/manual/en/images/0baa1b9fae6aec55bbb73037f3016001-xkcd-goto.png&key=76222b9e3beda0b320a907efe6de16595d149469154f040f9cf97b134b4c689c" alt="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
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 !
é 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/