[php] IP Ban script werkt niet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Pronk
  • Registratie: Februari 2002
  • Laatst online: 11-09 21:26
Ik heb een IP Ban scriptje gebouwd, het IP blok gedeelte werkt goed maar om een of andere duistere rede werkt het "ELSE" gedeelte niet. Als het IP adres van de gebruiker niet in de database staat wordt "forum.php" dus niet geladen.

Ziet iemand wat ik fout doe?

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
<?   
$dbhost = "#####";   
$dbuser = "#####";   
$dbpass = "#####";   
$dbname = "#####";   
mysql_connect($dbhost,$dbuser,$dbpass) or die("Ik ben dood"); 
mysql_select_db ($dbname);   
$font = "arial";   
$fontsize = "2";   
$ip = $_SERVER['REMOTE_ADDR'];
$banbericht = "Jij mag er lekker niet in!";   

$query = mysql_query("SELECT * FROM forumblok");   
$result = mysql_query($query); 
while($object = mysql_fetch_object($result)){  
    if ($ip == $object->ip) {   
    echo "<font face=$font size=$fontsize><b>$banbericht</b></font>"; 
    break;
  }else{   
    header("Location: forum.php"); 
    break; 
  } 
} 
?>

[ Voor 34% gewijzigd door Pronk op 18-11-2003 20:19 ]

Ja lekker!


Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Huh? 2x achter elkaar mysql_query? Dat lijkt me niet gezond..

Over t algemeen werk je met:

[php]
$query = "SELECT * FROM Weetikveelwat";
$result = mysql_query($query);
While ($row = mysql_fetch_array($result)
{

print_r($row);

}
[/]


OK, dat had je al door, maar dan snap ik alsnog je dubbele mysql_query niet, aangezien die functie geen flikker met een query-result kan, toch?

[ Voor 26% gewijzigd door Osiris op 18-11-2003 20:21 ]


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:06

gorgi_19

Kruimeltjes zijn weer op :9

Een beetje offtopic, maar waarom doe je niet:
SQL:
1
Select Count(IP) as AantalBans FROM forumblok WHERE IP = ipadress

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • Willem2
  • Registratie: Oktober 2000
  • Laatst online: 05-09 07:32

Willem2

Ω is futile

Volgens mij spring je met die break niet uit je while loop maar uit je if statement.

Je kunt het beter zo doen denk :

PHP:
1
2
3
4
5
$query = "SELECT ip FROM forumblok WHERE ip='$ip'"; 
$result = mysql_num_rows (mysql_query ($query));

if ( $result <> 0 ) echo 'je mag er niet in';
else include 'forum.php);


Of iets in die trant (ben niet zo'n mysql held) :)

[ Voor 19% gewijzigd door Willem2 op 18-11-2003 20:23 . Reden: /spuit 11. bovenstaande is mooier! :) ]

en nee, ik houd niet van voetbal... :)


Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Er zijn ook browsers die niet overweg kunnen met je header. Internet Explorer zal er geen problemen mee hebben, maar omwille van de compatibiliteit kun je beter het volledige pad inclusief het protocol geven.

Een WHERE clause in je query is inderdaad aan te raden.

Wat gebeurt er als mensen gelijk naar forum.php gaan? Hele beveiliging naar de soep?

Acties:
  • 0 Henk 'm!

  • Willem2
  • Registratie: Oktober 2000
  • Laatst online: 05-09 07:32

Willem2

Ω is futile

header loopt niet altijd even lekker.

Deze doet het *altijd* (voor zover ik heb meegemaakt):

<META HTTP-EQUIV="refresh" content="0; URL=forum.php">

en nee, ik houd niet van voetbal... :)


Acties:
  • 0 Henk 'm!

  • Nobby
  • Registratie: April 2002
  • Laatst online: 17-09 03:57

Nobby

Nuts!

GlowMouse schreef op 18 november 2003 @ 20:24:
Wat gebeurt er als mensen gelijk naar forum.php gaan? Hele beveiliging naar de soep?
Dat is wel op te lossen door headers te checken :)

From all the things I have lost, I miss my mind the most - Ozzy
Uitvindingen zijn niets anders dan betere middelen naar een slechter doel - Berry van Aerle
Het uitzetten van je pc is als het dooddrukken van een muis, dat doe je niet zo makkelijk.


Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Willem2 schreef op 18 november 2003 @ 20:25:
header loopt niet altijd even lekker.
Bij mij loopt header wel altijd lekker

Je SQL post is minder goed als die van je voorganger, dat van je voorganger is namelijk efficienter.
DAlchemist schreef op 18 november 2003 @ 20:26:
Dat is wel op te lossen door headers te checken :)
Referers zijn te faken.....

[ Voor 27% gewijzigd door GlowMouse op 18-11-2003 20:27 . Reden: reactie op DAlchemist toegevoegd ]


Acties:
  • 0 Henk 'm!

  • Willem2
  • Registratie: Oktober 2000
  • Laatst online: 05-09 07:32

Willem2

Ω is futile

GlowMouse schreef op 18 november 2003 @ 20:27:
[...]


Bij mij loopt header wel altijd lekker

Je SQL post is minder goed als die van je voorganger, dat van je voorganger is namelijk efficienter.
Nou, bepaalde browsers vreten die header als redirect echt niet... Maar dat is een beetje offtopic hier! ;)

en dat mijn SQL post niet zo proper is; dat had ik zelf ook al aangegeven...

(dus niet)

[ Voor 2% gewijzigd door Willem2 op 18-11-2003 20:30 . Reden: geheugen faalt. Tijd voor een ramtest... :) ]

en nee, ik houd niet van voetbal... :)


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:06

gorgi_19

Kruimeltjes zijn weer op :9

Om het geheel trouwens nog efficienter te maken, kan je ook je IP omzetten naar een Long en deze opslaan in de database.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
je hoort na die header altijd een exit te doen. van www.php.net:
PHP:
1
2
3
4
header("Location: http://www.example.com/"); /* Redirect browser */

/* Make sure that code below does not get executed when we redirect. */
exit;

Acties:
  • 0 Henk 'm!

  • Pronk
  • Registratie: Februari 2002
  • Laatst online: 11-09 21:26
Oke mensen ik snap het nu en het werkt. thx!

Ja lekker!


Acties:
  • 0 Henk 'm!

  • Jurgle
  • Registratie: Februari 2003
  • Laatst online: 24-06 00:27

Jurgle

100% Compatible

Referers zijn inderdaad te faken, headers worden niet door alle browsers ondersteund en dit laatste geldt ook voor de <META> HTML tag.

My opinions may have changed but not the fact that I am right ― Ashleigh Brilliant


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 17-09 14:05

.oisyn

Moderator Devschuur®

Demotivational Speaker

taal aan titel toegevoegd

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 16:36
Ah, weer een ouderwets iedereen-blaat-maar-raak topic. :/
Willem2 schreef op 18 november 2003 @ 20:29:
Nou, bepaalde browsers vreten die header als redirect echt niet...
Noem er eens een paar dan?

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 17-09 14:05

.oisyn

Moderator Devschuur®

Demotivational Speaker

Jurgle schreef op 18 november 2003 @ 22:03:
headers worden niet door alle browsers ondersteund
headers worden sowieso ondersteund, anders valt er weinig te communiceren. Je hebt het waarschijnlijk over de redirect. Volgens de specs moet dat een volledige uri zijn. Dus niet forum.php of /mijnpad/blaat/forum.php, maar [i][norml]http://www.mijndomein.nl/mijnpad/blaat/forum.php[/][/]

Content na een redirect header is niet valid. Webservers kunnen dat overigens afvangen, ik weet van IIS dat als je geen volledige uri meegeeft, of als je output genereert na een redirect header, dat ie dan intern redirect, en het voor de browser dan niet opvalt
Willem2 schreef op 18 november 2003 @ 20:22:
Volgens mij spring je met die break niet uit je while loop maar uit je if statement.
met break spring je uit loop statements (for, while, do) en een switch statement. Je kunt er niet puur mee uit een if springen.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 15-09 18:24

dusty

Celebrate Life!

Zoals ik het zie wordt de eerste IP gecontroleerd.. Hey die is niet gebanned -> Forwarden naar het forum.php :X

Dus totaal kan je altijd maar een IP bannen ? beetje veel moeite zo'n heel systeem voor slechts een IP >:)

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Acties:
  • 0 Henk 'm!

  • Bor
  • Registratie: Februari 2001
  • Laatst online: 16:40

Bor

Coördinator Frontpage Admins / FP Powermod

01000010 01101111 01110010

Verder kom je er met een proxy zo doorheen met dit script. Check php.net daar staan voorbeelden van hoe je zo goed mogelijk het ip achter de proxy kan achterhalen.

Over Bor | Vraag & Aanbod feedback | Frontpagemoderatie Forum

Pagina: 1