[Resolvido] Comparando Ips
#1
Posted 25/11/2009, 10:05
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
Posted 25/11/2009, 10:10
Na tabela possui os IPs permitidos, certo?Até mais
#3
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
Posted 25/11/2009, 10:48
Até mais
#5
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
Posted 25/11/2009, 11:45
$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
#7
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
Posted 25/11/2009, 12:33
$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
#9
Posted 25/11/2009, 12:59
$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
Muller Dias
ex-administrador Fórum WMO
#10
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
Posted 25/11/2009, 20:44
$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
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)