Avatar billede shjorth Nybegynder
19. december 2007 - 16:23 Der er 15 kommentarer og
1 løsning

if $_GET - ikke er

Her er lige en hurtig en..
Ved ikke om jeg er stået for tidligt op eller noget, men jeg kan sku ikke finde ud af det :(

if $_GET['cat'] ikke er, eller er alt andet end henholdsvis
1, 2, 3, 4, 5, 6, 7 eller 8 så
Header("Location.............

Nogen der kan give mig et hint ? ;-)

Mange tak
Avatar billede smitten1 Nybegynder
19. december 2007 - 16:29 #1
$cat = isset($_GET['cat']) ? (int)$_GET['cat'] : 0;

if(!($cat >= 1 && $cat <= 8)){
  header("Location...");
  exit();   
}
Avatar billede nielle Nybegynder
19. december 2007 - 16:31 #2
Sådan?

$cat = $_GET['cat'];  // Udelukkende for at skrive kortere kode om lidt

if ($cat != 1 && $cat != 2 && $cat != 3 && $cat != 4 && $cat != 5 && $cat != 6 && $cat != 7 && $cat != 8)
{
    header("Location.............
Avatar billede nielle Nybegynder
19. december 2007 - 16:31 #3
Det er ikke 100 % klar om $cat altid er et heltal.
Avatar billede shjorth Nybegynder
19. december 2007 - 16:34 #4
Tak skal i have.. ligger i svar?

Nielle: hmm, skal det så om noget ikke være "OR" istedet for "&&" ?
Avatar billede nielle Nybegynder
19. december 2007 - 18:10 #5
... noget ikke være "OR" istedet for "&&" ?>

Nej.

$cat skal være forskellig fra 1 OG den skal være forskellig fra 2 OG forskellig fra 3 ...

Hvis du bruger OR ("||") så vil din if altid blive opfattet som sand, da alting opfylder at det enten er forskellig fra 1 eller forskellig fra 2 (og så behøver vi sådan set slet ikke kigge på 2, 3, ...).
Avatar billede coderdk Praktikant
19. december 2007 - 19:15 #6
$cat = !empty( $_GET['cat'] ) : $_GET['cat'] : 0;
if ( !in_array( $cat, range(1, 8) ) )
{
  header("Location...");
  exit();   
}

? :)
Avatar billede zurekk Nybegynder
19. december 2007 - 22:16 #7
$cat = (int) $_GET['cat'];

if( !$cat OR $cat > 8 )
    header( 'Location...' ) or die();
Avatar billede nielle Nybegynder
20. december 2007 - 19:31 #8
Den løsning fejler hvis $cat er negativ, eller ikke er et heltal.
Avatar billede coderdk Praktikant
20. december 2007 - 19:46 #9
Plus der kommer en notice hvis $_GET['cat'] ikke er sat ;P
Avatar billede zurekk Nybegynder
23. december 2007 - 02:49 #10
$cat = ( $_GET['cat'] ) ? (int) $_GET['cat'] : 0;

if( !$cat OR $cat > 8 )
    header( 'Location...' ) or die();
Avatar billede zurekk Nybegynder
23. december 2007 - 03:07 #11
Nej, denne kode virker fint:

$cat = (int) $_GET['cat'];

if( !$cat OR $cat > 8 )
    header( 'Location...' ) or die();
Avatar billede coderdk Praktikant
23. december 2007 - 03:13 #12
Den vil stadig generere en notice ;P

Jeg tror bare at smitten1 og nielle skal smide et svar ;)
Avatar billede nielle Nybegynder
23. december 2007 - 07:17 #13
Der blev spurgt specifikt til tallene 1, 2, 3, 4, 5, 6, 7 og 8. Derfor er det i princippet forkert hvis 5,4 afrundes og dermed behandles som om at der havde stået 5.

Desuden vil en negativ (heltal eller ej) værdi stadig blive behandlet forkert.
Avatar billede nielle Nybegynder
28. december 2007 - 21:54 #14
Et svar fra mig
Avatar billede coderdk Praktikant
28. december 2007 - 22:53 #15
Man er stadig nødt til at bruge isset eller empty for ikke at generere et notice:

$cat = !empty( $_GET['cat'] ) : $_GET['cat'] : 0;

F.eks. - Ingen point til mig ;)
Avatar billede shjorth Nybegynder
04. januar 2008 - 02:05 #16
Takker ;)
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