Probleempje is_int()
Hoi, ik heb een probleempje met een script.
Code:
Als ik de pagina open (gallerij.php?id=1&a=1 bijvoorbeeld)
Krijg ik de melding "Geen resultaten" terwijl 1 in beide gevallen een getal is, wat heb ik hier fout gedaan?
Code:
Code (php)
Als ik de pagina open (gallerij.php?id=1&a=1 bijvoorbeeld)
Krijg ik de melding "Geen resultaten" terwijl 1 in beide gevallen een getal is, wat heb ik hier fout gedaan?
Gewijzigd op 24/05/2010 16:18:41 door Crude Oil
Gesponsorde koppelingen:
Variabelen uit $_GET/$_POST etc. zijn altijd strings (op de ?var[] methode na), je zal moeten checken of de inhoud numeriek is, bijvoorbeeld met is_numeric of met ctype_digit.
Waarden in $_GET, $_POST en $_REQUEST zijn per definitie strings.
Oke, bedankt voor je reactie
EDIT: met is_numeric werkt het wel
EDIT: met is_numeric werkt het wel
Gewijzigd op 24/05/2010 16:23:27 door Crude Oil
On a sidenote: Overigens ben je nu een beetje nutteloos variabelen aan het kopiëren aangezien je gewoon gelijk de $_GET's in je check kan zetten.
Afra:
On a sidenote: Overigens ben je nu een beetje nutteloos variabelen aan het kopiëren aangezien je gewoon gelijk de $_GET's in je check kan zetten.
Hier ben ik het niet mee eens. Die variabelen komen in de rest van het script nog veel vaker voor. Ik gebruik het niet alleen voor de check.
Olie:
Hier ben ik het niet mee eens. Die variabelen komen in de rest van het script nog veel vaker voor. Ik gebruik het niet alleen voor de check.
Afra:
On a sidenote: Overigens ben je nu een beetje nutteloos variabelen aan het kopiëren aangezien je gewoon gelijk de $_GET's in je check kan zetten.
Hier ben ik het niet mee eens. Die variabelen komen in de rest van het script nog veel vaker voor. Ik gebruik het niet alleen voor de check.
En wat maakt dat uit?
Je kunt $_GET, $_POST en $_REQUEST overal in je script gebruiken.
Pas als je wat met die variabelen hebt gedaan (trim, strip_tags, weutikveul), dan pas kan je het beste een andere variabele van maken.
Want je weet, als je met $_GET e.d. te maken hebt dat die variabelen onveilig zijn (vertrouw de gebruiker nooit).
Als je $_GET blijft gebruiken door je hele script heen wordt je iedere keer eraan herinnerd dat het variabelen van buitenaf zijn, en dat je moet oppassen met wat je met hun waarden doet. Soort tainted mode, maar dan wat informeler. Of zoals de nazi uniformen in Inglorious Basterds.
edit: of zoals Karl zegt, na de check, (dus nadat je zeker weet dat ze veilig zijn, en niet besmet), mag je ze pas toewijzen aan normale variabelen.
edit: of zoals Karl zegt, na de check, (dus nadat je zeker weet dat ze veilig zijn, en niet besmet), mag je ze pas toewijzen aan normale variabelen.
Gewijzigd op 24/05/2010 19:19:13 door Jelmer rrrr
Wat heeft onveiligheid temaken met variabelen van GET naar $nogwat om te zetten
Olie:
Wat heeft onveiligheid temaken met variabelen van GET naar $nogwat om te zetten
Is onze uitleg niet duidelijk genoeg?
Karl:
Is onze uitleg niet duidelijk genoeg?
De uitleg van Jel Mer wel, maar die van jou niet
Gewijzigd op 24/05/2010 19:23:04 door Crude Oil
Korte variant van de uitleg: http://xkcd.com/327/ :P
ik dacht al dat je naar die linkte :P Die hebben wij op kantoor aan de muur hangen ^^
Stukje code bij de functie: ctype_digit op php.net.
Als je echt goed wilt controleren op een numerieke waarde, kan je beter is_numeric gebruiken.
Als je echt goed wilt controleren op een numerieke waarde, kan je beter is_numeric gebruiken.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$numeric_string = '42';
$integer = 42;
ctype_digit($numeric_string); // true
ctype_digit($integer); // false
is_numeric($numeric_string); // true
is_numeric($integer); // true
?>
$numeric_string = '42';
$integer = 42;
ctype_digit($numeric_string); // true
ctype_digit($integer); // false
is_numeric($numeric_string); // true
is_numeric($integer); // true
?>



