webForumDet fria alternativet

IP-jämförelse????

PHP

6 svar · 318 visningar · startad av prey

Medlem sedan jan. 2002341 inlägg
Frågan#1

Nån som har ett förslag på hur jag kan jämföra 15 ip-adresser med _SERVER[remote...??

Nåt sånt:

(Finns det något * (vad-som-helst)-tecken? typ 100.100.100.* eller så)?

Eller ska jag loopa if-satsen 15 gånger?
känns lite onödigt att skriva in 15 jämförelser, dessutom kan det ju vara trevligt att kunna öka på till kanske 100 (inte för att behovet finns, men ändå :) )..
Nån som har ett tips??

if ($_SERVER["REMOTE_ADDR"] == (100.100.100.1 ...-->... 100.100.100.15){
echo "hej";
} else {
echo "dö!";
}
Medlem sedan aug. 20002 975 inlägg
#2

Kanske något sådant här:

<?php

$ip = array("100.100.100.1", "100.100.100.2", "100.100.100.3", "100.100.100.4");

if (in_array($_SERVER["REMOTE_ADDR"], $ip)){
  echo "hej";
} else {
  echo "dö!";
}

?>
Medlem sedan jan. 2002341 inlägg
#3

tackar för svaret, men det blir så mkt skriva.. jag lyckades lösa det såhär:

$clientip = $_SERVER["REMOTE_ADDR"]; //Klientens IP-adress
$lanserver = $_SERVER["SERVER_ADDR"]; // t.ex: 10.0.0.1
$wanserver = $_SERVER["SERVER_NAME"]; // t.ex: www.mydomain.com
$loop = 0; //Loopens startvärde (är 0 eftersom att den räknar +1 innan någon jämförelse görs
$loopmax = 20; //Antalet "IP-slut" (10.0.0.xxx) som ska testas

$lanserv = explode(".",$lanserver);

while($loop < $loopmax){
$loop = $loop + 1;

	if($clientip == ("$lanserv[0].$lanserv[1].$lanserv[2].$loop")){
		$loop = 250;
		$var = "Hej LAN kompis! Denna sida har adressen $lanserver.";
	} else {
		$var = "Hej WAN skurk! Denna sida har adressen $wanserver.";
	}
}

echo $var;
Medlem sedan dec. 1999483 inlägg
#4

Så här slipper du loopen

$clientip = $_SERVER["REMOTE_ADDR"]; //Klientens IP-adress
$lanserver = $_SERVER["SERVER_ADDR"]; // t.ex: 10.0.0.1
$wanserver = $_SERVER["SERVER_NAME"]; // t.ex: [url]www.mydomain.com[/url]
$loopmin = 0; //Loopens startvärde (är 0 eftersom att den räknar +1 innan någon jämförelse görs
$loopmax = 20; //Antalet "IP-slut" (10.0.0.xxx) som ska testas

$lanserv = explode(".",$lanserver);
$clientip = explode(".", $clientip);

if($clientip[0] == $lanserv[0] and $clientip[1] == $lanserv[1]  and $clientip[2] == $lanserv[2] and $client[3] > $loopmin and $client[3] < $loopmax + 1) {
  $var = "Hej LAN kompis! Denna sida har adressen $lanserver.";
} else {
  $var = "Hej WAN skurk! Denna sida har adressen $wanserver.";
}
Medlem sedan jan. 2002341 inlägg
#5

hm, smart grej.. ska nog ändra på det

Medlem sedan juli 2002131 inlägg
#6

är det inte enklare och mer extensibelt om du helt enkelt lägger in de snälla ip-adresser i en databas, och sedan jämför posterna i databaserna med $_SERVER["REMOTE_ADDR"]?
om du sedan vill utöka förrådet till 100 eller 1000 ip-nummer är det bara att lägga in dessa i databasen.

Medlem sedan jan. 2002341 inlägg
#7

också ett mkt bra förslag.. ska tänka på saken

tack för alla svar!

257 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)