Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

alexbasa

Sistema de cadastro de IP

Recommended Posts

Salve a todos..

 

A muito estou apanhando em busca de uma solução e espero que possam me ajudar.

Estou precisando criar um sisteminha simples em php e mysql de cadastro de Ip e maquinas da minha rede local, para que eu possa ter um controle de ips ja utilizados, reservados, ativos e outros.

Mais como ja disse ainda estou apanhando, se alguem tiver alguma dica de como proceder agradecia muitoo, pois sou iniciante nessa area!!

 

Obrigado!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, basicamente você vai precisar de um servidor de aplicação (Apache), banco de dados MySQL e o PHP instalado, e também vai precisar ter o módulo do MySQL para PHP instalado... se estiver tudo isso então está ok.

 

você vai precisar dos comandos mysql.

 

mysql_connect("servidor","usuario","senha"); //para conectar-se ao servidor
mysql_select_db("nome_do_banco"); //para selecionar o banco
mysql_query("query sql"); //para executar comandos sql

talvez isso te ajude um pouco

 

http://www.php.net/manual/en/ref.mysql.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então amigos, de ante-mão agradeço a ajuda.

 

Eu ja tenho essas aplicações todas em minha maquina, e ja criei uma banco de dados no mysql chamado de cadastro, eu preciso agora é criar uma aplicação em php para eu poder cadastrar manualmente todos os ips da empresa que eu trabalho ex:

Maquina Ip

=========== ===============

=maquina 1= =192.168.7.250=

=========== ===============

 

Maquina Ip

=========== ===============

=servidor2= =192.168.7.254=

=========== ===============

 

Obrigado!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, você teria que fazer algo assim:

 

form_cadastro.php

<html>
<head></head>
<body>
<form name="frm" action="cadastrar.php" method="post">
<input type="text" name="txt_nome" id="txt_nome">
<input type="text" name="txt_ip" id="txt_ip">
<input type="submit">
</form>
</body>
</html>

Essa é uma página de cadstro com dois campos e um botão. você preenche no campo o ip e envia isso para outra página. Daí depois na outra página (a que está no action do form, no caso "cadastrar.php") você faz mais ou menos assim:

 

cadastrar.php

<?php
$conexao = mysql_connect("servidor","usuario","senha");
if (!$conexao){
echo "Conexão falhou";
}
else{
mysql_select_db("nome_do_banco");

$ip = $_REQUEST[txt_ip];
$nome = $_REQUEST[txt_nome];
$sql = "INSERT INTO cadastro (maquina,ip) VALUES ('$nome','$ip')";
$exec = mysql_query($sql);
if (!$exec){
echo "Dados não inseridos";
}
else{
echo "Cadastrado com sucesso <br> <a href='form_cadastro.php'>Voltar</a>";
}
}

?>

Daí é só adaptar o código do jeito que você quiser

 

Espero ter ajudado

 

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meu amigo Denis_Uyeda, você esta sim me ajudando muito, a dica foi exelente.

Criei meu banco de dados e minha apllicação em html e php, agora que ta o problema, como por exemplo eu pesquisaria o proximo ip disponivel (livre) dentro da tabela.

 

O que estou pensando:

1 - No campo Ip de rede transformar todos os numeros inseridos em binarios e tenho que colocar o delimitador, estava pensando no ponto ( 192.168.20.3) para não misturar os octetos.

2 - Transformar a mascara de rede em binario.

3 - Fazer um AND binario para saber qual o endereço de rede.

 

Agora como fazer tudo isso e ainda buscar na tabela o proximo IP livre.

 

Agradeço muito sua ajuda e se quiser me add no msn!

Compartilhar este post


Link para o post
Compartilhar em outros sites

De nada :)

 

Bom, primeiramente, para converter o valor digitado do IP para binário você pode usar essa função

 

function converterIPparaBinario($valor){
$valores = explode(".",$valor); //Separa o IP dos pontos
$resultado = "";
for ($i = 0 ; $i < count($valores) ; $i++){
	$valores[$i] = decbin($valores[$i]); //Converte o valor daquela parte do IP para binário
	if ($i < count($valores)){ //Verifica se não é o último registro para colocar o ponto
		$resultado .= $valores[$i] . '.';	
	}
	else{ //Se for o último registro, então não coloca o ponto
		$resultado .= $valores[$i];		
	}
}
return $resultado;
}

daí é só passar o ip

$ip = $_REQUEST[txt_ip];
$ipBin = converterIPparaBinario($ip);

você pode passar o valor da sua máscara de rede usando essa função também. O separador aí é o ponto

 

Só não entendi o que você quer fazer com o item 3, que é "Fazer um AND binario para saber qual o endereço de rede."

 

Para buscar o próximo IP livre você quer dizer assim... você cadastrou 192.168.0.1, 192.168.0.2 e 192.168.0.3, daí você quer que ele retorne 192.168.0.4, indicando que esse IP está livre?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para buscar o próximo IP livre você quer dizer assim... você cadastrou 192.168.0.1, 192.168.0.2 e 192.168.0.3, daí você quer que ele retorne 192.168.0.4, indicando que esse IP está livre?

 

 

Exato!!! :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, eu recomendaria você usar então um id com auto incremento na sua tabela de ips. Para cada id inserido gera-se um id novo para ele, de forma incremental.

 

daí então você pode usar essa função

 

	function retornar_ultimo_ip(){
		$sql = "SELECT MAX(id) as ultimo_id FROM tabela_ip";		
		$exec = mysql_query($sql); //Faz um consulta para verificar qual é o último id inserido
		
		$res = mysql_fetch_array($exec);
		$ultimo_id = $res[ultimo_id]; //Armazena na variável o último id inserido
		
		$sql = "SELECT ip FROM tabela_ip WHERE id = $ultimo_id";
		$exec = mysql_query($sql); //Pesquisa qual é o ip do último id inserido
		
		$res = mysql_fetch_array($exec);		
		$ultimo_ip = $res[ip]; //Armazena o último ip inserido
		
		$array_ip = explode(".",$ultimo_ip); //Separa os valores do ponto
		
		$maquina_disponivel = $array_ip[3] + 1; //Soma + 1 ao número da máquina. Ex: 192.168.0.20: Pega o 20 e soma + 1
		
		$ip_disponivel = "$array_ip[0].$array_ip[1].$array_ip[2].$array_ip[3].$maquina_disponivel"; //Cria o ip disponível
		return $ip_disponivel;	
	}

Se não entender qualquer coisa é só perguntar

 

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dee, acho que você queria dizer $_SERVER['REMOTE_ADDR']. Estou certo?

 

Sim, está.

Eu percebi isso, mas não dava tempo de editar mais, mas nem lembrei de postar corrigindo =\

Se algum modera ver, por favor edita lá.

 

Vlw.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eai pessoal,,

 

 

Primeiramente eu gostaria de agradeçer muito a ajuda de todos e principalmente a paciência, SEM PALAVRAS.

Conforme orientações criei o sisteminha de cadastro de ip mais ainda estou tendo alguma dificuldade de entender como ira funcionar, pq sou SUPER leigo nesse assunto, mais estou curtindo muito.

 

Criei em html e php o sistema de cadastro pra ter uma ideia.

 

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<title>CADASTRO DE MAQUINAS E IP COM BANCO DE DADOS E PHP</title>

<style type="text/css">

<!--

.style1 {

color: #FF0000;

font-size: x-small;

}

.style3 {color: #0000FF; font-size: x-small; }

</style>

<script type="text/javascript">

function validaCampo()

{

if(document.cadastro.maquina.value=="")

{

alert("O Campo maquina é obrigatório!");

return false;

}

else

if(document.cadastro.ip.value=="")

{

alert("O Campo ip é obrigatório!");

return false;

}

else

if(document.cadastro.mascara.value=="")

{

alert("O Campo mascara é obrigatório!");

return false;

}

<!-- Fim do JavaScript -->

</script>

</head>

<body>

<form id="cadastro" name="cadastro" method="post" action="cadastro.php" onsubmit="return validaCampo(); return false;">

<table width="625" border="0">

<tr>

<td>

<?php

include("./fuctions.php");

$conexao = mysql_connect("localhost", "teste", "senha1") or die ("Erro de conexão com banco de dados, o seguinte erro de conexao BD ocorreu -> ".mysql_error());

@mysql_select_db("cadastro",$conexao);

$query = "SELECT ip FROM maquinas ORDER BY INET_ATON(ip) ASC;";

$selecao = mysql_query($query,$conexao);

$linha = mysql_num_rows($selecao);

for ($i=0;$i<$linha;$i++){

$reg = mysql_fetch_row($selecao);

echo "$reg[0] \n <br>";

$binario=converterIPparaBinario($reg[0]);

echo "BINARIO = $binario \n<br>";

//$aux1=substr($reg[0],0,strpos($reg[0],'.'));

//$aux2=substr($reg[0],strpos($reg[0],'.')+1,strpos($reg[0],'.'));

//echo "AUX = $aux1 \n<br>";

//echo "AUX2 = $aux2 \n<br>";

 

}

?>

<br><br><br><br><br><br><br>

</td>

 

 

<tr>

<td width="32">Maquina:</td>

<td width="30"><input name="maquina" type="text" id="maquina" size="20" maxlength="20" />

<span class="style1">*</span></td>

</tr>

 

<td>Ip:</td>

<td><input name="ip" type="text" id="ip" />

<span class="style3">Apenas números</span> </td>

</tr>

 

<td>Mascara:</td>

<td><input name="mascara" type="text" id="mascara" />

<span class="style3">Apenas números</span> </td>

</tr>

<td colspan="2"><p>

<input name="cadastrar" type="submit" id="cadastrar" value="Concluir meu Cadastro!" />

 

<input name="limpar" type="reset" id="limpar" value="Limpar Campos preenchidos!" />

 

<span class="style1">* Campos com * são obrigatórios! </span></p>

<p> </p></td>

</tr>

</table>

</form>

</body>

</html>

 

Blza:

 

Agora o sistema que chama o banco de dados chamado de cadastro.php

 

<?php

$maquina= $_POST ["maquina"];

 

$ip= $_POST ["ip"];

 

$mascara= $_POST ["mascara"];

 

echo "$maquina $ip $mascara";

 

$conexao = mysql_connect("localhost", "teste", "senha1") or die ("Erro de conexão com banco de dados, o seguinte erro de conexao BD ocorreu -> ".mysql_error());

 

@mysql_select_db("cadastro",$conexao);

$query = "INSERT INTO maquinas(maquina,ip,mascara) VALUES ('$maquina', '$ip' , '$mascara');";

mysql_query($query,$conexao);

echo "Seu cadastro foi realizado com sucesso!";

?>

 

Por fim "tentei" criar uma função chamada funcions.php.

 

<?php

 

function converterIPparaBinario($valor){

$valores = explode(".",$valor); //Separa o IP dos pontos

echo "0 = $valores[0]\n<br>";

echo "1 = $valores[1]\n<br>";

echo "2 = $valores[2]\n<br>";

echo "3 = $valores[3]\n<br>";

echo "4 = $valores[4]\n<br>";

$resultado = "";

for ($i = 0 ; $i < count($valores) ; $i++){

$valores[$i] = decbin($valores[$i]); //Converte o valor daquela parte do IP para binário

if ($i < count($valores)-1){ //Verifica se não é o último registro para colocar o ponto

$resultado .= $valores[$i] . '.';

}

else{ //Se for o último registro, então não coloca o ponto

$resultado .= $valores[$i];

}

}

return $resultado;

}

?>

 

Ok.

 

Tudo aparentemente funcionando.

 

Mais minha duvida vai ser a seguinte:

Como eu poço orientar meu sistema que numa rede por exemplo de classe A eu posso ter apenas 256 Host, numa rede de classe B apenas xxx de redes no maximo, e fazer com que ele não embaralhe tudo???

Caso não entendam minha duvida fiquem a vontade!!!

 

Mais uma vez agradeço a todos em especial ao Denis_Uyeda. :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

 

Bom, nesse caso eu sugiro que você faça uma tabela pai "categoria". Nela teriam os campos id (INT PRIMARY KEY), nome (VARCHAR) e número máximo de conexões INT. Daí, você teria que criar um outro campo nessa sua tabela maquinas para referenciar a tabela "categoria"

 

Daí seria assim:

 

1- você preencheria o IP, Maquina e Máscara e no mesmo formulário indicaria de qual categoria é essa máscara

 

2- Pega qual foi a categoria

 

3- Pesquisaria o número máximo de máquinas permitidas naquela categoria

Ex:

$sql = "SELECT maximo_conexoes FROM categoria WHERE categoria = '$categoria'";
$exec = mysql_query($sql);
$res = mysql_fetch_array($exec);
$max_conexoes = $res[maximo_conexoes];

4- Antes de inserir na tabela faça um select count assim:

$sql = "SELECT COUNT(maquina) as total FROM maquinas WHERE categoria = 'categoria'";
$exec = mysql_query($sql);
$res = mysql_fetch_array($exec);
$total = $res[total];
if ($total >= $max_conexoes){
     echo "Limite máximo atingido";
}
else{
     //INSERT, etc. e tal
}

Desse modo ele verifica na sua tabela o número máximo de conexões permitidas, e se for menor do que o que já tem, então insere, caso contrário não insere.

 

Espero que tenha ficado claro ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.