alexbasa 0 Denunciar post Postado Abril 28, 2010 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
Denis_Uyeda 0 Denunciar post Postado Abril 28, 2010 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
Dee 0 Denunciar post Postado Abril 28, 2010 Para pegar o IP é $_SERVER['REQUEST_ADDR']; $_SERVER['REMOTE_ADDR'] Compartilhar este post Link para o post Compartilhar em outros sites
alexbasa 0 Denunciar post Postado Abril 29, 2010 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
Denis_Uyeda 0 Denunciar post Postado Abril 29, 2010 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
alexbasa 0 Denunciar post Postado Abril 29, 2010 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
Denis_Uyeda 0 Denunciar post Postado Abril 29, 2010 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
André D. Molin 15 Denunciar post Postado Abril 29, 2010 Dee, acho que você queria dizer $_SERVER['REMOTE_ADDR']. Estou certo? Compartilhar este post Link para o post Compartilhar em outros sites
alexbasa 0 Denunciar post Postado Abril 29, 2010 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
Denis_Uyeda 0 Denunciar post Postado Abril 29, 2010 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 0 Denunciar post Postado Abril 30, 2010 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
alexbasa 0 Denunciar post Postado Maio 3, 2010 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
Denis_Uyeda 0 Denunciar post Postado Maio 6, 2010 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