FilterLib

Door Mark Eilander, 12 jaar geleden, 3.058x bekeken

Om mijn vorige post (validatie) compleet te maken wil ik ook graag nog een FilterLib toevoegen.
Deze lijkt erg veel op de CheckLib met het verschil dat de FilterLib een meegestuurde string stript van ongewenste tekens.

Heb deze class snel in elkaar gezet, deze is niet helemaal compleet, maar geeft denk ik wel mooi aan wat de mogelijkheden zijn :).

Voorbeeld:

$p_sString = 'straatnaam 34';
echo FilterLib::filter_digits($p_sString);.
Geeft 34 terug.

Ik wil deze class gebruiken als aanvulling op de inputvalidator.

Gesponsorde koppelingen

PHP script bestanden

  1. FilterLib.class.php

 

Er zijn 14 reacties op 'Filterlib'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Jelmer -
Jelmer -
12 jaar geleden
 
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$p_bWhitespace = (boolean) $p_bWhitespace;
// check whether whitespaces are allowed
if (is_bool($p_bWhitespace) and $p_bWhitespace === true) {

Meest onzekere programmeur ooit?
Arjan -
Arjan -
12 jaar geleden
 
@Jelmer: Inderdaad, de if($p_bWhitespace === true) zorgt er al voor dat zowel naar het type (boolean) als naar de waarde wordt gekeken. Heel veel onnodige codes dus. Desalniettemin zal het wel werken.
Mark Eilander
Mark Eilander
12 jaar geleden
 
0 +1 -0 -1
De reden dat het er staat, is dat er uit bijvoorbeeld een POST altijd een string terug komt.

Om de een of andere reden is de waarde true of 1 dan niet meer een boolean true. Vandaar dat ik de waarde eerst omzet naar een boolean om deze vervolgens door de check te gooien. In 99.99% van de gevallen zal het inderdaad overbodig zijn. Toch lijkt het in sommige gevallen nodig te zijn :).

Toch bedankt voor de 'opbouwende' kritiek!

EDIT::
Heb even een kort voorbeeldje gefabriceerd:
$text = 'true';
var_dump((boolean) $text);
var_dump($text);
if ($text === true) {
echo '<br />true zonder typecast';
}

if ((boolean)$text === true) {
echo '<br />true met typecast';
}
resultaat:
bool(true) string(4) 'true'
true met typecast
Chris -
Chris -
12 jaar geleden
 
0 +1 -0 -1
Als het goed is werkt het op deze manier ook, en íets sneller (al zal je het niet snel merken..)
Jelmer -
Jelmer -
12 jaar geleden
 
0 +1 -0 -1
Het feit dat je iets eerst expliciet cast naar een boolean, en vervolgens dubbel gaat controleren of het specifiek een boolean is. Simpelweg if($p_bWithespace) doet _exact_ hetzelfde hier. De if-constuctie wil boolean, dus $p_bWhitespace wordt gecast naar boolean.
Mark Eilander
Mark Eilander
12 jaar geleden
 
0 +1 -0 -1
@ Chris: ja, die !empty functies werken iderdaad ook prima.
Let wel op dat een string 0 of een int 0 ook als leeg gezien zullen worden door deze functie.
http://nl3.php.net/manual/en/function.empty.php

Dus alleen een string 0 meegegeven aan deze funtie resulteerd in een lege return value :).

Vandaar mijn keuze voor:
is_string($p_sParameters) and trim($p_sParameter) != ''
Chris -
Chris -
12 jaar geleden
 
0 +1 -0 -1
@Mark: De mijne had een fout, heb hem dus verwijderd om niet het foute voorbeeld te geven.

Wat jij doet is dubbelop, omdat het al een string is. Je kan dus de is_string weglaten.
Mark Eilander
Mark Eilander
12 jaar geleden
 
0 +1 -0 -1
@Jelmer:
Zoals in het voorbeeld aangegeven kan ik als eerste parameter een string true meegeven. Als ik vervolgens de check doe $p_bWhitespace === true zal deze false geven omdat het type niet boolean is! Vandaar de typecasting.

De extra functie is_bool vooraan kan wel weg uit de if.
Jelmer -
Jelmer -
12 jaar geleden
 
0 +1 -0 -1
Maar waarom checken met === true?
Mark Eilander
Mark Eilander
12 jaar geleden
 
0 +1 -0 -1
@chris: je hebt helemaal gelijk, deze kan inderdaad weg :). Hij staat daar eigenlijk alleen maar om de typecast te controlleren. Welke waarschijnlijk altijd goed zal gaan.
Mark Eilander
Mark Eilander
12 jaar geleden
 
0 +1 -0 -1
@ Jelmer:
Aaaah! Snap nu wat je bedoeld :).

Puur uit gewoonte, ik controleer of de typecast is gelukt.
De verwerkingstijd van deze functies zijn zo laag dat ik het altijd extra erbij doe.
Richard van Velzen
Richard van Velzen
12 jaar geleden
 
0 +1 -0 -1
Quote:
Zoals in het voorbeeld aangegeven kan ik als eerste parameter een string true meegeven.

Ja, je kunt 'true' meegeven, maar ook 'blaat', 'omg', 'false' enzovoorts en dit is allemaal ook gewoon true.

Ik zou het simpel houden en gewoon checken op de ge-coercede waarde (if($whitespace)).
Mark Eilander
Mark Eilander
12 jaar geleden
 
0 +1 -0 -1
@ Richard van Velzen:
Kwam gisteren tot dezelfde conclusie.

Heb daarom gekozen voor constanten die ik wel op type check.

Heb de meegestuurde code gewijzigd!
Dit is ook de oplossing die ik normaal zou gebruiken, maar zoals eerder aangegeven heb ik nog niet de tijd gehad het script helemaal af te maken.
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Mark Eilander
Mark Eilander
12 jaar geleden
 
0 +1 -0 -1
Blijft validatie niet ook een kwestie van smaak?

De manier waarop je valideert is niet van belang, maar dat de validatie doet wat bedoeld is :).

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

Inhoudsopgave

  1. FilterLib.class.php

Labels

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.