Ban functie check

Gestart doorTyler20 reacties78 weergaven

21 berichten · pagina 1 van 2

Tyler

Lid · Topicstarter

Berichten
443
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Beste one2xs leden,

ik ben op dit moment bezig met een eind periode opdracht voor PHP,
ik moet mijn eigen CMS ontwikkelen met zoveel mogelijk functies.
Ik heb ervoor gekozen om een ban optie toe te voegen, de optie werkt met IPs.
Echter heb ik zelf nooit iets met bans gedaan. Dus ik wilde even hier vragen of ik het zo goed heb aangepakt, en of er geen "lekken" zijn.

Source codes
Spoiler tonen
Check die terug komt in elke pagina:

//Start ban check
$ip = $_SERVER[REMOTE_ADDR];
$checkedban = checkban($ip);
if($checkedban == 1) { // als IP ban heeft
  echo <script language=javascript>alert(Helaas bent u niet langer welkom op de website); window.location = "http://www.google.com";</script>;
  die;
}
Checkban functie

function checkban($ip) {
    $result_ban = mysql_query("SELECT * FROM banned WHERE ip=$ip");
    $result_count_ban = mysql_num_rows($result_ban);

    if ($result_count_ban > 0) {
        $checkedban = 1;
    }elseif ($result_count_ban == 0) {
        $checkedban = 0;
    }

    return $checkedban;
}


Als je de ban optie live wil testen,
drop je IP even in een PM dan voeg ik hem toe.

Het CMS systeem is te vinden op: http://www.ripz.01d.eu


Bij voorbaat dank!
0
Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
- Ik mis foutafhandeling op je query
- Waarom een alert en geen location header of include van een banpagina.
- die () is niet goed. Html wil je niet vernachelen.
-variabelen buiten de quotes
0
Tyler

Lid · Topicstarter

Berichten
443
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Aarclay schreef:
- Ik mis foutafhandeling op je query
- Waarom een alert en geen location header of include van een banpagina.
- die () is niet goed. Html wil je niet vernachelen.
-variabelen buiten de quotes
* Inderdaad, zal ik eraan toevoegen nog.
* Ban pagina wilde ik er inderdaad nog inzetten, de redirect is enkel voor testing op het moment.
* Welke () precies?
* Waardes die direct in de database staan moeten toch gequote worden? $ip
Zo is het mij uitgelegd tenminste.
0
Thom

Lid

Berichten
10.654
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Tyler schreef:
Eerdere citaten tonen
Aarclay schreef:
- Ik mis foutafhandeling op je query
- Waarom een alert en geen location header of include van een banpagina.
- die () is niet goed. Html wil je niet vernachelen.
-variabelen buiten de quotes

* Inderdaad, zal ik eraan toevoegen nog.
* Ban pagina wilde ik er inderdaad nog inzetten, de redirect is enkel voor testing op het moment.
* Welke () precies?
* Waardes die direct in de database staan moeten toch gequote worden? $ip
Zo is het mij uitgelegd tenminste.
3) aarclay heeft t over "die()"
0
Berichten
6.485
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Tyler schreef:
Eerdere citaten tonen
Aarclay schreef:
- Ik mis foutafhandeling op je query
- Waarom een alert en geen location header of include van een banpagina.
- die () is niet goed. Html wil je niet vernachelen.
-variabelen buiten de quotes

* Inderdaad, zal ik eraan toevoegen nog.
* Ban pagina wilde ik er inderdaad nog inzetten, de redirect is enkel voor testing op het moment.
* Welke () precies?
* Waardes die direct in de database staan moeten toch gequote worden? $ip
Zo is het mij uitgelegd tenminste.
[COLOR= #0000BB]<?php

$sql[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/sprintf"]sprintf[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]"SELECT * FROM banned WHERE banned_ip=%s"[/COLOR][COLOR= #007700],[/COLOR][COLOR= #0000BB]$ip[/COLOR][COLOR= #007700]);[/COLOR]
0
Tyler

Lid · Topicstarter

Berichten
443
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Thommity schreef:
Eerdere citaten tonen
Tyler schreef:
Eerdere citaten tonen
Aarclay schreef:
- Ik mis foutafhandeling op je query
- Waarom een alert en geen location header of include van een banpagina.
- die () is niet goed. Html wil je niet vernachelen.
-variabelen buiten de quotes

* Inderdaad, zal ik eraan toevoegen nog.
* Ban pagina wilde ik er inderdaad nog inzetten, de redirect is enkel voor testing op het moment.
* Welke () precies?
* Waardes die direct in de database staan moeten toch gequote worden? $ip
Zo is het mij uitgelegd tenminste.
3) aarclay heeft t over "die()"
Ah zie het, thanks. Las het verkeerd yummie
&
Rogier schreef:
Eerdere citaten tonen
Tyler schreef:
Eerdere citaten tonen
Aarclay schreef:
- Ik mis foutafhandeling op je query
- Waarom een alert en geen location header of include van een banpagina.
- die () is niet goed. Html wil je niet vernachelen.
-variabelen buiten de quotes

* Inderdaad, zal ik eraan toevoegen nog.
* Ban pagina wilde ik er inderdaad nog inzetten, de redirect is enkel voor testing op het moment.
* Welke () precies?
* Waardes die direct in de database staan moeten toch gequote worden? $ip
Zo is het mij uitgelegd tenminste.
[COLOR= #0000BB]<?php

$sql[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/sprintf"]sprintf[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]"SELECT * FROM banned WHERE banned_ip=%s"[/COLOR][COLOR= #007700],[/COLOR][COLOR= #0000BB]$ip[/COLOR][COLOR= #007700]);[/COLOR]

?
0
Berichten
93.699
Reputatie
0
Punten
1,27
Lid sinds
Laatst gezien
Trouwens, wat is er mis met true en false ipv 1 en 0?!!
0
Berichten
6.485
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Tyler schreef:
Eerdere citaten tonen
Rogier schreef:
Eerdere citaten tonen
Tyler schreef:
Eerdere citaten tonen
Aarclay schreef:
- Ik mis foutafhandeling op je query
- Waarom een alert en geen location header of include van een banpagina.
- die () is niet goed. Html wil je niet vernachelen.
-variabelen buiten de quotes

* Inderdaad, zal ik eraan toevoegen nog.
* Ban pagina wilde ik er inderdaad nog inzetten, de redirect is enkel voor testing op het moment.
* Welke () precies?
* Waardes die direct in de database staan moeten toch gequote worden? $ip
Zo is het mij uitgelegd tenminste.
[COLOR= #0000BB]<?php

$sql[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/sprintf"]sprintf[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]"SELECT * FROM banned WHERE banned_ip=%s"[/COLOR][COLOR= #007700],[/COLOR][COLOR= #0000BB]$ip[/COLOR][COLOR= #007700]);[/COLOR]

?
Wat snap je er niet aan?
Raaoul schreef:
Trouwens, wat is er mis met true en false ipv 1 en 0?!!
true/false vraagt theoretisch meer bytes. (ligt eraan of je als integer of string op slaat). Voor de rest maakt het HELEMAAL niks uit. Waarom vraag je het?
0
Berichten
93.699
Reputatie
0
Punten
1,27
Lid sinds
Laatst gezien
omdat je gewoon de taal moet gebruik zoals hij is. waarom 0 en 1 als je true en false hebt?

toevoeging op 2 juni 2013, 18:06:04:
je kunt ook direct returnen zonder een extra variable aan te maken:

[COLOR= #0000BB]<?php[/COLOR]

[COLOR= #007700]function[/COLOR] checkban[COLOR= #007700]([/COLOR][COLOR= #0000BB]$ip[/COLOR][COLOR= #007700]) {[/COLOR]
    [COLOR= #0000BB]$result_ban[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/mysql_query"]mysql_query[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]"SELECT * FROM banned WHERE ip=$ip"[/COLOR][COLOR= #007700]);[/COLOR]
    [COLOR= #0000BB]$result_count_ban[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/mysql_num_rows"]mysql_num_rows[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$result_ban[/COLOR][COLOR= #007700]);[/COLOR]

    [URL="http://www.php.net/if"]if[/URL] [COLOR= #007700]([/COLOR][COLOR= #0000BB]$result_count_ban[/COLOR] [COLOR= #007700]>[/COLOR] [COLOR= #0000BB]0[/COLOR][COLOR= #007700]) {[/COLOR]
        [URL="http://www.php.net/return"]return[/URL] true[COLOR= #007700];
    }[/COLOR][URL="http://www.php.net/elseif"]elseif[/URL] [COLOR= #007700]([/COLOR][COLOR= #0000BB]$result_count_ban[/COLOR] [COLOR= #007700]==[/COLOR] [COLOR= #0000BB]0[/COLOR][COLOR= #007700]) {[/COLOR]
        [URL="http://www.php.net/return"]return[/URL] false[COLOR= #007700];
    }
}[/COLOR]
0
Berichten
6.485
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Raaoul schreef:
omdat je gewoon de taal moet gebruik zoals hij is. waarom 0 en 1 als je true en false hebt?
toevoeging op 2 juni 2013, 18:06:04:
je kunt ook direct returnen zonder een extra variable aan te maken:

[COLOR= #0000BB]<?php[/COLOR]

[COLOR= #007700]function[/COLOR] checkban[COLOR= #007700]([/COLOR][COLOR= #0000BB]$ip[/COLOR][COLOR= #007700]) {[/COLOR]
    [COLOR= #0000BB]$result_ban[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/mysql_query"]mysql_query[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]"SELECT * FROM banned WHERE ip=$ip"[/COLOR][COLOR= #007700]);[/COLOR]
    [COLOR= #0000BB]$result_count_ban[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/mysql_num_rows"]mysql_num_rows[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$result_ban[/COLOR][COLOR= #007700]);[/COLOR]

    [URL="http://www.php.net/if"]if[/URL] [COLOR= #007700]([/COLOR][COLOR= #0000BB]$result_count_ban[/COLOR] [COLOR= #007700]>[/COLOR] [COLOR= #0000BB]0[/COLOR][COLOR= #007700]) {[/COLOR]
        [URL="http://www.php.net/return"]return[/URL] true[COLOR= #007700];
    }[/COLOR][URL="http://www.php.net/elseif"]elseif[/URL] [COLOR= #007700]([/COLOR][COLOR= #0000BB]$result_count_ban[/COLOR] [COLOR= #007700]==[/COLOR] [COLOR= #0000BB]0[/COLOR][COLOR= #007700]) {[/COLOR]
        [URL="http://www.php.net/return"]return[/URL] false[COLOR= #007700];
    }
}[/COLOR]


1. bullshit 1 & 0 warem er eerder dan true en false

2. je hebt geen foutafhandeling

3. je gebruikt variablen binnen quotes

4. Je werkt met een if/elseif statement terwijl een if/else statement volstaan had.

[COLOR= #0000BB]<?php[/COLOR]

[COLOR= #007700]function[/COLOR] checkBan[COLOR= #007700]([/COLOR][COLOR= #0000BB]$ip[/COLOR][COLOR= #007700]) {[/COLOR]
    [COLOR= #0000BB]$banQuery[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/mysql_query"]mysql_query[/URL][COLOR= #007700]([/COLOR][URL="http://www.php.net/sprintf"]sprintf[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]"SELECT ip FROM banned WHERE ip=%s"[/COLOR][COLOR= #007700],[/COLOR][COLOR= #0000BB]$ip[/COLOR][COLOR= #007700]));[/COLOR]

    [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$banQuery[/COLOR] [COLOR= #007700]!==[/COLOR] false[COLOR= #007700])[/COLOR]
        [URL="http://www.php.net/if"]if[/URL] [COLOR= #007700]([/COLOR][URL="http://www.php.net/mysql_num_rows"]mysql_num_rows[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$result_ban[/COLOR][COLOR= #007700])) {[/COLOR]
            [URL="http://www.php.net/return"]return[/URL] [COLOR= #0000BB]1[/COLOR][COLOR= #007700];
        }[/COLOR]
        [URL="http://www.php.net/else"]else[/URL] [COLOR= #007700]{[/COLOR]
            [URL="http://www.php.net/return"]return[/URL] [COLOR= #0000BB]0[/COLOR][COLOR= #007700];
        }
    }[/COLOR]
    [URL="http://www.php.net/else"]else[/URL] [COLOR= #007700]{[/COLOR]
        [COLOR= #FF8000]// mysql error[/COLOR]
    [COLOR= #007700]}

}[/COLOR]


Ik gebruik overigens ALTIJD een mysql class.
0
Tyler

Lid · Topicstarter

Berichten
443
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Rogier schreef:
Eerdere citaten tonen
Tyler schreef:
Eerdere citaten tonen
Rogier schreef:
Eerdere citaten tonen
Tyler schreef:
Eerdere citaten tonen
Aarclay schreef:
- Ik mis foutafhandeling op je query
- Waarom een alert en geen location header of include van een banpagina.
- die () is niet goed. Html wil je niet vernachelen.
-variabelen buiten de quotes

* Inderdaad, zal ik eraan toevoegen nog.
* Ban pagina wilde ik er inderdaad nog inzetten, de redirect is enkel voor testing op het moment.
* Welke () precies?
* Waardes die direct in de database staan moeten toch gequote worden? $ip
Zo is het mij uitgelegd tenminste.
[COLOR= #0000BB]<?php

$sql[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/sprintf"]sprintf[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]"SELECT * FROM banned WHERE banned_ip=%s"[/COLOR][COLOR= #007700],[/COLOR][COLOR= #0000BB]$ip[/COLOR][COLOR= #007700]);[/COLOR]

?
Wat snap je er niet aan?
Eerdere citaten tonen
Raaoul schreef:
Trouwens, wat is er mis met true en false ipv 1 en 0?!!
true/false vraagt theoretisch meer bytes. (ligt eraan of je als integer of string op slaat). Voor de rest maakt het HELEMAAL niks uit. Waarom vraag je het?
Nouja, ik ken heel dat sprintf niet,
ik heb het even bekeken in de toegevoegde php.net uitleg maar nogsteeds blijft het vaag.
Wat doet/is het precies?

En wat is hier beter aan dan gewoon enkel de query?
0
Berichten
6.485
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
1: dat sprintf() hoef je niet perse te gebruiken. Maar omdat ik altijd een DB class heb ben ik gewend met een vorm van PREPARED STATEMENTS te werken. (dta is wel sowieso beter).

je kan ook sowiets doen als $sql = "SELECT ip FROM banned WHERE ip= ".$ip. " ";

2 : Naja het is net iets netter, punt is dat je later gaat leren om je SQL in templates (dus gescheiden) te maken. Het is alleen zo dat in combinatie met PHP, SQL bijna nooit in templates gedaan worden.
0
Berichten
93.699
Reputatie
0
Punten
1,27
Lid sinds
Laatst gezien
Rogier...nogal een kansloze discussie dit. of 1 en 0 nu eerder waren dan true en false.. wat boeit het? waarom zou je een INTEGER (een nummer) dus boven een BOOLEAN (staat) verkiezen?
0
Berichten
6.485
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Raaoul schreef:
Rogier...nogal een kansloze discussie dit. of 1 en 0 nu eerder waren dan true en false.. wat boeit het? waarom zou je een INTEGER (een nummer) dus boven een BOOLEAN (staat) verkiezen?
Misschien moet je nogmaals lezen wat ik zeg. Het maakt HELEMAAL niks uit. De enige reden dat ik het doe is omdat het kan. De enige reden dat jij deze discussie voert is omdat je graag een bool gebruikt, prima doe je ding, maar het is bullshit om van andere te verlangen hetzelfde te doen als het HELEMAAL niks uitmaakt.

(Overigens heeft 1/0 nog wel het voordeel dat je het in een database snel en makkelijk kan opslaan met een tinyint, dit is wel degelijk gewoon sneller)
0
Berichten
4.214
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Rogier schreef:
Eerdere citaten tonen
Raaoul schreef:
Rogier...nogal een kansloze discussie dit. of 1 en 0 nu eerder waren dan true en false.. wat boeit het? waarom zou je een INTEGER (een nummer) dus boven een BOOLEAN (staat) verkiezen?
Misschien moet je nogmaals lezen wat ik zeg. Het maakt HELEMAAL niks uit. De enige reden dat ik het doe is omdat het kan. De enige reden dat jij deze discussie voert is omdat je graag een bool gebruikt, prima doe je ding, maar het is bullshit om van andere te verlangen hetzelfde te doen als het HELEMAAL niks uitmaakt.

(Overigens heeft 1/0 nog wel het voordeel dat je het in een database snel en makkelijk kan opslaan met een tinyint, dit is wel degelijk gewoon sneller)
Datatype bit is voor booleans niet tinyint en als ik mij niet vergis wordt true en false daar automatisch omgezet naar 1 of 0.

Wat betreft de discussie, het maakt geen moer uit wat je gebruikt al zijn true en false handiger voor de leesbaarheid van je code.
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren