/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Blokering af en snylter
Fra : Erik Ginnerskov


Dato : 02-03-07 17:47

Hej NG
Jeg er desværre blevet bekendt med et kursussted, som benytter mine sider
som deres undervisningsmateriale.

Jeg skal derfor have levet en blokade for deres IP (den kan jeg få
detekteret på mandag).

Jeg har tænkt mig at gøre det på den måde, at jeg på alle sider lige efter
<div id="indhold"> inkluderer et script, der tjekker brugerens IP og er det
uønsket, viderestilles til en fejlside.

Det må være noget med (pseudokode):

<?
definer et array af uønskede IP-adresser

//sammenlign brugers IP med array'et
if in array $_SERVER['REMOTE_ADDR'] {
header("Location: /fejlside.php");
exit;
}
?>

Jeg synes ikke, jeg kan finde noget brugbart i min php-bog.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
http://html-faq.dk



 
 
Bertel Lund Hansen (02-03-2007)
Kommentar
Fra : Bertel Lund Hansen


Dato : 02-03-07 18:29

Erik Ginnerskov skrev:

> Det må være noget med (pseudokode):

Følgende scriptstumper benytter jeg til en blokering. Det står i
en række af tjek, og derfor bruger jeg variablen $block som
returneres når scriptet er slut. Jeg har medtaget to af tjekkene.
Det første blokerer på hostnavn, det andet på IP-nummer.

   define ('BLACKLISTFILE', 'sortliste.dat');

Filen består af hostnavne - ét på hver linje.

Her sætter jeg et array af IP-intervaller der blokeres:

   $IP_blacklist = Array (
      //BORANET-NET-211-40, Seoul
      '211.40.0.0' => '211.40.255.255',
      // PSINET-B-9, USA
      '149.9.0.0' => '149.9.255.255',
      // PSINET-B2-35
      '154.35.0.0' => '154.35.255.255',
      // CMU-NET, USA
      '128.2.0.0' => '128.2.255.255',
   );


Indlæs hostlistefilen:

   $hostblacklist=explode("\n",file_get_contents(BLACKLISTFILE));

Tjek først om hosten er sortlistet:

   // Sortlistet host:
   if (in_array($hostname,$hostblacklist)) $block=1;

og derefter om IP-nummeret er det (der omregnes til almindelige
tal først):

   // Sortlistet IP:
   $ipint=ip2long($ip);
   foreach ($IP_blacklist as $IPmin => $IPmax)
      if ($ipint>=ip2long($IPmin) and $ipint<=ip2long($IPmax)) {
         $block=1;
         break;
      }

Jeg bruger det i en funktion der returnerer $block. Hvis den er
sat (true), spærres der for adgang.

I denne her begrænsede version kunne man vælge ikke at sætte en
variabel og returnere true med det samme man ved at der skal
blokeres, men i min funktion har jeg noget der skal udføres under
alle omstændigheder før der returneres..

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Bertel Lund Hansen (02-03-2007)
Kommentar
Fra : Bertel Lund Hansen


Dato : 02-03-07 18:42

Bertel Lund Hansen skrev:

> Følgende scriptstumper

Jeg glemte lige hvordan man aflæser IP og hostnavn:

   $ip = $_SERVER['REMOTE_ADDR'];
   $hostname = gethostbyaddr($ip);

og at man skal starte med at sætte $block til 0 hvis man bruger
den variabel.

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Erik Ginnerskov (02-03-2007)
Kommentar
Fra : Erik Ginnerskov


Dato : 02-03-07 23:25

Bertel Lund Hansen wrote:

> Følgende scriptstumper benytter jeg til en blokering. Det står i
> en række af tjek, og derfor bruger jeg variablen $block som
> returneres når scriptet er slut. Jeg har medtaget to af tjekkene.

Jeg har forsøgt at lave det efter dit forslag, men det funker ikke. Jeg har
lavet en sortliste.dat:

$IP_blacklist = Array ("xxx.xxx.xxx.xxx","yyy.yyy.yyy.yyy");

Derefter lægger jeg dette script ind på siden:

<?php
define ('BLACKLISTFILE', '../sortliste.dat');

$ip = $_SERVER['REMOTE_ADDR'];
$hostname = gethostbyaddr($ip);

//Indlæs hostlistefilen:

$hostblacklist=explode("\n",file_get_contents(BLACKLISTFILE));

if (in_array($hostname,$hostblacklist)) $block=1;


// Sortlistet IP:
$ipint=ip2long($ip);
foreach ($IP_blacklist as $IPmin => $IPmax) // linje 16 her
if ($ipint>=ip2long($IPmin) and $ipint<=ip2long($IPmax)) {
$block=1;
break;
}
?>

Det giver mig denne fejlmeddelelse:

Warning: Invalid argument supplied for foreach() in
C:\Dokumenter\html\kladde1\phpipblok.inc on line 16

Og hvordan med viderestillingen til fejlsiden, hvor skal jeg putte det ind
henne?

header("Location: http://xyz.xyz.xyz.xyz/blokeretip.asp");
exit;

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
http://html-faq.dk



Bertel Lund Hansen (03-03-2007)
Kommentar
Fra : Bertel Lund Hansen


Dato : 03-03-07 11:23

Erik Ginnerskov skrev:

> $IP_blacklist = Array ("xxx.xxx.xxx.xxx","yyy.yyy.yyy.yyy");

Det er ikke den rigtige type array. Du har lavet et array med to elementer.

Der skal bruges et associativt array, i dit tilfælde med kun ét element:

$IP_blacklist = Array ("xxx.xxx.xxx.xxx" => "yyy.yyy.yyy.yyy");

> Det giver mig denne fejlmeddelelse:

> Warning: Invalid argument supplied for foreach()

Og det skyldes at array-typen er forkert.

> Og hvordan med viderestillingen til fejlsiden, hvor skal jeg putte det ind
> henne?

Du har beholdt konstruktionen med variablen $block hvilket er
fint nok. Husker du at nulstille den før der tjekkes?

Når begge tjek er udført, tester du $block:

   if ($block) header("Location: http://xyz.xyz.xyz.xyz/blokeretip.asp");

Exit() er ikke nødvendigt, for der skiftes til en helt ny side
hvis testen er positiv.

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Erik Ginnerskov (03-03-2007)
Kommentar
Fra : Erik Ginnerskov


Dato : 03-03-07 16:25

Bertel Lund Hansen wrote:
> Erik Ginnerskov skrev:
>
>> $IP_blacklist = Array ("xxx.xxx.xxx.xxx","yyy.yyy.yyy.yyy");
>
> Det er ikke den rigtige type array. Du har lavet et array med to
> elementer.

Dit eksempel var lavet til en række ranges. Jeg nøjedes med at definere en
række enkeltstående IP'er.


> $IP_blacklist = Array ("xxx.xxx.xxx.xxx" => "yyy.yyy.yyy.yyy");

Jeg prøvede sådan, det ændrede ikke noget i den fejlmeddelelse, jeg får:

Warning: Invalid argument supplied for foreach()

> Du har beholdt konstruktionen med variablen $block hvilket er
> fint nok. Husker du at nulstille den før der tjekkes?

Min sortliste.dat nu:

$IP_blacklist = Array ("xyz.xyz.xyz.244" => "xyz.xyz.xyz.245");

Mit script ser nu sådan ud:

<?php
define ('BLACKLISTFILE', '../sortliste.dat');

$block=0;
$ip = $_SERVER['REMOTE_ADDR'];
$hostname = gethostbyaddr($ip);

//Indlæs hostlistefilen:

$hostblacklist=explode("\n",file_get_contents(BLACKLISTFILE));

if (in_array($hostname,$hostblacklist)) $block=1;

// Sortlistet IP:
$ipint=ip2long($ip);
foreach ($IP_blacklist as $IPmin => $IPmax)
if ($ipint>=ip2long($IPmin) and $ipint<=ip2long($IPmax)) {
$block=1;
break;

if ($block) header("Location: http://xyz.xyz.xyz.xyz/blokeretip.asp");
}
?>

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
http://html-faq.dk



Bertel Lund Hansen (03-03-2007)
Kommentar
Fra : Bertel Lund Hansen


Dato : 03-03-07 21:33

Erik Ginnerskov skrev:

> Min sortliste.dat nu:

> $IP_blacklist = Array ("xyz.xyz.xyz.244" => "xyz.xyz.xyz.245");

Åh. Det er forkert. Den linje skal stå i starten af PHP-delen,
altså efter <?. Den skal slet ikke stå i sortlistefilen.

Jeg har vist dig hvordan du kan tjekke på to forskellige måder på
én gang selv om du kun efterspurgte én af dem. Sortlisten skal
indeholde navne, altså f.eks. lundhansen.dk hvis du nu ville
blokere for mig og min familie.

IP-numrene læses ikke fra en fil, men står i selve PHP-filen.

Hvis du vil fjerne den ekstra tjekmulighed, kan du undvære
følgende linjer:

> define ('BLACKLISTFILE', '../sortliste.dat');
> $hostname = gethostbyaddr($ip);

> //Indlæs hostlistefilen:
> $hostblacklist=explode("\n",file_get_contents(BLACKLISTFILE));og

> if (in_array($hostname,$hostblacklist)) $block=1;

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Erik Ginnerskov (04-03-2007)
Kommentar
Fra : Erik Ginnerskov


Dato : 04-03-07 15:26

Bertel Lund Hansen wrote:

> Åh. Det er forkert. Den linje skal stå i starten af PHP-delen,
> altså efter <?. Den skal slet ikke stå i sortlistefilen.

Så slap jeg af med fejlmeddelelsen. Men der bliver ikke blokeret for noget,
selv om den ene maskines IP er skrevet ind i arrayet:

<?php
$IP_blacklist = Array ("83.73.151.244" => "83.73.151.245");

$block=0;
$ip = $_SERVER['REMOTE_ADDR'];

// Sortlistet IP:
$ipint=ip2long($ip);
foreach ($IP_blacklist as $IPmin => $IPmax)
if ($ipint>=ip2long($IPmin) and $ipint<=ip2long($IPmax)) {
$block=1;
break;

if ($block) header("Location: http://83.73.152.216/blokeretip.asp");
}
?>

Kan det tjek ikke simplificeres, pseudokode:

if in array ($IP_blacklist("$IP")) {
$block=1;

> Sortlisten skal
> indeholde navne, altså f.eks. lundhansen.dk hvis du nu ville
> blokere for mig og min familie.

Altså, hvis jeg selv hostede min private hjemmeside og ville blokere for at
der her fra huset skulle kunne læses på hjemmesideskolen, skulle
sortliste.dat indeholde en linje med teksten:

http://ginnerskov.dk eller bare ginnerskov.dk ?

> Hvis du vil fjerne den ekstra tjekmulighed, kan du undvære
> følgende linjer:

Jeg har indtil videre sat // foran de viste linjer.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
http://html-faq.dk



Bertel Lund Hansen (04-03-2007)
Kommentar
Fra : Bertel Lund Hansen


Dato : 04-03-07 15:45

Erik Ginnerskov skrev:

> Kan det tjek ikke simplificeres, pseudokode:

> if in array ($IP_blacklist("$IP")) {
> $block=1;

Jo, det kan det godt. Så skal du lave et normalt array (med
komma):

<?php
$IP_blacklist = Array ("83.73.151.244", "83.73.151.245");
$ip = $_SERVER['REMOTE_ADDR'];
if in_array ($ip,$IP_blacklist)
   header("Location: http://83.73.152.216/blokeretip.asp");
?>

Meningen med sortlisten var bare at man skulle kunne blokere på
navn ud over på IP-nummer. Den giver sådan set ikke nogen nye
muligheder hvad selve blokeringen angår.

Og fidusen med det associative array var at man skulle kunne
angive et IP-område og ikke bare et enkelt nummer. Men hvis det
kun er få numre der skal blokeres, er det ikke nødvendigt.

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Arne Feldborg (03-03-2007)
Kommentar
Fra : Arne Feldborg


Dato : 03-03-07 18:05

Bertel Lund Hansen <unospamo@lundhansen.dk> skrev Fri, 2 Mar 2007
18:28:47 +0100


>Her sætter jeg et array af IP-intervaller der blokeres:
>
>    $IP_blacklist = Array (
>       //BORANET-NET-211-40, Seoul
>       '211.40.0.0' => '211.40.255.255',
>       // PSINET-B-9, USA
>       '149.9.0.0' => '149.9.255.255',
>       // PSINET-B2-35
>       '154.35.0.0' => '154.35.255.255',
>       // CMU-NET, USA
>       '128.2.0.0' => '128.2.255.255',
>    );
>
>
Var det ikke en pudsig måde at lave et interval på.?

Begyndelsen er Nøgle og slutningen er Værdi.?



--
mvh, A:\Feldborg

Slægtsforskning og lokalhistorie i midt- vestjylland
http://hammerum-herred.dk/

Bertel Lund Hansen (03-03-2007)
Kommentar
Fra : Bertel Lund Hansen


Dato : 03-03-07 21:35

Arne Feldborg skrev:

> Var det ikke en pudsig måde at lave et interval på.?

Det kan da godt ske, men det betyder at ét element indeholder
både start og slut.

> Begyndelsen er Nøgle og slutningen er Værdi.?

Ja, og det er smart fordi jeg så kan bruge nøglen i en
foreach-løkke til noget nyttigt i stedet for at få et
rækkefølgenummer som jeg ikke kan bruge til noget.

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Arne Feldborg (04-03-2007)
Kommentar
Fra : Arne Feldborg


Dato : 04-03-07 01:07

Bertel Lund Hansen <unospamo@lundhansen.dk> skrev Sat, 3 Mar 2007
21:34:48 +0100


>> Var det ikke en pudsig måde at lave et interval på.?
>
>Det kan da godt ske, men det betyder at ét element indeholder
>både start og slut.
>
Jo, jeg kan sådan set godt se fidusen. Men det ligner nu ikke dig at
lave sådan noget klamphuggerkode.

Noget andet er så, at hele konstruktionen efter min ringe mening er for
kompliceret i forhold til det der bliver spurgt om.

--
mvh, A:\Feldborg

Slægtsforskning og lokalhistorie i midt- vestjylland
http://hammerum-herred.dk/

Leonard (02-03-2007)
Kommentar
Fra : Leonard


Dato : 02-03-07 19:17

"Erik Ginnerskov" <erik@donotspammeplease.invalid> wrote:

>Jeg synes ikke, jeg kan finde noget brugbart i min php-bog.

Kan du ikke bruge .htaccess ?

order allow,deny
allow from all
deny from 212.242.113.197
deny from 130.225.26.132

Der skal så en .htaccess i hver mappe, der skal beskyttes.

--
Leonard
http:/leonard.dk/hjemmeside/

Min nye hobby: http://oy-blu.dk/

Erik Ginnerskov (02-03-2007)
Kommentar
Fra : Erik Ginnerskov


Dato : 02-03-07 22:54

Leonard wrote:

> Kan du ikke bruge .htaccess ?
>
> order allow,deny
> allow from all
> deny from 212.242.113.197
> deny from 130.225.26.132

Jo, det kender jeg. Men det er ikke på en apache-server, det er IIS.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
http://html-faq.dk



Michael Guldhammer (03-03-2007)
Kommentar
Fra : Michael Guldhammer


Dato : 03-03-07 16:43

Hvis man skulle bruge .htaccess hvordan skulle det så laves,
og hvordan skal jeg så gøre det?

--
Mvh
Guldhammer
--
Brug for en gratis stabil email?
Nu kan du også få hosted dit eget maildomæne.
Prøv http://www.krazymail.dk
"Erik Ginnerskov" <erik@donotspammeplease.invalid> skrev i en meddelelse
news:45e89cee$0$90265$14726298@news.sunsite.dk...
> Leonard wrote:
>
>> Kan du ikke bruge .htaccess ?
>>
>> order allow,deny
>> allow from all
>> deny from 212.242.113.197
>> deny from 130.225.26.132
>
> Jo, det kender jeg. Men det er ikke på en apache-server, det er IIS.
>
> --
> Med venlig hilsen
> Erik Ginnerskov
> http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
> http://html-faq.dk
>



Erik Ginnerskov (03-03-2007)
Kommentar
Fra : Erik Ginnerskov


Dato : 03-03-07 17:05

Michael Guldhammer wrote:
> Hvis man skulle bruge .htaccess hvordan skulle det så laves,
> og hvordan skal jeg så gøre det?

Som Leonard forklarede det:

Læg i hver mappe en fil med navnet .htaccess og giv den et indhold som vist.
Tredje linje gentages det ønskede antal gange med angivelse af nyt
IP-nummer, der skal blokeres.

Eneste ulempe ved metoden er, at har man mange mapper, der skal beskyttes,
er det tilsvarende mange steder at skulle vedligeholde listen over blokerede
IP-numre.

Det jeg lige har fået lavet til asp-sider bruger en enkelt fil, der ligger i
roden på serveren og inkluderes på alle de (asp)sider, der skal være
beskyttet mod de uønskede IP-numre.

Nu skal jeg så bare have lavet noget tilsvarende til php. Slutresultatet
giver så to filer med enslydende lister over blokerede numre - filerne
ligger begge i roden på serveren.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
http://html-faq.dk



Martin Rasmussen (02-03-2007)
Kommentar
Fra : Martin Rasmussen


Dato : 02-03-07 21:08

"Erik Ginnerskov" <erik@donotspammeplease.invalid> wrote in message
news:45e85501$0$90263$14726298@news.sunsite.dk
> header("Location: /fejlside.php");

Nu er det ikke lige det, du spørger om, men vær opmærksom på, at Location
skal efterfølges af en absolut URL og ikke en relativ. Det vil sige
"http://www.ditdomæne.dk/fejlside.php" og ikke "/fejlside.php".

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.30

Kan godt være, det alligevel virker i de fleste browsere, men det skader
ikke at gøre tingene rigtigt

--
Med venlig hilsen
Martin Rasmussen


Michael Rasmussen (02-03-2007)
Kommentar
Fra : Michael Rasmussen


Dato : 02-03-07 23:49



Arne Feldborg (03-03-2007)
Kommentar
Fra : Arne Feldborg


Dato : 03-03-07 17:49

"Erik Ginnerskov" <erik@donotspammeplease.invalid> skrev Fri, 2 Mar 2007
17:46:56 +0100


>Jeg skal derfor have levet en blokade for deres IP (den kan jeg få
>detekteret på mandag).
>
Det kan gøres ganske simpelt. Det eneste der er strengt nødvendigt er
dette her:

if ( $_SERVER[REMOTE_ADDR] == '192.168.1.102') {
   exit;
}

Så kan du selv brygge videre på det, eller du kan bruge det eksempel
der blev omtalt her i gruppen for et par dage siden:

$allowed = array(
   "192.168.1.3",
   "192.168.1.254",
   "127.0.0.1",
);
if (in_array($_SERVER['REMOTE_ADDR'] , $allowed)) {
   echo "Velkommen.";
} else {
   echo "Skrid!";
   exit;
}

Bemærk dog at det er en positivliste. Hvis du skal bruge en negativliste
i stedet skal du bare ændre ifsætningen.

--
mvh, A:\Feldborg

Slægtsforskning og lokalhistorie i midt- vestjylland
http://hammerum-herred.dk/

Erik Ginnerskov (04-03-2007)
Kommentar
Fra : Erik Ginnerskov


Dato : 04-03-07 16:11

Arne Feldborg wrote:

> Det kan gøres ganske simpelt. Det eneste der er strengt nødvendigt er
> dette her:
>
> if ( $_SERVER[REMOTE_ADDR] == '192.168.1.102') {
> exit;
> }

En lille modifikation, såkørte den som forventet:

<?
if ( $_SERVER["REMOTE_ADDR"] == '83.73.151.244') {
header("Location: /blokeretip.asp");
}
?>

> eller du kan bruge det eksempel
> der blev omtalt her i gruppen for et par dage siden:
>
> $allowed = array(
> "192.168.1.3",
> "192.168.1.254",
> "127.0.0.1",
> );
> if (in_array($_SERVER['REMOTE_ADDR'] , $allowed)) {
> echo "Velkommen.";
> } else {
> echo "Skrid!";
> exit;
> }

Den huskede jeg - og ledte efter den, men kunne ikke finde den. Ellers havde
denne tråd været sparet. En lille omskrivning af den, så fungerer den som
ønsket:

<?
$disallowed = array(
"83.73.151.244",
//"192.168.1.254",
//"127.0.0.1",
);
if (in_array($_SERVER['REMOTE_ADDR'] , $disallowed)) {
header("Location: /blokeretip.php");
}
?>

Den er nem at bygge videre på, hvis jeg støder på flere, der prøver at "lave
et barn på mig". Den vil jeg holde mig til. Jeg takker.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
http://html-faq.dk



Michael Guldhammer (04-03-2007)
Kommentar
Fra : Michael Guldhammer


Dato : 04-03-07 23:53

Er der nogen som vil skrive den rigtige fulde kode, for jeg kan også godt
bruge den?


--
Mvh
Guldhammer
--
Brug for en gratis stabil email?
Nu kan du også få hosted dit eget maildomæne.
Prøv http://www.krazymail.dk
"Erik Ginnerskov" <erik@donotspammeplease.invalid> skrev i en meddelelse
news:45eae17d$0$90276$14726298@news.sunsite.dk...
> Arne Feldborg wrote:
>
>> Det kan gøres ganske simpelt. Det eneste der er strengt nødvendigt er
>> dette her:
>>
>> if ( $_SERVER[REMOTE_ADDR] == '192.168.1.102') {
>> exit;
>> }
>
> En lille modifikation, såkørte den som forventet:
>
> <?
> if ( $_SERVER["REMOTE_ADDR"] == '83.73.151.244') {
> header("Location: /blokeretip.asp");
> }
> ?>
>
>> eller du kan bruge det eksempel
>> der blev omtalt her i gruppen for et par dage siden:
>>
>> $allowed = array(
>> "192.168.1.3",
>> "192.168.1.254",
>> "127.0.0.1",
>> );
>> if (in_array($_SERVER['REMOTE_ADDR'] , $allowed)) {
>> echo "Velkommen.";
>> } else {
>> echo "Skrid!";
>> exit;
>> }
>
> Den huskede jeg - og ledte efter den, men kunne ikke finde den. Ellers
> havde denne tråd været sparet. En lille omskrivning af den, så fungerer
> den som ønsket:
>
> <?
> $disallowed = array(
> "83.73.151.244",
> //"192.168.1.254",
> //"127.0.0.1",
> );
> if (in_array($_SERVER['REMOTE_ADDR'] , $disallowed)) {
> header("Location: /blokeretip.php");
> }
> ?>
>
> Den er nem at bygge videre på, hvis jeg støder på flere, der prøver at
> "lave et barn på mig". Den vil jeg holde mig til. Jeg takker.
>
> --
> Med venlig hilsen
> Erik Ginnerskov
> http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
> http://html-faq.dk
>



Erik Ginnerskov (09-03-2007)
Kommentar
Fra : Erik Ginnerskov


Dato : 09-03-07 23:34

Michael Guldhammer wrote:
> Er der nogen som vil skrive den rigtige fulde kode, for jeg kan også
> godt bruge den?

Den var faktisk indskrevet i mit svar til Arne i søndags:

>> <?
>> $disallowed = array(
>> "xx.xx.xxx.xxx",
>> "xxx.xxx.x.xxx",
>> "xxx.x.x.x",
>> );
>> if (in_array($_SERVER['REMOTE_ADDR'] , $disallowed)) {
>> header("Location: /blokeretip.php");
>> }
>> ?>

Af private grunde har jeg bare ikke før nu haft tid til at svare.

Indsæt scriptet øverst på alle sider - eventuelt ved at lægge det i en
selvstændig fil, du så inkluderer på de sider, der skal blokeres for
uønskede IP-numre. Med en selvstændig fil har du kun et sted at skulle
vedligeholde listen over uønskede adresser.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
http://html-faq.dk



Michael Guldhammer (10-03-2007)
Kommentar
Fra : Michael Guldhammer


Dato : 10-03-07 00:04

Skal filen /blokeretip.php så indeholde alle blokerede IP adresser?


--
Mvh
Guldhammer
--
Brug for en gratis stabil email?
Nu kan du også få hosted dit eget maildomæne.
Prøv http://www.krazymail.dk
"Erik Ginnerskov" <erik@donotspammeplease.invalid> skrev i en meddelelse
news:45f1e0d0$0$90264$14726298@news.sunsite.dk...
> Michael Guldhammer wrote:
>> Er der nogen som vil skrive den rigtige fulde kode, for jeg kan også
>> godt bruge den?
>
> Den var faktisk indskrevet i mit svar til Arne i søndags:
>
>>> <?
>>> $disallowed = array(
>>> "xx.xx.xxx.xxx",
>>> "xxx.xxx.x.xxx",
>>> "xxx.x.x.x",
>>> );
>>> if (in_array($_SERVER['REMOTE_ADDR'] , $disallowed)) {
>>> header("Location: /blokeretip.php");
>>> }
>>> ?>
>
> Af private grunde har jeg bare ikke før nu haft tid til at svare.
>
> Indsæt scriptet øverst på alle sider - eventuelt ved at lægge det i en
> selvstændig fil, du så inkluderer på de sider, der skal blokeres for
> uønskede IP-numre. Med en selvstændig fil har du kun et sted at skulle
> vedligeholde listen over uønskede adresser.
>
> --
> Med venlig hilsen
> Erik Ginnerskov
> http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
> http://html-faq.dk
>



Erik Ginnerskov (10-03-2007)
Kommentar
Fra : Erik Ginnerskov


Dato : 10-03-07 00:15

Michael Guldhammer wrote:
> Skal filen /blokeretip.php så indeholde alle blokerede IP adresser?

Nej, det er en fejlside, man sendes til, hvis man ikke må se siderne, fordi
ens IP-nummer er blokeret.

De blokerede numre står i arrayet øverst i scriptet - jeg erstattede bare
tallene med en håndfuld x'er. Indsæt de uønskede IP'er i listen, sæt ""
omkring og , efter hver.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
http://html-faq.dk



Michael Guldhammer (10-03-2007)
Kommentar
Fra : Michael Guldhammer


Dato : 10-03-07 00:08

Hvad så med dette, skal det ikke med?

Hvis ja............hvordan skal det så stå, og hvor?

<?php
define ('BLACKLISTFILE', '../sortliste.dat');

$block=0;
$ip = $_SERVER['REMOTE_ADDR'];
$hostname = gethostbyaddr($ip);

//Indlæs hostlistefilen:

$hostblacklist=explode("\n",file_get_contents(BLACKLISTFILE));

if (in_array($hostname,$hostblacklist)) $block=1;

// Sortlistet IP:
$ipint=ip2long($ip);
foreach ($IP_blacklist as $IPmin => $IPmax)
if ($ipint>=ip2long($IPmin) and $ipint<=ip2long($IPmax)) {
$block=1;
break;

if ($block) header("Location: /blokeretip.php");
}
?>


--
Mvh
Guldhammer
--
Brug for en gratis stabil email?
Nu kan du også få hosted dit eget maildomæne.
Prøv http://www.krazymail.dk
"Michael Guldhammer" <mivs@krazymail.dk> skrev i en meddelelse
news:45eb4dbe$0$47929$edfadb0f@dread16.news.tele.dk...
> Er der nogen som vil skrive den rigtige fulde kode, for jeg kan også godt
> bruge den?
>
>
> --
> Mvh
> Guldhammer
> --
> Brug for en gratis stabil email?
> Nu kan du også få hosted dit eget maildomæne.
> Prøv http://www.krazymail.dk
> "Erik Ginnerskov" <erik@donotspammeplease.invalid> skrev i en meddelelse
> news:45eae17d$0$90276$14726298@news.sunsite.dk...
>> Arne Feldborg wrote:
>>
>>> Det kan gøres ganske simpelt. Det eneste der er strengt nødvendigt er
>>> dette her:
>>>
>>> if ( $_SERVER[REMOTE_ADDR] == '192.168.1.102') {
>>> exit;
>>> }
>>
>> En lille modifikation, såkørte den som forventet:
>>
>> <?
>> if ( $_SERVER["REMOTE_ADDR"] == '83.73.151.244') {
>> header("Location: /blokeretip.asp");
>> }
>> ?>
>>
>>> eller du kan bruge det eksempel
>>> der blev omtalt her i gruppen for et par dage siden:
>>>
>>> $allowed = array(
>>> "192.168.1.3",
>>> "192.168.1.254",
>>> "127.0.0.1",
>>> );
>>> if (in_array($_SERVER['REMOTE_ADDR'] , $allowed)) {
>>> echo "Velkommen.";
>>> } else {
>>> echo "Skrid!";
>>> exit;
>>> }
>>
>> Den huskede jeg - og ledte efter den, men kunne ikke finde den. Ellers
>> havde denne tråd været sparet. En lille omskrivning af den, så fungerer
>> den som ønsket:
>>
>> <?
>> $disallowed = array(
>> "83.73.151.244",
>> //"192.168.1.254",
>> //"127.0.0.1",
>> );
>> if (in_array($_SERVER['REMOTE_ADDR'] , $disallowed)) {
>> header("Location: /blokeretip.php");
>> }
>> ?>
>>
>> Den er nem at bygge videre på, hvis jeg støder på flere, der prøver at
>> "lave et barn på mig". Den vil jeg holde mig til. Jeg takker.
>>
>> --
>> Med venlig hilsen
>> Erik Ginnerskov
>> http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
>> http://html-faq.dk
>>
>
>



Søg
Reklame
Statistik
Spørgsmål : 177500
Tips : 31968
Nyheder : 719565
Indlæg : 6408514
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste