Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: Ubuntu 10.04
Por ChacalRN
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Scripts

Linux user

Publicado por Marcos Vinicius Campez em (última atualização em 02/09/2010)   [ 2828 hits ]

Login: markintux, 200158 pontos

Homepage: mvcwebsolutions.com.br   


Descrição

Script que contém uma função que retorna se o usuário acessa a sua aplicação web de modo interno ou externo a rede.

[ Download: confere_ip.php ]   [ Enviar nova versão ]

[ Esconder código-fonte ]

<?php

function ConfereIPExtInt(){
   
   $ip_server = $_SERVER['SERVER_ADDR'];
   $ip_remoto = $_SERVER['REMOTE_ADDR'];
   
   $array_ip_server = explode(".",$ip_server);
   $array_ip_remoto = explode(".",$ip_remoto);
   
   if (($array_ip_server[0] == $array_ip_remoto[0]) || ($array_ip_server[1] == $array_ip_remoto[1])){
   
      return 0; //ip interno
   
   }else{
   
      return 1; //ip externo
   
   }

   
}

//exemplo de uso da função

$var = ConfereIPExtInt();

   if ($var == 0){
   
      echo "Acesso Interno!";
   
   }else{
   
      echo "Acesso Externo!";
   
   }
   
?>

Scripts recomendados
   Script Linux recomendado Widgets intermediários em PHP-GTK
   Script Linux recomendado Converter String para Maiúsculas
   Script Linux recomendado Lista de Tarefas - Gerenciador de Projeto Simples
   Script Linux recomendado Números Primos
   Script Linux recomendado Paginação em PHP

Comentários
[1] Comentário enviado por elgio em 07/09/2010 - 20:32h:

Amigo. Este script não faz isto que dizes. O que estás "tentando fazer" (mas não fazes) é ver se o primeiro octeto do teu servidor é igual ao primeiro octeto do teu cliente e se o segundo octeto também o é. Ele considerá como sendo local se teu servidor for 10.10.7.6 e o cliente 10.10.200.1.

Para fazer isto o if teria que ser um && (AND) e não um || (OR). Como está ele irá dizer que 10.20.30.4 é da mesma rede que 200.20.3.4!!!!

Ainda teria tantas outras coisas a considerar, pois compara o primeiro e o segundo octeto não é garantia de ser da mesma rede! Sem falar que não testas o HTTP_X_FORWARDED_FOR que tem o IP privado em caso de proxy.

O script está errado (devia ser um &&) e mesmo se estiver certo, não faz o que se propõe. Para ver se é da rede interna teria que se ter a máscara de rede do servidor.

[2] Comentário enviado por markintux em 07/09/2010 - 22:53h:

elgio...

realmente a parte do OR e AND tem um erro sim, tanto que corrigi no sistema que eu o utilizo e esqueci de arrumar aqui. Me desculpe... quanto a parte do octeto e tudo mais, eu sei que não é garantia de ser da mesma rede, a mesma coisa me refiro ao HTTP_X_FORWARDED_FOR. Mas foi uma solução que eu encontrei para resolver meus problemas e por enquanto está "quebrando o galho". Caso tenha o jeito correto de se fazer acho que seria muito util então posta-lo aqui para que toda a comunidade possa experimenta-lo.

Obrigado pelo comentário.


Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.