Ban IP op tijd

Door Script0x , 13 jaar geleden, 6.337x bekeken

Met dit script kun je mensen verbannen tot aan een datum. Je bepaalt zelf de reden en tot wanneer persoon X verbannen is.

Overigens wordt niet gechecked op lege velden, etc, omdat ik er van uit ga dat als een veld leeg blijft, de webmaster daar een reden voor heeft. Dat geldt bijvoorbeeld ook bij het verwijderen van een ipadres... je zou met de $_GET kunnen gaan fucken, maar het lijkt mij wel zo logisch om als webmaster niet je database te gaan verneuqen.

Gesponsorde koppelingen

PHP script bestanden

  1. ban-ip-op-tijd

 

Er zijn 18 reacties op 'Ban ip op tijd'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
- -
- -
13 jaar geleden
 
0 +1 -0 -1
Verwijderen.inc.php kan korter, kijk of het ctype_digit is :)
PHP Newbie
PHP Newbie
13 jaar geleden
 
0 +1 -0 -1
Quote:
`tijd` int(25) NOT NULL,


Dat hoort natuurlijk niet. Je maakt gewoon een datetime veld aan in je database en daarin zet je tot wanneer iemand geband is. Vervolgens kun je met een simpele select (SELECT reden FROM ipban WHERE ip = 1.2.3.4 AND tijd < NOW()) controleren of iemand gebanned is.
Douwe
Douwe
13 jaar geleden
 
0 +1 -0 -1
(Hey, I think I know you ;))
Maarja, puntjes:
'Gelieve de onderstaande gegevens te veranderen a.u.b.' is dubbelop.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$rest = $tijd - $nu;
if ($rest > '0')

$rest resulteert in een integer, geen string, geen ' om de 0 heen dus.
In
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
echo "<center><p>Het ip-adres (". $ip .") is met succes verbannen!</p></center>";

htmlspecialchars() je het IP niet, HTML kan dus worden 'uitgevoerd'.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
if (isset($_GET['verwijderen']))
{
    $verwijderen  =   mysql_real_escape_string(trim($_GET['verwijderen']));
    $query['delete']['ipban']   =   mysql_query("DELETE FROM ipban WHERE id = '". $verwijderen ."' LIMIT 1") or die(mysql_error());
    echo "<center><p>Dit ip-adres is vanaf heden niet meer verbannen en evt. vroegtijdig van de banlist verwijderd.</p></center>";
}

kan (as Chris says) verkort worden in het volgende:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
if (isset($_GET['verwijderen']) AND ctype_digit($_GET['verwijderen']))
{
    $query['delete']['ipban']   =   mysql_query("DELETE FROM ipban WHERE id = ". $_GET['verwijderen'] ." LIMIT 1") or die(mysql_error());
    echo "<center><p>Dit ip-adres is vanaf heden niet meer verbannen en evt. vroegtijdig van de banlist verwijderd.</p></center>";
}

(Let ook op het niet aanwezig zijn van aanhalingstekens rond het ID! Deze is een integer, dus zijn aanhalingstekens niet verplicht.)
En (as I told you many times, en PHP Newbie ook net zegt) kun je beter de MySQL (DATE)TIME-functies gebruiken, dan gaan rekenen met timestamps.
Script0x
Script0x
13 jaar geleden
 
0 +1 -0 -1
Hey,

Thanks voor het commentaar.

@ Douwe: je zei laatst dat er wel haakjes omheen moesten dus ik zat al te denken, maar dat heb je dan waarschijnlijk verkeerd gezegd / ik verkeerd begrepen ;p

HTML is inderdaad niet beveiligd. Dat is met opzet gedaan, zie bovenaan.

Ctype_digit() zal ik eens gaan bestuderen :) Het klinkt wel logisch en handig te gebruiken!

Ik pas het script aan op dit commentaar.
Douwe
Douwe
13 jaar geleden
 
0 +1 -0 -1
Hey,

Oh... Kan wel ^^

K, I see

Goed idee :)

Succes ;)
Lasse
Lasse
13 jaar geleden
 
0 +1 -0 -1
Quote:
Dat geldt bijvoorbeeld ook bij het verwijderen van een ipadres... je zou met de $_GET kunnen gaan fucken, maar het lijkt mij wel zo logisch om als webmaster niet je database te gaan verneuqen.
Dit is toch wel degelijk een beveiliginsrisico. Stel nu dat jij de webmaster bent, en je hebt mij gebant. Ik stuur jouw over de email een mooi verhaaltje, met een goede reden om op een link te klikken. Die link stuurt jou echter stiekem naar index.php?verwijderen=mijn_ip. Er van uitgaande dat jij al ingelogd was in deze sessie zal ik hierdoor unblockt worden. Dit zal jij als webmaster misschien wel in de gaten hebben, maar het blijft een beveiligingslek, die heel goed uitgebuit kan worden. Eenvoudige oplossing is gewoon door POST te gebruiken.
Script0x
Script0x
13 jaar geleden
 
0 +1 -0 -1
Dan vraagt hij nog wel om eerst in te loggen voordat je het ip-adres verban't. Mocht je toch al ingelogd zijn, dan kun je altijd even het ip uit de url terughalen en dan opnieuw verbannen o.i.d.

$_POST is inderdaad veiliger, dit is makkelijker. Toch bedankt voor de tip!
Lasse
Lasse
13 jaar geleden
 
0 +1 -0 -1
Alles kan ja, als je verstand van zaken hebt. Als jij dit zo wilt gebruiken, prima, maar het is en blijft gewoon een beveiligingsrisico, en ik ben van mening dat in de scriptlib geen scripts met slechte beveiliging moeten staan.
Douwe
Douwe
13 jaar geleden
 
0 +1 -0 -1
Maar wacht even! Aan $_GET['verwijderen'] wordt niet het IP meegegeven, maar het ID! En die weet je als verbannene niet.
- -
- -
13 jaar geleden
 
0 +1 -0 -1
Inderdaad, dus het is wel degelijk veilig :)
Douwe
Douwe
13 jaar geleden
 
0 +1 -0 -1
Ja, maar als je lekker IDtjes gaat zitten verzinnen, worden mensen wel ineens geĆ¼nbanned ^^
En natuurlijk is het beter als je geen link stuurt naar die verwijderpagina, maar naar een pagina met in een hidden iframe die pagina, dan merkt de beheerder het niet eens :)
- -
- -
13 jaar geleden
 
0 +1 -0 -1
Zoiezo doe je er toch wel goed aan om die admin bestanden altijd te hernoemen (:
Mir
Mir
13 jaar geleden
 
0 +1 -0 -1
Super, het werkt!
Maar kan ik ook ergens zien wat het ip adres is van degene die de berichten achterlaat? Ofwel, het ip adres van degene die ik wil bannen.
Douwe
Douwe
13 jaar geleden
 
0 +1 -0 -1
Mir;
Dat ligt aan jouw systeem ;) Heeft niks hiermee te maken :)
Mir
Mir
13 jaar geleden
 
0 +1 -0 -1
Ja, dat zal best :p Ik ben echt een php loser..
Maar ja hoe moet t dan in mijn syst?
Want ik ben een beetje bang dat mn site straks om zeep gaat door alle spam.
Script0x
Script0x
13 jaar geleden
 
0 +1 -0 -1
Bijna alle kleinigheden gefixed en omdat php 4 al zo oud is en niet meer wil dat mensen het gebruiken, heb ik een exception ingebouwd in verwijderen.inc.php.



Groet,

Joris Willemsen
Loran DP
Loran DP
13 jaar geleden
 
0 +1 -0 -1
Anders post het script even helemaal opnieuw in PHP5 :P
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Jaap
Jaap
12 jaar geleden
 
0 +1 -0 -1
Mooi scriptje dankjewel!

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. ban-ip-op-tijd

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.