Ga naar inhoud


bepaald IP blokeren op website.


Alventali

Aanbevolen berichten

Zoals de kop al zegt hoe een bepaald IP blokeren op onze website.

 

Htacces al geprobeerd maar dat gaat bij de webhost die we gebruiken niet.

Dan word alles geblokkeerd.

 

Het zal vast een kleinigheidje zijn om het werkend te krijgen maar ben nu al 2 dagen aan het klooien om het voor elkaar te krijgen.

Dit met het bekende IP van een goed bevriend stel van ons ( om te testen uiteraard)

Maar het IP word niet geblokt.

Onderstaand 2 php scripts die ik heb gekregen maar krijg deze niet werkend.

 

script 1

 

<?php

$banned = array("IP nummer");

If(in_array($_SERVER['REMOTE_ADDR'], $banned))

Header("HTTP/1.1 403 Forbidden");

?>

 

sript 2

 

<?php

$banned[0]="IP nummer";

If (in_array($_SERVER['REMOTE_ADDR'],$banned))

{

Header("HTTP/1.1 403 Forbidden");

Exit;

}

?>

 

Scripts schelen niet veel zit maar 1 verschil in en dat is de [0] achter banned

en de accolade's voor header en na exit

 

De site is opgebouwd met frontpage

Mijn vriendin wil dit staks uiteindelijk dreamweaver gebruiken.( zij beheerd de site)

Maar wil zich daar eerst in verdiepen en heeft nu ff de tijd niet

Groetjes Alv

Visiosat bi sat met 4 LNB's & een kabel aansluiting
VU+ Duo met 2* DVB-S2, en een Vu+ Duo2 met 2* DVB-C

Link naar reactie
Delen op andere sites


Wat gebeurt er dan precies?

Vergeet niet dat er niets, maar dan ook helemaal niets, naar de browser gestuurd mag worden voor de header. Dit kan zelfs problemen geven als je sessies gebruikt. Dus als je een header wilt sturen dan moet je er voor zorgen dat de code die dit doet het eerste is wat wordt aangeroepen.

Ik heb mij eens suf zitten zoeken in een soortgelijke situatie, toen bleek het om een spatie te gaan die ik per ongeluk voor <?php had staan....

 

Doe voor de zekerheid in je scripts eens:

 

print_r ($_SERVER);

 

Kijk dan of het IP adres inderdaad degene is die je verwacht....

 

Ik heb ook even gezocht op php.net en heb deze info gevonden: header functie werkt niet goed?

 

Suc6!

 

Big fellow

 

PS Het is een zeer slechte eigenschap om in een programmeertaal de commando's te schrijven met een Hoofdletter. Ik neem aan dat dit toeval is dat je het post met een hoofdletter aan het begin van elke regel....

“Success is not final, failure is not fatal: it is the courage to continue that counts.” ~ Winston Churchill

Link naar reactie
Delen op andere sites

Ik heb ook even zitten expirementeren met de header functie, en kwam erachter dat er met de nieuwste browsers (IE7 / FF) wat vreemde dingen gebeuren. (Of ik moet eigenlijk zeggen onverwachte dingen...)

 

Dit is mijn test code:

Code:
<?php  header("HTTP/1.1 403 Forbidden");  header("Status: 403 Forbidden");  exit;?>

 

Als ik dit aanroep vanuit firefox krijg ik een lege pagina, zonder status code enzo. Als ik dit aanroep vanuit IE7 met de "friendly error codes" (oid) aan, dan krijg ik netjes een 403 pagina. Als ik echter de "friendly error codes" uitzet, krijg ik ook een lege pagina.

 

Als ik nu voor "exit;" nog een " print "Banned!"; " zet, dan komt die tevoorschijn bij FF en bij IE als de "friendly error codes" uitstaat. Staat deze optie in IE echter aan, dan zie je de "Banned!" niet.

 

De conclusie van het verhaal:

Je moet dus een complete pagina versturen in plaats van alleen de header met status code.

 

Dit is trouwens met getest met rfc2616 optie aan en uit in php.

Misschien dat je nu verder komt <img src="/forums/images/graemlins/smile.gif" alt="" />

 

 

Big fellow

“Success is not final, failure is not fatal: it is the courage to continue that counts.” ~ Winston Churchill

Link naar reactie
Delen op andere sites

Dat de browsers deze reactie geven klopt overigens wel gewoon. IE poept nog zijn eigen foutmeldingen uit als de content minder is dan ik meen 512 bytes en FF doet dat helemaal níét. In dit geval is de content natuurlijk 0 bytes en zal IE forbidden aangeven terwijl FF een lege pagina geeft, en dit klopt. Je mag er niet op, maar de webserver geeft verder niet in een pagina aan waarom. Dus doet de browser niks of zijn eigen ding.

Na jaren zonder, ben ik toch weer van plan een schotel aan te schaffen.

Link naar reactie
Delen op andere sites

Ik neem aan dat het inderdaad klopt wat ze doen. Alleen in eerste instantie verwacht je het niet. (Misschien teveel gewend aan die status paginas die IE of een webserver genereren?)

 

Hopelijk helpt dit Alventali met z'n script <img src="/forums/images/graemlins/smile.gif" alt="" /> .

 

Big fellow

“Success is not final, failure is not fatal: it is the courage to continue that counts.” ~ Winston Churchill

Link naar reactie
Delen op andere sites

 

Nee nog niet geprobeerd.

wat werkt er niet

Het test Ip wat we gebruiken kan gewoon nog steeds op de site komen.

En ja we gebruiken hetgoede IP

Het test IP is bekend en heeft( bevriende kennis) zelf zijn IP na gekeken en zijn IP komt ook voor in onze statistieken lijst.( dus het zou het juiste Ip adress moeten zijn.)

 

Vandaag weinig tijd gehad om te stoeien met de aangeleverde materie morgen weer ff verder.

Groetjes Alv

Visiosat bi sat met 4 LNB's & een kabel aansluiting
VU+ Duo met 2* DVB-S2, en een Vu+ Duo2 met 2* DVB-C

Link naar reactie
Delen op andere sites

Maak een test script van deze code:

 

Code:
<?php$banned[0]="IP nummer"; // Hier dus je doel IP invullenif (in_array($_SERVER['REMOTE_ADDR'],$banned)){  header("HTTP/1.1 403 Forbidden");  header("Status: 403 Forbidden");  print "Banned! IP:".$_SERVER['REMOTE_ADDR'];  exit;} else {  print "<pre>\n server array:\n";  print_r ($_SERVER);  print "banned array:\n";  print_r ($banned);  print </pre>";}?>

 

Wat krijg je te zien als je dit script aanroept? (Dus alleen dit bovenstaande in je script zetten!)

 

Big fellow

“Success is not final, failure is not fatal: it is the courage to continue that counts.” ~ Winston Churchill

Link naar reactie
Delen op andere sites

Als het bovenstaande script nu wel werkt, en je eigen script niet, dan heb ik wel een vermoeden wat het probleem is...

Dan heb je waarschijnlijk dit netjes in een functie gezet. Echter de $_SERVER array is niet global. Dus dan moet je in je functie nog even " global $_SERVER; " toevoegen. (Net na de functie opening...)

Als het test script wel werkt, en jouw script niet, PM mij dan even jouw script, dan debug ik dat wel...

 

Big fellow

“Success is not final, failure is not fatal: it is the courage to continue that counts.” ~ Winston Churchill

Link naar reactie
Delen op andere sites

 

@ allen alvast hartelij dank voor de hulp tot nu toe.

Helaas kan ik er op het moment even niet mee verder.

 

Bedrijf belde vandaag dat ik morgen voor ± 2 weekjes naar Oostenrijk voor ze mag.

Stap morgen ochtend op het vliegtuig.

 

Zodra ik thuis ben en er weer verder mee kan gaan laat ik mijn bevindingen wel ff weten.

 

Nogmaals alvast bedankt tot zover.

Groetjes Alv

Visiosat bi sat met 4 LNB's & een kabel aansluiting
VU+ Duo met 2* DVB-S2, en een Vu+ Duo2 met 2* DVB-C

Link naar reactie
Delen op andere sites

Maak een account aan of log in om te reageren

Je moet een lid zijn om een reactie te kunnen achterlaten

Account aanmaken

Registreer voor een nieuwe account in onze community. Het is erg gemakkelijk!

Registreer een nieuwe account

Inloggen

Heb je reeds een account? Log hier in.

Nu inloggen
  • Wie is er online   0 leden

    • Er zijn geen geregistreerde gebruikers deze pagina aan het bekijken
×
×
  • Nieuwe aanmaken...