WebSite --> Bloquear acesso a ips internacionais

É só pensares um pouco e não andares a fazer copy paste...
mysql_num_rows indica o numero de resultados obtidos, ora bem, se não existe nenhum resultado, vai dar 0, que é o que se pretende.
Ou tens isso mal na base de dados ou nem sequer o teu ip esta abrangido nas gamas de ips inseridas... Que foi um problema que já te tinha dito.


Sim tens razão secalhar o melhor mesmo é ter algum script que me identifique o país do utilizador e bloqueie todos que não forem de Portugal.

A questão é, isto existe? :confused:
 
É provável que sim, pagos pelo menos... Mas uma busca pelo Ripe e já está. Mas tens de usar sempre um base de dados...
Só colocaste os estrangeiros ou só os pt? ou todos?
 
É provável que sim, pagos pelo menos... Mas uma busca pelo Ripe e já está. Mas tens de usar sempre um base de dados...
Só colocaste os estrangeiros ou só os pt? ou todos?

Fiz como o m.costa disse. Meti primariamente todos através do ficheiro disponibilizado pelo o mesmo e depois eliminei tudo o que não fosse PT.

Meti a condição lá no meu site e se tiver == 0 eu consigo aceder, alias todos conseguem, se tiver == 1 diz que eu não estou em Portugal.
 
Eu nao sei se tou a ver mal mas esta linha de condigo
$xResult = mysql_query("SELECT * FROM Block_Ips WHERE IP <= '$ipUserX' AND IP2 >= '$ipUserX'")or die(mysql_error());

não esta em consonância com a estrutura da tabela.

as duas primeiras colunas não sao ip_inicio ip_fim???

aliás no teu caso podes fazer
Código:
if (mysql_query("SELECT * FROM Block_Ips WHERE IP < '".$ipUserX."' AND IP2 > '".$ipUserX."';"))
   exit("not permited");

PS: Habitua-te a meter as variaveis fora das strings.
 
Última edição:
Eu nao sei se tou a ver mal mas esta linha de condigo
$xResult = mysql_query("SELECT * FROM Block_Ips WHERE IP <= '$ipUserX' AND IP2 >= '$ipUserX'")or die(mysql_error());

não esta em consonância com a estrutura da tabela.

as duas primeiras colunas não sao ip_inicio ip_fim???

aliás no teu caso podes fazer
Código:
if (mysql_query("SELECT * FROM Block_Ips WHERE IP < '".$ipUserX."' AND IP2 > '".$ipUserX."';"))
   exit("not permited");
PS: Habitua-te a meter as variaveis fora das strings.


Na minha tabela pus:

IP int(11)

Não

http://www.bt-revolution.net:2082/3...structure.php&back=tbl_structure.php&field=IP http://www.bt-revolution.net:2082/3...urgekey=IP&zero_rows=O+campo+IP+foi+eliminado http://www.bt-revolution.net:2082/3...o_rows=Uma+chave+primária+foi+adicionada+a+IP http://www.bt-revolution.net:2082/3...`IP`)&zero_rows=Um+índice+foi+adicionado+a+IP http://www.bt-revolution.net:2082/3...`IP`)&zero_rows=Um+índice+foi+adicionado+a+IP IP2 int(11)

Não

http://www.bt-revolution.net:2082/3...tructure.php&back=tbl_structure.php&field=IP2 http://www.bt-revolution.net:2082/3..._rows=Uma+chave+primária+foi+adicionada+a+IP2 http://www.bt-revolution.net:2082/3...P2`)&zero_rows=Um+índice+foi+adicionado+a+IP2 http://www.bt-revolution.net:2082/3...P2`)&zero_rows=Um+índice+foi+adicionado+a+IP2 P1 varchar(100) latin1_swedish_ci
Não

http://www.bt-revolution.net:2082/3...structure.php&back=tbl_structure.php&field=P1 http://www.bt-revolution.net:2082/3...urgekey=P1&zero_rows=O+campo+P1+foi+eliminado http://www.bt-revolution.net:2082/3...o_rows=Uma+chave+primária+foi+adicionada+a+P1 http://www.bt-revolution.net:2082/3...`P1`)&zero_rows=Um+índice+foi+adicionado+a+P1 http://www.bt-revolution.net:2082/3...`P1`)&zero_rows=Um+índice+foi+adicionado+a+P1 http://www.bt-revolution.net:2082/3...`P1`)&zero_rows=Um+índice+foi+adicionado+a+P1 P2 varchar(100) latin1_swedish_ci
Não

http://www.bt-revolution.net:2082/3...o_rows=Uma+chave+primária+foi+adicionada+a+P2 http://www.bt-revolution.net:2082/3...`P2`)&zero_rows=Um+índice+foi+adicionado+a+P2 http://www.bt-revolution.net:2082/3...`P2`)&zero_rows=Um+índice+foi+adicionado+a+P2 http://www.bt-revolution.net:2082/3...`P2`)&zero_rows=Um+índice+foi+adicionado+a+P2 P3
Que é exactamente igual. No entanto vou tentar o recomendas-te. ;)

Thanks
 
Tipo se eu meter zero diz que EU não estou em portugal

Meti a condição lá no meu site e se tiver == 0 eu consigo aceder

Então, qual das duas e' afinal ?

O caso e' simples:
- segundo o tipo de procedimento que estamos a implementar, é == 0
- qt ao teu IP não estar nos ranges é dificil, visto que o .csv foi actualizado no inicio deste mês
- é mais provável que seja um problema de código

http://s36068.gridserver.com/ip.php -> Neste link diz que és de portugal ou não ?
O código que la' esta' e' exactamente o mesmo que transmiti:
Código:
// ligar 'a bd

$ipl = ip2long($_SERVER['REMOTE_ADDR']);

$loc = mysql_query('SELECT * FROM ips_pt WHERE IP1<='.$ipl.' AND IP2>='.$ipl);

if (mysql_num_rows($loc) == 0) echo "Não és de Portugal"; else echo "Es de portugal";

Aqui funciona
 
Então, qual das duas e' afinal ?

O caso e' simples:
- segundo o tipo de procedimento que estamos a implementar, é == 0
- qt ao teu IP não estar nos ranges é dificil, visto que o .csv foi actualizado no inicio deste mês
- é mais provável que seja um problema de código

http://s36068.gridserver.com/ip.php -> Neste link diz que és de portugal ou não ?
O código que la' esta' e' exactamente o mesmo que transmiti:
Código:
// ligar 'a bd

$ipl = ip2long($_SERVER['REMOTE_ADDR']);

$loc = mysql_query('SELECT * FROM ips_pt WHERE IP1<='.$ipl.' AND IP2>='.$ipl);

if (mysql_num_rows($loc) == 0) echo "Não és de Portugal"; else echo "Es de portugal";
Aqui funciona



Eu devo ter qualquer coisa mal. Pois nesse teu teste diz que eu sou de Portugal, mas se meter no meu servidor, diz que não sou de Portugal.

Agora estou oficialmente confuso -.-'


O que fiz mal ? :confused:
 
Cria uma nova página só com isto:

Código:
$ipl = ip2long($_SERVER['REMOTE_ADDR']);
echo $ipl;

E mete aqui o valor que aparece.
 
Pah eu alterei o código do ip.php para

Código:
$ipl = 1486745683;

$loc = mysql_query('SELECT * FROM ips_pt WHERE IP1<='.$ipl.' AND IP2>='.$ipl);

if (mysql_num_rows($loc) == 0) echo "Não és de Portugal"; else echo "Es de portugal";

E como podes ver acusa como sendo português.

Não sei, tens com certeza um erro qualquer no teu código. Tenta copiar e colar o meu e começar a partir daí ;)
 
Agora apareceu isto: Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/opnsourc/public_html/teste.php on line 16
Não és de Portugal

Acho que é mesmo problema na BD.
 
Uhm... Isso normalmente significa que a tua query não esta' bem construida ... De certeza que tens o IP a ser correctamente incluido na query, e tudo direito ?

Cola ai' as partes do código com o IP e com a query.
 
Uhm... Isso normalmente significa que a tua query não esta' bem construida ... De certeza que tens o IP a ser correctamente incluido na query, e tudo direito ?

Cola ai' as partes do código com o IP e com a query.


Já funciona :D

Tipo apaguei a tabela toda outravez, fiz de novo com os campos e valores que o m.costa tinha sugerido aqui e já está a funcionar.

Pelo menos já diz que sou de Portugal, agora vou ver se funciona com pessoal fora de Portugal.


Muito obrigado m.costa pela tua atenção!

Abraço fica bem.
 
m.costa: Funcionar até que funciona, pedi amigos que estão fora de pt para ir ver o site e de facto bloqueia. Alias eu mesmo através de Webproxys vi que bloqueava também.

O problema é que tenho outras pessoas como por exemplo clientes da novis que não conseguem ver o site e estão em Portugal!
 
De qualquer maneira inclui' o nome de quem controla cada range, por isso apagar especificas não e' problema ;)

CSV com ranges nacionais (as per tvcabo) - http://pwp.netcabo.pt/0415482501/ips_nacionais.csv

@Lavigne: limpa a tabela dos IPs e importa os do .csv , em principio todos os portugueses estão agora incluidos (e segundo o anjo2 talvez alguns de fora, e' uma questão de os apagar pelo phpMyAdmin caso seja mesmo necessário).

código para quem quiser - http://pwp.netcabo.pt/0415482501/ips_nacionais.html
 
De qualquer maneira inclui' o nome de quem controla cada range, por isso apagar especificas não e' problema ;)

CSV com ranges nacionais (as per tvcabo) - http://pwp.netcabo.pt/0415482501/ips_nacionais.csv

@Lavigne: limpa a tabela dos IPs e importa os do .csv , em principio todos os portugueses estão agora incluidos (e segundo o anjo2 talvez alguns de fora, e' uma questão de os apagar pelo phpMyAdmin caso seja mesmo necessário).

código para quem quiser - http://pwp.netcabo.pt/0415482501/ips_nacionais.html

Tipo importei mas não limpei a tabela meti substituir por... agora estão lá esses e os antigos.

Não fiz mal pois não? Fico é com a tabela com mais ranges do que preciso, mas são todos portugueses... certo?

Ainda não testei com aquele meu amigo da novis, quando testar meto venho aqui a dizer se está a funcionar ;)

Com webproxys testei e deu ...


cump's
 
Eu tive ajudar, mas nao consigo perceber a logica de bloquear IPs nao portugueses.

Caso nao saibas o IPv4 (o q usamos hoje em dia) esta a ficar saturado, e algumas vezes existem acordos para usarem IPs de outros fornecedores, fazendo com q esse IP range esteja sempre a ser actualizado.

Faz algo mais simples, metes uma pergunta no inicio se é portugues :)
 
Back
Topo