08. maj 2005 - 22:09Der er
39 kommentarer og 1 løsning
if elseif else koder
Her er 2 koder. Kode 1 virker ikke, hvorfor? Og hvilken af disse 2 koder er den bedste/mest sikker at bruge?
<?PHP //kode 1 if(isset($_GET["side"])=="hej") { echo "Dette er side 1"; }elseif(isset($_GET["side"])=="do") { echo "Dette er side 2"; }else { echo "Dette er forsiden"; } ?>
<?php //kode 2 if ($_GET['side'] == '1') { echo "Dette er side 1"; }elseif ($_GET['side'] == '2') { echo "Dette er side 2"; }else { echo "Dette er forsiden"; } ?>
Der skal alligevel en isset uden om, + at så vil "Dette er forsiden" ikke komme medmindre ?side faktisk ER sat :)
Synes godt om
Slettet bruger
08. maj 2005 - 22:19#7
Her er den kommenteret:
<?php switch($_GET['side']) { //i stedet for if($_GET['side'] == 'hej') case 'hej': echo 'Dette er side 1'; break; //I stedet for elseif($_GET['side'] == 'do') case 'do': echo 'Dette er side 2'; break; //I stedet for else default: echo 'Dette er forsiden'; } ?>
Synes godt om
Slettet bruger
08. maj 2005 - 22:20#8
Hvis side ikke er sat, eller er lig andet end "hej" og "do", vil "Dette er forsiden" blive udskrevet, hvilket vel også er hensigten.
erikjacobsen >> Kunne du ikke beskrive din special-opsætning af PHP? Den fejl har jeg endnu til gode - og jeg kan ikke fremprovokere den i min opsætning af min lokale Apache/PHP med denne kode:
Der menes at et switch direkte på $_GET['side'] vil retunere i en fejl ("Undefined index 'side' in filnavn.php") , og der derfor skal testes med isset først.
PHP4 giver sjældent denne fejl, hvor PHP5 er mere striks.
Synes godt om
Slettet bruger
08. maj 2005 - 22:38#20
Så er det derfor jeg ikke helt kunne forstå det. Jeg kører med PHP4 :o)
Det er ikke en specialopsætning. Det er den rigtige opsætning. Det er nu rart at få at vide, når der er noget galt. Visse mennesker, vi nævner ingen navne, vel Ole, vil hellere gemme hovedet under busken, end at få at vide de har lavet en fejl. ik' ;)
Får man fejlrapporter som i "rigtige" sprog som Java, C# etc, så kan man altså nemmere lave korrekte programmer.
Tror du på autoriterne, Ole, så prøv med en error_reporting(E_ALL); øverst i dit script. Er du en kylling så error_reporting(0);
Ikke, at jeg er i tvivl om, man altid bør checke, om variabler eksisterer - og at de indeholder noget forventet - før man bruger dem. Jeg har bare aldrig set en fejl af lige den årsag ... og kunne af gode grunde ikke fremkalde den, da jeg testede :)
Er error_reporting sat til 'E_ALL' i default-opsætningen af PHP?
Synes godt om
Slettet bruger
08. maj 2005 - 22:45#27
jeg kunne ikke være mere enig claus_joergensen. Jeg har aldrig været ude for, at man ikke har kunnet bruge isset i stedet for empty, mens jeg ofte er ude for det modsatte.
default-opsætning? Tjah, hvem ved. Men det er igen ligegyldigt. Vil du lave PHP-scripts, der skal kunne køre på flere installationer skal du regne med den er sat "hårdest muligt".
Men hvis man bare leger med lidt scripting er alt det vi diskuterer bare pjat. Så skal man have det sjovt og nemt. Spørgeren ville blot have den bedste måde....
Jeg tror, du har kikket for dybt i hvidvinen - og blander spørgsmålet sammen med noget, du tror, du har læst. Spørgeren spurgte om brugen af isset. Det er der vist ingen tvivl om. Jeg spurgte om noget helt andet :)
Altså, om det er mest sikkert at bruge tal eller navne til at identificere siderne? Det er fuldstændig ligegyldigt. Med mindre du selvfølgelig ikke ønsker, at man skal kunne gætte sig til andre sidenavne - for så er tal nemmere at gætte på end længere strenge.
Det var ikke det jeg tænkte på. Men dette: //kode1 if(isset($_GET["side"]) && $_GET["side"] == "1") { echo "Dette er side 1"; //kode2 if ($_GET['side'] == '1') { echo "Dette er side 1";
Om du bruger isset eller ej? Det har intet med sikkerhed at gøre, blot "kode-renlighed". At bruge isset er det rigtigste, og gør man ikke, vil man med strikse indstillinger få en fejl - men det er nok ikke tilfældet for dig.
Jeg vil råde dig til at bruge isset, det vil i hvert fald ikke give problemer på nogen måde - det er blot pænere og rigtigere end at udelade det.
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.