Avatar billede airforce1 Nybegynder
05. maj 2002 - 17:37 Der er 3 løsninger

Hvordan finder jeg data i en ip-række?

Hey, jeg benytter PHP/MySQL.

Jeg har en liste med ip ranges, som:

ip_id ip_start 192.168.0.200 ip_slut  192.168.0.250
ip_id ip_start 192.168.0.100 ip_slut  192.168.0.120
ip_id ip_start  80.62.160.0  ip_slut  80.62.160.255

Hvordan kan jeg finde ud af om:

$refip=$HTTP_SERVER_VARS["REMOTE_ADDR"];

ligger indenfor en af disse ip-rækker?

ip_start & ip_slut er VarCHAR(15). Er det ok?

Nogen der kan hjælpe?
Avatar billede Slettet bruger
05. maj 2002 - 17:59 #1
Prøv at kigge på BETWEEN funktionen i MySQL manualen.

Smid så en række OR sætninger ind, og tjek om forespørgslen giver noget resultat.
Avatar billede jespernaur Nybegynder
05. maj 2002 - 19:11 #2
Prøv følgende:

function ipstr2bin( $ipstr )
{
  $iparr = explode( ".", $ipstr );
  $ipbin = ($iparr[0] << 24) | ($iparr[1] << 16) |
            ($iparr[2] << 8)  |  $iparr[3];
  return $ipbin;
}

function chkiprange( $iplowstr, $iphighstr, $ipcheckstr )
{
  $iplow  = ipstr2bin( $iplowstr );
  $iphigh  = ipstr2bin( $iphighstr );
  $ipcheck = ipstr2bin( $ipcheckstr );

  return (($ipcheck >= $iplow) && ($ipcheck <= $iphigh));
}

chkiprange skal kaldes for hvert interval, du ønsker at kontrollere.

Mvh
Jesper Naur
Avatar billede tipsen Nybegynder
06. maj 2002 - 23:13 #3
$ip = $HTTP_SERVER_VARS["REMOTE_ADDR"];
$result = mysql_query("SELECT * FROM tabel WHERE $ip BETWEEN ip_start AND ip_slut");
if (mysql_num_rows($result)>0) {
  echo "ipnummeret lå i et interval!";
} else {
  echo "ipnummeret lå ikke i et interval!";
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester