Avatar billede boost Nybegynder
15. september 2006 - 19:00 Der er 9 kommentarer og
1 løsning

Tjek af $_GET

Hej

Jeg bruge denne kode til at tjekke om det er et gyldigt id:

if (preg_match('/^\d+$/', is_numeric($_GET['id']))) $id = $_GET['id'];
else die('Invalid id!');

Men jeg bruge også ?show_online=1, men så skriver den Invalid id!

Hvordan gør jeg så den kun tjekke på id og ingen andre?
Avatar billede nielle Nybegynder
15. september 2006 - 19:55 #1
F.eks. sådan:

if (isset($_GET['id']) && preg_match('/^\d+$/', $_GET['id']))
    $id = $_GET['id'];
else
    die('Invalid id!');
Avatar billede nielle Nybegynder
15. september 2006 - 19:56 #2
En OM'er :

if (isset($_GET['id'])
{
    if (preg_match('/^\d+$/', $_GET['id']))
        $id = $_GET['id'];
    else
        die('Invalid id!');
}
Avatar billede nielle Nybegynder
15. september 2006 - 19:56 #3
if (isset($_GET['id'])) ...
Avatar billede boost Nybegynder
15. september 2006 - 20:02 #4
Virker ikke, den vil stadig ikke vise ?show_online=1

Har prøvet denne:

if (isset($_GET['id'])) {
    if (preg_match('/^\d+$/', $_GET['id']))
        $id = $_GET['id'];
    else
        die('Invalid id!');
}
Avatar billede boost Nybegynder
15. september 2006 - 20:06 #5
Jo det virker, mig der havde lavet en lille fejl:

?show_online=1

Skal self. være:

?id='.$_GET['id'].'&show_online=1

Hvorfor i dine exempler har fjernet is_numeric?

Smid et svar..
Avatar billede nielle Nybegynder
15. september 2006 - 20:06 #6
Hvad mener du præcist med at den ikke vil vise det?
Avatar billede nielle Nybegynder
15. september 2006 - 20:09 #7
Jeg ved ikke hvorfor du bruger is_numeric() - tjekket preg_match('/^\d+$/', ...) sikre jo netop at det er et heltal.

Desuden returenere is_numeric() jo værdien "true" eller "false", og den er derfor ikke specielt velegnet at putte ind på "..." pladsen i det regulære udtryk oenfor.
Avatar billede nielle Nybegynder
15. september 2006 - 20:10 #8
... og et svar :^)
Avatar billede domaz.dk Novice
17. september 2006 - 08:57 #9
kunne man ikk bare sige: ?

if (is_nummeric($_GET['id'])) {
    $id = $_GET['id'];
}
else {
    die('Invalid id!');
}

eller er der nogle ulæmper ved det....?
Avatar billede nielle Nybegynder
17. september 2006 - 09:13 #10
is_numeric() og preg_match('/^\d+$/', ...) tester faktisk ikke for det samme.

preg_match'en tjekker at der et tale om et heltal, mens is_numeric også tillader kommatal. Endvidere tillader den også tal på exponentiel notation som f.eks. 1e2.

Læs mere her:

http://dk.php.net/is_numeric
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester