Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[PHP] IP-ban adres informatie

Pagina: 1
Acties:
  • 266 views sinds 30-01-2008

  • Piet Marisael
  • Registratie: Juni 1999
  • Laatst online: 15-05-2023
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[pre]
<?php

$ipban = array();
// Vul hier de IP-adressen in die je wilt blokkeren.
// Wil je er meer dan 2 blokkeren? Typ dan onder het laatste adres gewoon het volgende: 
// $ipban[] = "Het IP adres";
// je kunt dit zo vaak herhalen als je wilt.
$ipban[] = "xx.xx.xx.xx";
$ipban[] = "xx.xx.xx.xx";

// Vanaf hier niets meer veranderen.
$ip = $_SERVER['REMOTE_ADDR'];
if ($ip = $ipban)
{
$ipadrr = $_SERVER['REMOTE_ADDR'];
echo "<center><h1>IP geweigerd!</h1><br> De webmaster heeft ervoor gekozen om jouw IP adres te blokkeren van deze site.<br>";
echo "Jouw IP adres is $ipadrr";

echo "<h5 style=display:none>";
}

?>
[/pre]

Met bovenstaande code is een IP-ban te leggen.
Graag zou ik willen weten waar de opgegeven IP-adressen blijven.
Een eenmaal opgegeven adres blijft ergens "hangen", ook als je het in de code veranderd.
Ik kom er maar niet achter waar die informatie blijft om hem ongedaan te maken.
Wie kan me verder helpen?

  • Icekiller2k6
  • Registratie: Februari 2005
  • Nu online
Sla de ipaddressen gewoon op in een mysql?

owja uw if functie is verkeerd
moet == zijn ipv =
en ipaddr heb je precies nergens gedefineerd?
dus
code:
1
2
3
4
5
6
7
8
9
10
// Vanaf hier niets meer veranderen.
$ip = $_SERVER['REMOTE_ADDR'];
if ($ip == $ipban)
{
$ipadrr = $_SERVER['REMOTE_ADDR'];
echo "<center><h1>IP geweigerd!</h1><br> De webmaster heeft ervoor gekozen om jouw IP adres te blokkeren van deze site.<br>";
echo "Jouw IP adres is $ip";

echo "<h5 style=display:none>";
}

[ Voor 108% gewijzigd door Icekiller2k6 op 21-07-2007 19:50 ]

MT Venus E 5KW (V151) P1 HomeWizard | Hackerspace Brixel te Hasselt (BE) - http://www.brixel.be | 9800X3D, 96GB DDR5 6000MHZ, NVIDIA GEFORCE 4090, ASRock X670E Steel Legend, Seasonic GX1000


  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php

$ipban = array();
// Vul hier de IP-adressen in die je wilt blokkeren.
// Wil je er meer dan 2 blokkeren? Typ dan onder het laatste adres gewoon het volgende: 
// $ipban[] = "Het IP adres";
// je kunt dit zo vaak herhalen als je wilt.
$ipban[] = "xx.xx.xx.xx";
$ipban[] = "xx.xx.xx.xx";

// Vanaf hier niets meer veranderen.
$jouwip = $_SERVER['REMOTE_ADDR'];
foreach($ipban as $ip)
{
    if ($ip == $jouwip)
    {

    echo "<center><h1>IP geweigerd!</h1><br> De webmaster heeft ervoor gekozen om jouw IP adres te blokkeren van deze site.<br>";
    echo "Jouw IP adres is " . $ip;

    exit();
    }
    
}

?>


This should do the trick

Going for adventure, lots of sun and a convertible! | GMT-8


  • Piet Marisael
  • Registratie: Juni 1999
  • Laatst online: 15-05-2023
Ik bovenstaande code op m'n site staan als zijnde ipban.php
Deze wordt in index.php aangeroepen met de code:
code:
1
<? include "ipban.php"; ?>

Op zich werkt het prima, maar ik kan nergens de IP terug vinden als die een maal is toegekend aan
code:
1
$ipban[] = "xx.xx.xx.xx";

Op de gehele host is nergens een file bijgekomen waarop ik kan uitmaken waar die informatie verscholen zit.
Zelfs als ik het IP-adres verander of wijzig, blijft een eenmaal opgegeven adres in de ban zitten.
Hoe krijg ik een eenmaal adres er nu weer uit de ban?
Die informatie moet toch ergens blijven?
Zelfs een andere computer op hetzelfde IP-adres schiet gelijk op de ban ook als de code is vanderd in een ander adres.

<edit>
Snake:

met die nieuwe code hebben dan de verwijderde adressen weer toegang?
</edit>

[ Voor 6% gewijzigd door Piet Marisael op 21-07-2007 20:03 ]


  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Piet Marisael schreef op zaterdag 21 juli 2007 @ 20:00:
Ik bovenstaande code op m'n site staan als zijnde ipban.php
Deze wordt in index.php aangeroepen met de code:
code:
1
<? include "ipban.php"; ?>

Op zich werkt het prima, maar ik kan nergens de IP terug vinden als die een maal is toegekend aan
code:
1
$ipban[] = "xx.xx.xx.xx";

Op de gehele host is nergens een file bijgekomen waarop ik kan uitmaken waar die informatie verscholen zit.
Zelfs als ik het IP-adres verander of wijzig, blijft een eenmaal opgegeven adres in de ban zitten.
Hoe krijg ik een eenmaal adres er nu weer uit de ban?
Die informatie moet toch ergens blijven?
Zelfs een andere computer op hetzelfde IP-adres schiet gelijk op de ban ook als de code is vanderd in een ander adres.
Dude, in dit documentje zet je de ip's die je wilt bannen :)
Dus die persoon die gebanned is/was, moet eens zijn cache wissen ;)

Going for adventure, lots of sun and a convertible! | GMT-8


  • Piet Marisael
  • Registratie: Juni 1999
  • Laatst online: 15-05-2023
Snake schreef op zaterdag 21 juli 2007 @ 20:03:
Dude, in dit documentje zet je de ip's die je wilt bannen :)
Dus die persoon die gebanned is/was, moet eens zijn cache wissen ;)
Nou had ik het idee dat dat al gebeurd was. :?
Maar goed, met die nieuwe code is er weer toegang voor eerdere opgegeven adressen.

Hartelijke dank voor de aanvullende informatie. :)

<edit>
het is me wat die eerste stapjes met PHP 8)7
</edit>

[ Voor 7% gewijzigd door Piet Marisael op 21-07-2007 20:15 ]


  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Piet Marisael schreef op zaterdag 21 juli 2007 @ 20:11:
[...]

Nou had ik het idee dat dat al gebeurd was. :?
Maar goed, met die nieuwe code is er weer toegang voor eerdere opgegeven adressen.

Hartelijke dank voor de aanvullende informatie. :)

<edit>
het is me wat die eerste stapjes met PHP 8)7
</edit>
offtopic:
Msn staat in m'n profiel ;) je kan mij altijd adden

Going for adventure, lots of sun and a convertible! | GMT-8


Verwijderd

Snake schreef op zaterdag 21 juli 2007 @ 19:56:
PHP:
1
2
3
4
foreach($ipban as $ip)
{
    if ($ip == $jouwip)
    {
Waarom door alle ip's loopen als je ook kan zoeken in een array?

PHP:
1
if (in_array($jouwip, $ipban)) ......

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 13:11
Klopt weinig van die code.
PHP:
1
if ($ip = $ipban)

Dit is een expressie, geen statement. De waarde van $ipban wordt in $ip gezet, en het if-statement zal altijd true geven, en uitvoeren. Gebruik een dubbele = voor een vergelijking.
Echter, $ipban is een array. Om te controleren of de waarde $ip wel of niet in die array zit gebruik je de functie in_array()
PHP:
1
if (in_array($ip, $ipban))


Met de code die je liet zien had niemand toegang, aangezien de if altijd naar true evalueert. Dat gaf je misschien het gevoel dat je bans niet ongedaan kon maken, maar feitelijk was gewoon iedereen altijd gebanned.

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Verwijderd schreef op zaterdag 21 juli 2007 @ 20:20:
[...]

Waarom door alle ip's loopen als je ook kan zoeken in een array?

PHP:
1
if (in_array($jouwip, $ipban)) ......
Misschien omdat mijn mogelijkheid ook werkt, en aangezien deze code toch zal vertaald worden in iets gelijk die van mij...

Going for adventure, lots of sun and a convertible! | GMT-8


  • Piet Marisael
  • Registratie: Juni 1999
  • Laatst online: 15-05-2023
frickY schreef op zaterdag 21 juli 2007 @ 20:20:
Klopt weinig van die code.
PHP:
1
if ($ip = $ipban)

Dit is een expressie, geen statement. De waarde van $ipban wordt in $ip gezet, en het if-statement zal altijd true geven, en uitvoeren. Gebruik een dubbele = voor een vergelijking.
Echter, $ipban is een array. Om te controleren of de waarde $ip wel of niet in die array zit gebruik je de functie in_array()
PHP:
1
if (in_array($ip, $ipban))


Met de code die je liet zien had niemand toegang, aangezien de if altijd naar true evalueert. Dat gaf je misschien het gevoel dat je bans niet ongedaan kon maken, maar feitelijk was gewoon iedereen altijd gebanned.
Ik probeer het allemaal te begrijpen op m'n eerste dag PHP.
Dus als ik het goed begrijp mag ik nu

PHP:
1
if ($ip == $jouwip)

veranderen in:
PHP:
1
if (in_array($ip, $ipban))


of dwaal ik nu af in alle informatie?

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Snake schreef op zaterdag 21 juli 2007 @ 20:22:
[...]
Misschien omdat mijn mogelijkheid ook werkt, en aangezien deze code toch zal vertaald worden in iets gelijk die van mij...
Waarom foreach gebruiken als je met while of for ook door een array kunt lopen? Door de functies te gebruiken waar ze voor bedoeld zijn, wordt je code leesbaarder. In één oogopslag zie je wat er met in_array gebeurt, terwijl dat een foreach met if net iets meer tijd kost.

  • Piet Marisael
  • Registratie: Juni 1999
  • Laatst online: 15-05-2023
Op een dag ga ik het helemaal begrijpen.
Ondertussen probeer ik voorzichtig te leren hoe die PHP-code in elkaar steekt.
Komende week eerst maar eens een boek op de kop zien te tikken waardoor het me duidelijker kan gaan worden.

<edit>
Nog een tip voor een aardige handleiding "Programeren in PHP voor beginners"?
Hoef ik niet voor elk akkefietje iets te vragen.
</edit>

[ Voor 24% gewijzigd door Piet Marisael op 21-07-2007 21:15 ]


  • Gwaihir
  • Registratie: December 2002
  • Niet online
Programming FAQ - PHP

Staan wel een paar aardige boek-tips in. :)

[ Voor 33% gewijzigd door Gwaihir op 21-07-2007 22:15 ]


  • Piet Marisael
  • Registratie: Juni 1999
  • Laatst online: 15-05-2023
Ik heb inmiddels begrepen dat::

PHP:
1
2
    echo "<center><h1>IP geweigerd!</h1><br> De webmaster heeft ervoor gekozen om jouw IP adres te blokkeren van deze site.<br>"; 
    echo "Jouw IP adres is " . $ip;


ook mag veranderen in:

PHP:
1
header("Location: http://www.example.com/");


om zodoende de gebande op een nette manier buiten te zetten.

<edit>
een aardige manier is gevonden door de pagina te handhaven in de betreffende frame.
</edit>

[ Voor 35% gewijzigd door Piet Marisael op 22-07-2007 10:15 ]


  • Piet Marisael
  • Registratie: Juni 1999
  • Laatst online: 15-05-2023
PHP:
1
$_SERVER['REMOTE_ADDR']

dit commando geeft dus alleen het IP-adres weer.

Met welke commando's kan ik nu andere gegevens oproepen?

Ik kijk bijv. naar http://cqcounter.com/whois/
Daar is meer informatie terug te vinden, met name het gedeelte boven de wereldbol.

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 13:11
Piet Marisael schreef op zaterdag 21 juli 2007 @ 20:29:
Ik probeer het allemaal te begrijpen op m'n eerste dag PHP.
Dus als ik het goed begrijp mag ik nu

PHP:
1
if ($ip == $jouwip)

veranderen in:
PHP:
1
if (in_array($ip, $ipban))


of dwaal ik nu af in alle informatie?
Dat klopt. Met de in_array controleer je of het IP van de gebruiker in jouw array met gebande IP-adressen voorkomt. Zoja, geeft de functie een true, en wordt de code in de if uitgevoerd.
Piet Marisael schreef op zondag 22 juli 2007 @ 09:17:
PHP:
1
header("Location: http://www.example.com/");

om zodoende de gebande op een nette manier buiten te zetten.
Hiermee verstuur je een HTTP-header naar de browser. Let op, je script uitvoer gaat hierna gewoon door (!). Om script uitvoer ook af te breken kun je na een header("Location: ..") het best altijd een exit() aanroepen;
PHP:
1
2
header("Location: http://www.example.com/"); 
exit();


Zo voorkom je dat je overige code wordt uitgevoerd, en de gebruiker (met een omwegje) toch nog de rest van de pagina kan zien en gebruiken.
Piet Marisael schreef op zondag 22 juli 2007 @ 11:56:
PHP:
1
$_SERVER['REMOTE_ADDR']

dit commando geeft dus alleen het IP-adres weer.

Met welke commando's kan ik nu andere gegevens oproepen?

Ik kijk bijv. naar http://cqcounter.com/whois/
Daar is meer informatie terug te vinden, met name het gedeelte boven de wereldbol.
De $_SERVER-array wordt automatisch aangemaakt, en bevat allerhande informatie over de bezoeker, de pagina, en de server. De PHP-functie print_r() kan alle informatie binnen een array weergeven. Doe eens;

PHP:
1
2
3
echo "<pre>";
print_r($_SERVER);
echo "</pre>";


Dan zie je welke informatie je tot je beschikking hebt.
Om de hostname bij een IP-adres op te halen kun je gethostbyaddr() gebruiken.
Dingen als naam van provider, en locaties, komen vanaf RIPE.

Verwijderd

Dit is een stuk sneller:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$ipban = array();
$ipban['xxx.xxx.xxx.xxx'] = true;
$ipban['xxx.xxx.xxx.xxx'] = true;
$ipban['xxx.xxx.xxx.xxx'] = true;
$ipban['xxx.xxx.xxx.xxx'] = true;

// Vanaf hier niets meer veranderen.
if(isset($ipban[$_SERVER['REMOTE_ADDR']))
{
   echo 'Jouw IP is geblokkeert!';
}
?>

Verwijderd

Verwijderd schreef op zondag 22 juli 2007 @ 12:22:

echo 'Jouw IP is geblokkeert!';
geblokkeerd :)

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
We doen in PRG sowieso niet aan support op scripts van derden ;) Daarvoor mag je de maker(s) mailen. Verder is dit nogal basic en zijn er 1001 manieren (al dan niet sneller/beter) om een IP te 'bannen'.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1

Dit topic is gesloten.