Tuommosta noticea sivu pukkaa allaolevasta jos tuota p ei ole määritetty
switch ($_GET['p'])
{
....
Jos laittaa näin niin tuo notice poistuu, mut ei toimi enään
switch (isset($_GET['p']))
{
....
switch ($_GET['p'])
{
....
Jos laittaa näin niin tuo notice poistuu, mut ei toimi enään
switch (isset($_GET['p']))
{
....
Vastaukset 7
Vanhimmat
Onko tuossa $_GET['p'] muuttujassa mitään tai oletko määritellyt sen? JOs et ole niin isset palauttaa aina falsen.
Kyl tuossa $_GET['p'] on tietoa, mutta ei aina ja kun tietoa ei ole niin silloin tulee noita noticeja.
$_GET['p'] = 'testi';
switch (isset($_GET['p']))
{
case 'testi':
echo 'toimii';
break;
...
}
Ei toimi, kun tuon issetin poistaa niin toimii, mut sit noticet haittaa. Ja netistä katselin niin issettiä suositeltiin noticien poistoon.
öööö, siis joku lomake syöttää tietoa kyseiselle skriptillesi? Jos lomake syöttää muuttujan p niin homma toimii, mutta jos ei, niin ei tietenkään.
"öööö, siis joku lomake syöttää tietoa kyseiselle skriptillesi?"
Kyllä tuo tieto tulee lomalleelta, tuo oli vain esimerkki jotta ymmärrätte mikä on ongelmana.
"Jos lomake syöttää muuttujan p niin homma toimii, mutta jos ei, niin ei tietenkään."
Mutta haluan että tuo toimii oli p muuttuja määritetty tai ei.
Tässä on parempa esimerkki
Tuo tulostaapi testi, eikä testi2 jonka sen kuuluisi ja kun $_GET['p'] ei ole määritetty niin tulostaa default.
Tulostaapi testi2 ja kun $_GET['p'] ei ole määritetty niin tulostaa default sekä noticen. Tuota noticea en halua.
auttaa mua näin pikkuises pulmas?
Vaikka en PHP:tä liiemmin osaakaan (itse käytän Perliä), niin väittäisin silti tietäväni, missä vika piilee. Esimerkkikoodisi oli tällainen:
Ongelmana tässä on se, että isset-funktion palautusarvo on joko true tai false eikä testatun muuttujan arvo. Lisäksi molemmat merkkijonoista 'testi' ja 'testi2' vastaavat totuusarvoa true. Eli aina kun muuttuja $_GET['p'] on määritelty, suoritetaan ensimmäisen case-kohdan koodi. Jos muuttujaa ei ole määritelty, päädytään default-kohtaan.
Todennäköisesti haluat jotain tällaista:
Kiitoksia tuol toimii, mutta viel semmoinen kysymys miksi edes tuommosissa tapauksissa annetaan noticea?
Ilmeisesti se on parempaa koodausta, että muuttujat alustetaan tyhjillä jne...?
Tuon notisen kyllä ymmärrän jos register_globaalit olisi päällä silloinhan scripti on helppo krakkeroida kun käyttäjä pystyy syöttää tietoa kaikkiin muuttujiin eikä vain GET ja POST