extract() esimerkkiä?

en löytänyt googlettamallakaan...
joten jos joku tietäisi, olisiko jossain
suomenekielistä esimerkkiä extract() funktion käytöstä?
5344
Äänestä

Muut lukivat myös

Vastaukset 5

Vanhimmat
  • joo, tossa sitä vissiin käytettiin zippitiedoston purkamisessa.
    mutta mitä sen toiminta tarkoittaa post, get -metodien yhteydessä?

    Äänestä

  • hmmmmmmm........ kirjoitti:

    joo, tossa sitä vissiin käytettiin zippitiedoston purkamisessa.
    mutta mitä sen toiminta tarkoittaa post, get -metodien yhteydessä?

    Tuo on ihan eriasia mitä Ohjelmointiputkassa on.

    extract tekee taulukosta muuttujia avaimen perusteella.

    siis
    $x['testi'] = 'testi teksti';

    echo $x['testi'];

    extract($x);
    echo $testi;

    Nuo tulostaa saman tekstin.


    "mitä sen toiminta tarkoittaa post, get -metodien yhteydessä?"
    Joudut kirjoittaa
    $_GET['testi'] jne...
    Jos käytät extractia niin voit ihan $testi jne... käyttää.

    Kannattaa vilkasta http://fi.php.net/manual/fi/function.extract.php

    Mutta kannattaa olla varovainen tuon kanssa.

    Tässä ei ole mitään hätää (jos registerglobaalit pois päältä, kuten ne oletuksena on).

    if ($kirjaantunut)
    {
    // salaisia juttuja
    }

    Mutta laitat scriptin alkuun
    extract($_GET);

    niin http://sivusi.com?kirjaantunut=juu pääsetkin salaisille sivuille, ellet ole muuttujia alustanut.

    Monet ihmiset eivät alusta muuttujia. Juuri tuon takia superglobaalit tuli siis $_GET, $_POST jne.... Ja PHP6 ei ole enää edes mahdollista laittaa registerglobaaleita päälle.

    Alustaminen tarkoittaa
    extract($_GET);

    $kirjaantunut = false;
    if ($kirjaantunut)
    {
    // salaisia juttuja
    }

    Tuossa ei olekkaan enaa tietoturva aukkoa.

    Äänestä

  • jeje5 kirjoitti:

    Tuo on ihan eriasia mitä Ohjelmointiputkassa on.

    extract tekee taulukosta muuttujia avaimen perusteella.

    siis
    $x['testi'] = 'testi teksti';

    echo $x['testi'];

    extract($x);
    echo $testi;

    Nuo tulostaa saman tekstin.


    "mitä sen toiminta tarkoittaa post, get -metodien yhteydessä?"
    Joudut kirjoittaa
    $_GET['testi'] jne...
    Jos käytät extractia niin voit ihan $testi jne... käyttää.

    Kannattaa vilkasta http://fi.php.net/manual/fi/function.extract.php

    Mutta kannattaa olla varovainen tuon kanssa.

    Tässä ei ole mitään hätää (jos registerglobaalit pois päältä, kuten ne oletuksena on).

    if ($kirjaantunut)
    {
    // salaisia juttuja
    }

    Mutta laitat scriptin alkuun
    extract($_GET);

    niin http://sivusi.com?kirjaantunut=juu pääsetkin salaisille sivuille, ellet ole muuttujia alustanut.

    Monet ihmiset eivät alusta muuttujia. Juuri tuon takia superglobaalit tuli siis $_GET, $_POST jne.... Ja PHP6 ei ole enää edes mahdollista laittaa registerglobaaleita päälle.

    Alustaminen tarkoittaa
    extract($_GET);

    $kirjaantunut = false;
    if ($kirjaantunut)
    {
    // salaisia juttuja
    }

    Tuossa ei olekkaan enaa tietoturva aukkoa.

    Sehän selkeni hyvin, kiitos paljon!
    Vielä olisi kuitenkin yksi asia:

    ""mitä sen toiminta tarkoittaa post, get -metodien yhteydessä?"
    Joudut kirjoittaa
    $_GET['testi']
    Jos käytät extractia niin voit ihan $testi jne... käyttää."

    Eli onko sama asia käytänkö tuossa yhteydessä clean() -funktiota vai extract() ?

    Eli:
    $testi = clean($_POST['testi']);
    Vai:
    extract($_POST);

    Äänestä

  • jaskajokunen_ kirjoitti:

    Sehän selkeni hyvin, kiitos paljon!
    Vielä olisi kuitenkin yksi asia:

    ""mitä sen toiminta tarkoittaa post, get -metodien yhteydessä?"
    Joudut kirjoittaa
    $_GET['testi']
    Jos käytät extractia niin voit ihan $testi jne... käyttää."

    Eli onko sama asia käytänkö tuossa yhteydessä clean() -funktiota vai extract() ?

    Eli:
    $testi = clean($_POST['testi']);
    Vai:
    extract($_POST);

    "Eli onko sama asia käytänkö tuossa yhteydessä clean() -funktiota vai extract() ?

    Eli:
    $testi = clean($_POST['testi']);
    Vai:
    extract($_POST);"

    Ei ole.
    $testi = clean($_POST['testi']); sijoittaa $testi muuttujaan clean-function palauttaman tiedon. Tuo clean-functio ei ole PHP:n joten en tiedä mitä se tekee.

    Mielestäni on parempa luetella scriptin alussa tai siinä kohti missä tarttet
    $testi = $_POST['testi'];
    Näin tiedät mitä missäkin muuttujassa on eikä tule mitään yllätyksiä kuten tuon extract voi käydä. Muista, että käyttäjä voi tehdä oman lomakkeen ja lähettää sillä tietoja, myös $_POSTiinkin.

    Ja turhaan jokaiselle tekee $x = $_POST['x']; vain jos tarvetta on. Vaikka ens alkuun $_POST['x'] saattaa tuntua vaikeelta niin ei se sitä ole. voit tehdä näin
    echo "nimesi on {$_POST['nimi']}.";
    Tuo on vain esimerkki ja siinä on tietoturva aukko, ikinä ei saa tulostaa suoraan käyttäjän syötettä selaimelle, koska voi laittaa esim Javascriptin pätkän jonka avulla saa vaikkapa sivusi keksit tietoon jolloin session kaappaus käy helposti, mikäli et sitä ole ottanut huomioon.

    Vaikka yleisen käytännön mukaan superglobaaleja saisi vain lukea, niin itse olen havainnut selkeemmäksi myös muuttaa niiden tietoa tietyissä tapauksissa.

    $_POST['nimi'] = !empty($_POST['nimi']) ? htmlspecialchars($_POST['nimi']) : 'nimetön';

    Tuo on ihan tavallinen if/else lauseke. !empty sen takia kun olen tottunut että oikeella puolella on ns oletus tieto(nimetön).

    Äänestä

Kommentoi aloitusta


jaskajokunen_ kirjoitti:

en löytänyt googlettamallakaan...
joten jos joku tietäisi, olisiko jossain
suomenekielistä esimerkkiä extract() funktion käytöstä?

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