PHP Centeri avaleht Skriptikogu Küsimuste-vastuste leht Teadete vaatamine ja saatmine Foorum - koht küsimiseks Otsingumootor Siit saad infot meie kohta

Kasutajanimi:  
  Parool: 
  Registreeri!   Unustasid salasõna?

Foorumid Programmeerimine Kogemused Väliste väärtuste õigel kujul kuvamine ($_GET[], $_REQUEST etc)
Autor Abi Postitus Abi

jex
||||||||||||||||||||
||||||||||


Postitusi: 35
Tase: 3
Olek: Offline

Hinnang: Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10
Väliste väärtuste õigel kujul kuvamine ($_GET[], $_REQUEST etc)

Suht paljudes kohtades on veel siiski näha, et kuidas peale vormi submittimist jookseb kõik mis sisestatud kuskile lehele kohe välja kuvamiseks.

Paljudes kohtades võib see ka paha paha teha. Näiteks kui teksti lahtrisse kirjutada peale submittimist " või > ja pärast seal seda väärtust ilma töötlemata kuvada siis ongi kohe lahter katki.

1 tilluke, kuid vägagi effektiivne näide kuidas probleem ära lahendada.

PHP kood:


<?php

foreach  ($_GET AS $muutuja => $vaartus) {
               
$_GET['$muutuja'] = htmlspecialchars('$vaartus');
              
/*
              Siin muidugi, et võib ka kõik muud vajalikud operatsioonid läbi teha (kasvõi näiteks sql injection-i vastu abiks)
              */


?>

<form method="get" action="">
<input type="text" name="tekst" value="<?php echo $_GET['tekst']; ?>"/>
<input type="submit" value="Tegutse"/>
</form>




Seega soovitaks kuskil lehe koostamise algul kõik sellised väärtused niimodi läbi käia ($_GET, $_REQUEST, $_COOKIES etc).

Seda postitust on muudetud 3 korda (viimati muudeti 2007-08-18 13:56:59 jex poolt)

___________________________________________________
Elu on ümmargune

20.03.2007 21:23:06 Vajutades siia näed kasutaja jex profiili

iqkeit
missing

Postitusi: 94
Tase: 4
Olek: Offline

Hinnang: Administratiivhinnang: 6/10Administratiivhinnang: 6/10Administratiivhinnang: 6/10Administratiivhinnang: 6/10Administratiivhinnang: 6/10Administratiivhinnang: 6/10
RE: Väliste väärtuste õigel kujul kuvamine ($_GET[], $_REQUEST etc)

Esimene mõte, mis mul seda skripti nähes pähe tuli oli see:
OHHOO, aga mis juhtub, kui $_GET massiivis juhtub kaks või rohkem sama väärtusega elementi olema.
Vastus on lihtne, alles jääb neist vaid viimane, eelnevad lihtsalt kirjutatakse üle.

___________________________________________________
WARNING: kasutaja harva katsetab foorumisse kirjutatud koodi

20.03.2007 21:44:55 Vajutades siia näed kasutaja iqkeit profiili

donkey
Trooja eesel


Postitusi: 317
Tase: 6
Olek: Offline

Hinnang: Administratiivhinnang: 7/10Administratiivhinnang: 7/10Administratiivhinnang: 7/10Administratiivhinnang: 7/10Administratiivhinnang: 7/10Administratiivhinnang: 7/10Administratiivhinnang: 7/10
RE: Väliste väärtuste õigel kujul kuvamine ($_GET[], $_REQUEST etc)

PHP kood:

<?php

foreach  ($_GET as $i=>$asi) {
               
$_GET[$i]=htmlspecialchars($asi);
}

?>



___________________________________________________
E-MAIL MSN

20.03.2007 23:39:14 Vajutades siia näed kasutaja donkey profiili

nene
putukas


Postitusi: 303
Tase: 6
Olek: Offline

Hinnang: Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10
RE: Väliste väärtuste õigel kujul kuvamine ($_GET[], $_REQUEST etc)

Alguses oli raske aru saada, mida see kood siis ikkagi teeb. Ei mingit treppimist ja mingid pikad kommentaariread, mis kirjutatud koodiridadele pikenduseks lõppu. Lõpuks taipasin, et see kood üritab teha seda, mida saab saavutada märksa lihtsamalt järgmise paari reaga:

PHP kood:

foreach ( $_GET as $key => $value ) {
    
$_GET[$key] = htmlspecialchars($value);
}



heh... donkey jõudis ette

20.03.2007 23:43:33 Vajutades siia näed kasutaja nene profiili
Kokku: 25949 registreerunud kasutajat, 9711 teemat, 54603 postitust.
Täna on laupäev, 19. oktoober 2019. Kell on 00:23.

    Vaata selle lehe printerisõbralikku versiooni

Avaleht   -    Skriptikogu   -    Teated   -    Foorum   -    Reklaam   -    Tagasiside   -    Kasutamise reeglid

© Copyright 2002-2019 PHP Center. Kõik õigused reserveeritud.