Probleempje is_int()

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Crude Oil

Crude Oil

24/05/2010 16:17:29
Quote Anchor link
Hoi, ik heb een probleempje met een script.
Code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
include("config/config.php");
$user_id=$_GET['id'];
$album=$_GET['a'];
if(is_int($user_id) && is_int($album)){

// Hier mijn script

}else{
echo "<p><b>Geen resultaten<b></p>";
}

?>


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
 
PHP hulp

PHP hulp

02/03/2025 02:05:43
 
Willem Jan Z

Willem Jan Z

24/05/2010 16:21:23
Quote Anchor link
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.
 

24/05/2010 16:22:12
Quote Anchor link
Waarden in $_GET, $_POST en $_REQUEST zijn per definitie strings.
 
Crude Oil

Crude Oil

24/05/2010 16:22:37
Quote Anchor link
Oke, bedankt voor je reactie

EDIT: met is_numeric werkt het wel
Gewijzigd op 24/05/2010 16:23:27 door Crude Oil
 

24/05/2010 16:24:42
 
Afra ca

Afra ca

24/05/2010 18:24:18
Quote Anchor link
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.
 
Crude Oil

Crude Oil

24/05/2010 19:07:12
Quote Anchor link
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.
 

24/05/2010 19:14:41
Quote Anchor link
Olie:
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).
 
Jelmer -

Jelmer -

24/05/2010 19:18:02
Quote Anchor link
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.
Gewijzigd op 24/05/2010 19:19:13 door Jelmer -
 
Crude Oil

Crude Oil

24/05/2010 19:18:11
Quote Anchor link
Wat heeft onveiligheid temaken met variabelen van GET naar $nogwat om te zetten
 

24/05/2010 19:21:22
Quote Anchor link
Olie:
Wat heeft onveiligheid temaken met variabelen van GET naar $nogwat om te zetten

Is onze uitleg niet duidelijk genoeg?
 
Crude Oil

Crude Oil

24/05/2010 19:22:24
Quote Anchor link
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
 
Jelmer -

Jelmer -

24/05/2010 19:24:03
Quote Anchor link
Korte variant van de uitleg: http://xkcd.com/327/ :P
 
Willem Jan Z

Willem Jan Z

24/05/2010 19:47:59
Quote Anchor link
ik dacht al dat je naar die linkte :P Die hebben wij op kantoor aan de muur hangen ^^
 
Erik Rijk

Erik Rijk

24/05/2010 21:32:49
Quote Anchor link
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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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
?>
 



Overzicht Reageren

 
 

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.