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...
Muistaakseni tapaukseen auttaa isset-funktio.
Muistit oikein, kiitos!
Minkäs virheilmoitusen tuo tuottaa?
Noticen. "The variable is not set" tmv.
"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.
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"); } } ?>
Aihe on jo aika vanha, joten et voi enää vastata siihen.