Jump to content


Photo

[Resolvido] Comparando Ips


  • Faça o login para participar
11 replies to this topic

#1 Eu_Nana

Eu_Nana

    12 Horas

  • Usuários
  • 291 posts
  • Sexo:Feminino
  • Localidade:SP

Posted 25/11/2009, 10:05

Olá pessoal,

Preciso fazer o seguinte......tenho uma página que só pode ser visualizada se a pessoa estiver na rede interna, possuo 5 classe de ips:

xxx.xxx.a
xxx.xxx.b
xxx.xxx.c
xxx.xxx.d
xxx.xxx.e

O que acontece.....nessa página tem uma condição se a pessoa estiver dentro dessa classe de ip (dentro da rede interna) ela consegue acessar, caso contrário ela não consegue acessar e pede uma senha.

Atualmente essa comparação esta sendo feita assim:

[codebox]
<?php

$ip=$_SERVER[REMOTE_ADDR];
$num_ip=substr($ip,0,10);

if ($num_ip == "xxx.xxx.a " || $num_ip == "xxx.xxx.b" || $num_ip == "xxx.xxx.c" || $num_ip == "xxx.xxx.d" || $num_ip == "xxx.xxx.e")
{
$redirecionar = "exemplo.php";
}

elseif ($num_ip != "xxx.xxx.a" || $num_ip != "xxx.xxx.b" || $num_ip != "xxx.xxx.c" || $num_ip != "xxx.xxx.d" || $num_ip != "xxx.xxx.e")
{

echo "Para acessar com senha clique <a href='externo.php'>::aqui::</a></p> \n";

}

?>
[/codebox]

Não quero que fique dessa maneira, quero buscar essas classes de ips dentro de uma tabela de IPs no BD, então fiz assim:

- Criei uma tabela de ips e fiz o seguinte:

[codebox]
<?php
include "include/conexao.php";

$ip=$_SERVER['REMOTE_ADDR'];
$num_ip=substr($ip,0,10);

if(isset($_POST['ips']))
{
$ips = $_POST['ips'];
$query = mysql_query("SELECT * FROM tbl_ips WHERE ips='$ips'") or die(mysql_error());
$rTestar = mysql_num_rows($query);
$row = mysql_fetch_assoc($query);

if($rTestar > '0')
{
session_register('ips');
$_SESSION['ips'] = $row['ips'];



if ($num_ip == "$ips")
{

$redirecionar = "exemplo.php";

}

elseif ($num_ip != "$ips")
{

echo "Para acessar com senha clique <a href='externo.php'>::aqui::</a></p> \n";

}
}
}
mysql_close($con);
?>

[/codebox]

Porém da forma q fiz não esta funcionando....alguém pode me ajudar com isso?

Aguardo respostas......Obrigada

#2 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 25/11/2009, 10:10

O que vem em $_POST['ips']?

Na tabela possui os IPs permitidos, certo?Até mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#3 Eu_Nana

Eu_Nana

    12 Horas

  • Usuários
  • 291 posts
  • Sexo:Feminino
  • Localidade:SP

Posted 25/11/2009, 10:13

O que vem em $_POST['ips']?

Na tabela possui os IPs permitidos, certo?


O que vem em $_POST['ips']?
Seleciono o ip do banco...errado?

sim, possui uma tabela com os ips permitidos....

#4 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 25/11/2009, 10:48

Este $_POST vem de algum formulário, é disto que estou querendo saber o que vem nele.

Até mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#5 Eu_Nana

Eu_Nana

    12 Horas

  • Usuários
  • 291 posts
  • Sexo:Feminino
  • Localidade:SP

Posted 25/11/2009, 11:27

Este $_POST vem de algum formulário, é disto que estou querendo saber o que vem nele.


Não vem de nenhum formulário...eu quero buscar ele no banco e fazer a comparação.......viajei né?

#6 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 25/11/2009, 11:45

Se é que entendi, seria algo mais ou menos assim:

$ip_user = $_SERVER['REMOTE_ADDR'];

$sql = "SELECT * FROM tbl_ips WHERE ips LIKE '{$ip_user}%'";
$query = mysql_query($sql);

if (mysql_num_rows($query) > 0) {
	$rows = mysql_fetch_array($query);
	// permitido
} else {
	// não permitido
}

[]'sAté mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#7 Eu_Nana

Eu_Nana

    12 Horas

  • Usuários
  • 291 posts
  • Sexo:Feminino
  • Localidade:SP

Posted 25/11/2009, 12:25

Se é que entendi, seria algo mais ou menos assim:

$ip_user = $_SERVER['REMOTE_ADDR'];

$sql = "SELECT * FROM tbl_ips WHERE ips LIKE '{$ip_user}%'";
$query = mysql_query($sql);

if (mysql_num_rows($query) > 0) {
	$rows = mysql_fetch_array($query);
	// permitido
} else {
	// não permitido
}

[]'s



Deu certo dessa forma porém tive que cadastrar o ip completo na tabela de ip q eu tenho........por exemplo: 150.110.25.28 cadastrei somente 150.110.25....pq são muitos micros na rede interna.......não cadastrei o ultimo nº do ip ...entendeu....?..tem como eu pegar somente esse pedaço do IP por exemplo: 150.110.25

?

#8 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 25/11/2009, 12:33

Certo. Então faça como você tinha feito, utilizando substr():

$ip_user = substr($_SERVER['REMOTE_ADDR'], 0, 10);

$sql = "SELECT * FROM tbl_ips WHERE ips = '$ip_user'";
$query = mysql_query($sql);

if (mysql_num_rows($query) > 0) {
	$rows = mysql_fetch_array($query);
	// permitido
} else {
	// não permitido
}

[]'sAté mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#9 '' sem.Ponto

'' sem.Ponto

    Super Veterano

  • Ex-Admins
  • 2098 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte

Posted 25/11/2009, 12:59

Eu acho melhor quebrar esse IP, porque pode acontecer de ter mais ou menos números. Exemplo: 189.60.2, 200.111.155, etc...

$ip_user = explode(".", $_SERVER['REMOTE_ADDR']);

// se $ip_user for 200.11.55.222

$ip1 = $ip_user[0]; // 200
$ip2 = $ip_user[0].'.'.$ip_user[1]; // 200.11
$ip3 = $ip_user[0].'.'.$ip_user[1].'.'.$ip_user[2]; // 200.11.55

(ok2)
att,
Muller Dias
ex-administrador Fórum WMO

#10 Eu_Nana

Eu_Nana

    12 Horas

  • Usuários
  • 291 posts
  • Sexo:Feminino
  • Localidade:SP

Posted 25/11/2009, 14:22

Certo. Então faça como você tinha feito, utilizando substr():

$ip_user = substr($_SERVER['REMOTE_ADDR'], 0, 10);

$sql = "SELECT * FROM tbl_ips WHERE ips = '$ip_user'";
$query = mysql_query($sql);

if (mysql_num_rows($query) > 0) {
	$rows = mysql_fetch_array($query);
	// permitido
} else {
	// não permitido
}

[]'s



Oi.....deu certo...muito obrigada

#11 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 25/11/2009, 20:44

Hmm, que tal assim:

$sql = "SELECT '{$_SERVER['REMOTE_ADDR']}' LIKE (SELECT REPLACE(ips, '*', '%') FROM tbl_ips)";
No banco de dados tu poderia cadastrar os IPs assim: 150.110.25.* :)
Ou quem sabe 150.110.*.*, se também for o caso.

[]’sAté mais

#12 Eu_Nana

Eu_Nana

    12 Horas

  • Usuários
  • 291 posts
  • Sexo:Feminino
  • Localidade:SP

Posted 26/11/2009, 06:41

Hmm, que tal assim:

$sql = "SELECT '{$_SERVER['REMOTE_ADDR']}' LIKE (SELECT REPLACE(ips, '*', '%') FROM tbl_ips)";
No banco de dados tu poderia cadastrar os IPs assim: 150.110.25.* :)
Ou quem sabe 150.110.*.*, se também for o caso.

[]’s


Deu certo ......obrigada a pelas respostas.....:)




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq