Kysymys on varmaan tyhmä, mutta niin on kysyjäkin. Apua kaivattaisiin silti.
Eli minulla on lomake, jossa on checkbox:
testi
Lomakkeen tiedot lähetetään toisen php-tiedoston kautta tietokantaan.
Tässä toisessa tiedostossa on seuraava rivi, joka ottaa checkboxin tiedon vastaan:
$testi = $_REQUEST['testi'];
Kaikki menee hyvin jos checkbox valitaan. Jos se jätetään valitsematta niin siitä seuraa seuraava virheilmoitus lomaketta lähettäessä:
Notice: Undefined index: testi in palvelin:\testi.php on line 18
Ja checkboxia ei missään nimessä ole pakko valita, joten miten pääsisin tuosta virheilmoituksesta eroon?
Eli minulla on lomake, jossa on checkbox:
testi
Lomakkeen tiedot lähetetään toisen php-tiedoston kautta tietokantaan.
Tässä toisessa tiedostossa on seuraava rivi, joka ottaa checkboxin tiedon vastaan:
$testi = $_REQUEST['testi'];
Kaikki menee hyvin jos checkbox valitaan. Jos se jätetään valitsematta niin siitä seuraa seuraava virheilmoitus lomaketta lähettäessä:
Notice: Undefined index: testi in palvelin:\testi.php on line 18
Ja checkboxia ei missään nimessä ole pakko valita, joten miten pääsisin tuosta virheilmoituksesta eroon?
Vastaukset 3
Vanhimmat
Ei toi virheilmoitus ole :)
Yleensä noi huomautukset kannattaa laittaa pois PHP:n asetuksista, koska niitä tarvitaan vain scriptin kehitys vaiheessa. Sekä turvallisuudenkin kannalta on huono asia näyttää kävijälle suoraan PHP:n virhe ilmoitukset, mielummin logiin josta katsotaan ne.
Laitappas scriptin alkuun
error_reporting(E_ALL ^ E_NOTICE);
Joka piilottaa huomautukset, mutta näyttää muut virheilmoitukset.
Tai
error_reporting(0);
Joka piilottaa kaikki virheilmoitukset.
Tai sitten korjataan itse virhe
$testi = empty($_GET['testi']) ? '' : $_GET['testi'];
Tämä meinaa sitä, jos _GET[testi] ei saa arvoa, niin laitetaan se tyhjäksi, huom 0 == tyhjä. Jos nollaa pitää käyttää, niin tota pitää sitten pikkasen muuttaa.
REQUEST tilalla kannattaa käyttää joko GET tai POST riippuen kummalla metodilla lomake tiedot lähettää, nopeempa, näkee mistä saa arvon .....
Voishan sitä laittaa nollankin suvaitsevan
$testi = isset($_GET['testi']) ? $_GET['testi'] : '';
Laita siihen joku tarkistus onko kyseistä muuttujaa olemassa. Esim. :
if( isset($_REQUEST['testi']) ){
$testi = $_REQUEST['testi']
}
Itse käyttäisin $_REQUEST:n sijaan joko $_POST tai $_GET riippuen siitä millä tavalla data siirtyy..