-
Notifications
You must be signed in to change notification settings - Fork 5
/
ms_registraip.php
executable file
·109 lines (91 loc) · 4.58 KB
/
ms_registraip.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
<?php
/*
Com esta opção ativada, toda vez que um usuário abre o i3geo seu IP é identificado e a coordenada geográfica é pesquisada
no banco de dados pacotes/geoip/GeoLiteCity.dat. A coordenada é então registrada em um banco de dados cuja conexão é definida
na variável $conexao.
Com base nesses registros, é possível criar um tema que mostra a localização dos visitantes registrados.
Se vc não quiser que essa operação seja executada, basta comentar o código todo ou retirar o include existente em
ms_criamapa.php. Se não existir o arquivo pacotes/geoip/GeoLiteCity.dat, o programa também não funcionará.
É preciso também que exista o arquivo pacotes/geoip/GeoLiteCity.dat, que pode ser obtido em http://www.maxmind.com/
Para mostrar os visitantes, basta usar o tema temas/visitantes.map. Exemplo
http://host/i3geo/ms_criamapa.php?temasa=visitantes&layers=visitantes
Esse mapfile deve ser editado para refletir a conexão correta ao banco de dados.
Para o funcionamento correto dessa função, deve-se ter o pacote geoip instalado em i3geo/pacotes.
É necessário também alterar os parâmetros de query no banco de dados e conexão para refletir as configurações locais do banco de dados.
As informações sobre o IP do cliente são armazenados em uma tabela em seu banco de dados. Essa tabela deve ser criada e estar acessível para leitura e escrita.
Exemplo de script para criação da tabela:
CREATE TABLE visitantes_i3geo
(
gid serial NOT NULL,
latitude numeric,
longitude numeric,
n integer,
CONSTRAINT i3geo_visitantes_pkey PRIMARY KEY (gid)
)
WITHOUT OIDS;
ALTER TABLE visitantes_i3geo OWNER TO pgsql;
GRANT ALL ON TABLE visitantes_i3geo TO pgsql;
GRANT SELECT ON TABLE visitantes_i3geo TO geodados;
GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE visitantes_i3geo TO geoeditor;
COMMENT ON TABLE visitantes_i3geo IS 'Registra as coordenadas dos usuários que acessam o I3Geo. É mantido pelo i3geo/ms_criamapa.php.';
Licenca:
i3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet
Direitos Autorais Reservados (c) 2006 Ministério do Meio Ambiente Brasil
Desenvolvedor: Edmar Moretti edmar.moretti@gmail.com
Este programa é software livre; você pode redistribuí-lo
e/ou modificá-lo sob os termos da Licença Pública Geral
GNU conforme publicada pela Free Software Foundation;
Este programa é distribuído na expectativa de que seja útil,
porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita
de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA.
Consulte a Licença Pública Geral do GNU para mais detalhes.
Você deve ter recebido uma cópia da Licença Pública Geral do
GNU junto com este programa; se não, escreva para a
Free Software Foundation, Inc., no endereço
59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
Arquivo: i3geo/ms_registraip.php
*/
if (file_exists($locaplic."/pacotes/geoip") && file_exists($locaplic."/pacotes/geoip/GeoLiteCity.dat"))
{
$r["latitude"] = "";
require_once($locaplic."/classesphp/funcoes_gerais.php");
$conexao = "host=pgsql1.mma.gov.br port=5432 dbname=geodados user=pgsql password=pgsql";
//identifica o IP do usuário
$ip = pegaIPcliente();
//$ip="200.252.111.1";
$r = ip2geo($ip,$locaplic);
if($r["latitude"] == null)
{
$ip = pegaIPcliente2();
$r = ip2geo($ip);
}
//registra no banco o IP
if(($r["latitude"] != null) && ($r["latitude"] != ""))
{
$pgconn = pg_connect($conexao);
if($pgconn)
{
//
$sqlVerificaExistencia = "select * from visitantes_i3geo where latitude = ".$r["latitude"]." and longitude = ".$r["longitude"];
//
$result = pg_query($pgconn, $sqlVerificaExistencia);
$numrows = pg_num_rows($result);
if ($numrows != 0)
{
//
$sqlGravaMaisUm = "update visitantes_i3geo set n = n+1 where (latitude = ".$r["latitude"]." and longitude = ".$r["longitude"].")";
//
$result = pg_query($pgconn, $sqlGravaMaisUm);
}
else
{
//
$sqlGravaNovo = "insert into visitantes_i3geo (gid,latitude,longitude,n) values(default,".$r["latitude"].",".$r["longitude"].",1)";
//
$result = pg_query($pgconn, $sqlGravaNovo);
}
pg_close($pgconn);
}
}
}
?>