Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: $_GET['muuttujan'] määrittelyn tarkastus

Axuu [05.03.2005 21:26:01]

#

Minun pitäisi tarkistaa onko kysestä $_GET-muuttujaa ollenkaan olemassa, miten se tapahtuu?

Alla oleva if-lause kyllä suorittaa koodi2:sen, mikäli muuttujaa ei ole annettu, mutta tuottaa virheilmoituksen.
Tiedän, että virheilmoituksen saa pois, mutta haluaisin tehdä kunnollista koodia ja tehdä sen jotenkin muuten, mutta miten?

If ($_GET['muuttuja']) {
    koodi;
}
else {
    koodi2;
}

Mikäli muuttuja on olemassa, tehdään sen koodi, jos ei niin tehdään toinen koodi...

sqwiik [05.03.2005 21:31:59]

#

Muistaakseni tapaukseen auttaa isset-funktio.

if(isset($_GET['muuttuja']))echo "muuttuja on määritelty!";

Axuu [05.03.2005 21:35:52]

#

Muistit oikein, kiitos!

kayttaja-2791 [06.03.2005 01:10:53]

#

Minkäs virheilmoitusen tuo tuottaa?

Blaze [06.03.2005 01:19:21]

#

Noticen. "The variable is not set" tmv.

tsuriga [06.03.2005 01:52:28]

#

"Index not found" tjsp. empty olisi kätevä, ellei se tajuaisi nollaa tyhjäksi ja olisi niin hämäävän niminen. issetillä tuo voi olla tyhjäkin eli sivu.fi/?foo= ja isset($_GET['foo']) palauttaa true.

ajv [06.03.2005 02:10:54]

#

tsuriga kirjoitti:

"Index not found" tjsp. empty olisi kätevä, ellei se tajuaisi nollaa tyhjäksi ja olisi niin hämäävän niminen. issetillä tuo voi olla tyhjäkin eli sivu.fi/?foo= ja isset($_GET['foo']) palauttaa true.

Niinpä oikea tapa on tarkistaa, sen lisäksi, että muuttuja on määritelty myös se, että sillä on arvo. Ja useasti kannattaa vielä se arvokin tarkistaa, varsinkin jos se tulee käyttäjältä. Ja ?foo=bar siis lasketaan käyttäjältä tulevaksi arvoksi.

<?php
if(isset($_GET['foo']) && $_GET['foo'] != ""){
   //meillä on muuttujassa jotakin
   if(is_numeric($_GET['foo']))
      //meillä on numeerista tietoa muuttujassa, ei vaarallista sql-kyselyssä
   if(preg_match("/^[a-z]+$/i",$_GET['foo'])){
      //meillä on muuttujassa merkkejä väliltä a-z isoina tai pieninä,
      //ei "vaarallisia" merkkejä tyyliin ../salasanat
      //voidaan includettaa esim:
      if(file_exists($_GET['foo']).".php"))
         include($_GET['foo'].".php");
   }
}
?>

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta