Notice: Undefined index: p?

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']))
{
....
7714
Äänestä

Muut lukivat myös

Vastaukset 7

Vanhimmat

Onko tuossa $_GET['p'] muuttujassa mitään tai oletko määritellyt sen? JOs et ole niin isset palauttaa aina falsen.

Äänestä
  • 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.

    Äänestä

  • nenen kirjoitti:

    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.

    Äänestä

  • öööööö kirjoitti:

    öööö, 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.

    Äänestä

  • nenen kirjoitti:

    "öööö, 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?

    Äänestä

  • nenen kirjoitti:

    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:

    Äänestä

  • UPDATE_5299066 kirjoitti:

    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

    Äänestä

Kommentoi aloitusta


nenen kirjoitti:

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']))
{
....

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu