Neokusna validacija php. Validacija in čiščenje podatkov s pomočjo PHP. Registrirajte svoje lastno validacijsko pravilo

Pri izdelavi spletnih aplikacij je pomembno, da varnost jemljete resno, še posebej, ko se morate ukvarjati s pridobivanjem podatkov od uporabnikov.

Splošno varnostno pravilo je, da ne zaupate nikomur, zato se ne morete zanesti na uporabnike, da bodo v obrazce vedno vnesli pravilne vrednosti. Na primer, namesto pravilnega e-poštnega naslova v polje lahko uporabnik vnese napačen naslov ali celo zlonamerne podatke.

Ko gre za preverjanje uporabniških podatkov, se to lahko izvede na strani odjemalca (v spletnem brskalniku) ali na strani strežnika.

Prej je bilo preverjanje na strani odjemalca mogoče izvesti samo z uporabo JavaScripta. Toda vse se je spremenilo (ali skoraj spremenilo), saj je s pomočjo HTML5 mogoče preverjanje opraviti v brskalniku, ne da bi bilo treba pisati zapletene validacijske skripte v JavaScriptu.

Preverjanje obrazca z uporabo HTML5

HTML5 zagotavlja dokaj robusten mehanizem, ki temelji na naslednjih atributih oznake: vrsta, vzorec in zahteva. S temi novimi atributi lahko nekatere funkcije preverjanja podatkov prenesete v brskalnik.

Oglejmo si te atribute, da bomo razumeli, kako lahko pomagajo pri preverjanju obrazca.

atribut vrste

Ta atribut pove, katero vnosno polje prikazati za obdelavo podatkov, na primer znano polje, kot je

Nekatera vnosna polja že ponujajo standardne metode preverjanja brez potrebe po pisanju dodatne kode. Na primer, preveri polje, da zagotovi, da se vnesena vrednost ujema s predlogo veljavnega e-poštnega naslova. Če v polje vnesete napačen znak, obrazca ni mogoče oddati, dokler vrednost ni popravljena.

Poskusite se poigrati z vrednostmi e-poštnih polj v spodnji predstavitvi.

Obstajajo tudi druge standardne vrste polj, kot so , in za preverjanje številk, URL-jev in telefonskih številk.

Opomba: Formati telefonskih številk se od države do države razlikujejo zaradi razlik v številu števk v telefonskih številkah in razlik v formatih. Zaradi tega specifikacija ne določa algoritma za preverjanje telefonskih številk, zato brskalniki v času pisanja te funkcije slabo podpirajo.

Na našo srečo je mogoče preverjanje telefonske številke opraviti z atributom vzorca, ki kot argument vzame regularni izraz, ki si ga bomo ogledali v nadaljevanju.

atribut vzorca

Atribut vzorca bo verjetno poskrbel, da bodo številni razvijalci sprednjega dela poskočili od veselja. Ta atribut sprejme regularni izraz (podoben obliki regularnega izraza JavaScript), ki bo uporabljen za preverjanje pravilnosti podatkov, vnesenih v polje.

Regularni izrazi so jezik, ki se uporablja za razčlenjevanje in obdelavo besedila. Pogosto se uporabljajo za kompleksne operacije iskanja in zamenjave ter za preverjanje pravilnosti vnesenih podatkov.

Danes so regularni izrazi vključeni v večino priljubljenih programskih jezikov, pa tudi v številne skriptne jezike, urejevalnike, aplikacije, zbirke podatkov in pripomočke ukazne vrstice.

Regularni izrazi (RegEX) so zmogljivo, jedrnato in prilagodljivo orodje za ujemanje niza besedila, kot so posamezni znaki, besede ali vzorci znakov.

Če posredujete regularni izraz kot vrednost atributa vzorca, lahko določite, katere vrednosti so sprejemljive za dano vnosno polje, in uporabnika obvestite o napakah.

Oglejmo si nekaj primerov uporabe regularnih izrazov za preverjanje vrednosti vnosnih polj.

Telefonske številke

Kot smo že omenili, brskalniki ne podpirajo v celoti polja tel zaradi nedoslednosti v formatih telefonskih številk v različnih državah.

V nekaterih državah je na primer oblika telefonskih številk xxxx-xxx-xxxx, sama telefonska številka pa bo približno takšna: 0803-555-8205.

Regularni izraz, s katerim se ta vzorec ujema, je: ^\d(4)-\d(3)-\d(4)$ . V kodi se to lahko zapiše takole:

Telefonska številka:

Alfanumerične vrednosti Potreben je atribut

To je logični atribut, ki se uporablja za označevanje, da je treba za oddajo obrazca izpolniti vrednost danega polja. Ko dodate ta atribut v polje, bo brskalnik zahteval, da uporabnik izpolni to polje, preden odda obrazec.

To nam prihrani izvajanje preverjanja polja z uporabo JavaScripta, kar lahko razvijalcem prihrani nekaj časa.

Na primer: ali (za združljivost XHTML)

Vse predstavitve, ki ste jih videli zgoraj, uporabljajo obvezni atribut, zato ga lahko preizkusite tako, da poskusite oddati obrazec, ne da bi izpolnili katero koli polje.

Zaključek

Podpora brskalnika za preverjanje obrazcev je precej dobra, pri starejših brskalnikih pa lahko uporabite polifile.

Treba je omeniti, da je zanašanje samo na preverjanje na strani brskalnika nevarno, saj lahko napadalci ali roboti ta preverjanja zlahka zaobidejo.

Vsi brskalniki ne podpirajo HTML5 in vsi podatki, poslani v vaš skript, ne bodo prišli iz vašega obrazca. To pomeni, da je treba pred dokončnim sprejemom podatkov od uporabnika preveriti njihovo pravilnost na strani strežnika.

Zelo pomembno je, da se vnos v vaš obrazec potrdi, preden oddate podatke iz obrazca v nadaljnjo obdelavo. Ko je v obrazcu veliko polj, postane skript za preverjanje veljavnosti PHP preveč zapleten. Poleg tega, ker izvajate enako ali podobno preverjanje veljavnosti za večino obrazcev, ki jih izdelate, je za preverjanje veljavnosti obrazcev vloženega preveč podvojenega truda.

O tem splošnem skriptu za preverjanje obrazca PHP

Ta generični skript za preverjanje obrazcev PHP omogoča zelo enostavno dodajanje preverjanj obrazcu.

Z vsakim elementom v obrazcu ustvarimo in povežemo niz "validacijskih deskriptorjev". "Validacijski deskriptor" je niz, ki določa vrsto validacije, ki naj se izvede. Na primer, "req" pomeni obvezno, "alpha" pomeni dovoljenje samo črk in tako naprej.

Vsako polje v obrazcu ima lahko nič, eno ali več validacij. Na primer, vnos ne sme biti prazen, mora biti krajši od 25 znakov, mora biti alfanumerični itd.

Za vsako vnosno polje v obrazcu lahko povežete nabor potrditvenih deskriptorjev.

Prenesite skript za preverjanje obrazca PHP

Spodaj lahko prenesete PHP skript za preverjanje obrazca:
Datoteka zip vsebuje skript za preverjanje obrazca formvalidator.php, dokumentacijo in vzorce uporabe.

Uporaba skripta za preverjanje obrazca PHP
  • Vključite formvalidator.php v skript za obdelavo obrazca
  • require_once "formvalidator.php"
  • Ustvarite objekt FormValidator in dodajte deskriptorje za preverjanje obrazca.
  • $validator = nov FormValidator(); $validator->addValidation("Ime","req","Prosimo, vnesite ime"); $validator->addValidation("E-pošta","e-pošta", "Vnos za e-pošto mora biti veljavna vrednost e-pošte"); $validator->addValidation("E-pošta","req","Prosimo, izpolnite e-pošto");

    Prvi argument je ime vnosnega polja v obrazcu. Drugi argument je validacijski deskriptor, ki pove vrsto zahtevane validacije. Tretji argument je sporočilo o napaki, ki se prikaže, če preverjanje ne uspe.

  • Potrdite obrazec s klicem funkcije ValidateForm().
  • if(!$validator->ValidateForm()) ( echo "Napake pri preverjanju:"; $error_hash = $validator->GetErrors(); foreach($error_hash as $inpname => $inp_err) ( echo "

    $inpname: $inp_err

    \n"; ) ) Primer

    S spodnjim primerom bo ideja bolj jasna

    Ime: E-pošta:

    Dodajanje preverjanja po meri

    Če želite dodati preverjanje po meri, ki ga deskriptorji preverjanja ne zagotavljajo, lahko to storite. Tukaj so koraki:

  • Ustvarite razred za preverjanje po meri in preglasite funkcijo DoValidate().
  • class MyValidator extends CustomValidator ( function DoValidate(&$formars,&$error_hash) ( if(stristr($formars["Comments"],"http://")) ( $error_hash["Comments"]="URL-ji niso dovoljeni v komentarjih"; vrni napačno; ) vrni resnično; ) )

  • Dodajte predmet preverjanja po meri
  • $validator = nov FormValidator(); $validator->addValidation("Ime","req","Prosimo, vnesite ime"); $validator->addValidation("E-pošta","e-pošta", "Vnos za e-pošto mora biti veljavna vrednost e-pošte"); $validator->addValidation("E-pošta","req","Prosimo, izpolnite e-pošto"); $custom_validator = nov MyValidator(); $validator->AddCustomValidator($custom_validator);

    Funkcija preverjanja po meri bo samodejno poklicana po drugih preverjanjih.

    Tabela validacijskih deskriptorjev

    Tukaj je seznam vseh validacijskih deskriptorjev:

    Validacijski deskriptorUporaba
    zahtevanoPolje ne sme biti prazno
    maxlen=???preveri maksimalno dolžino vnesenih podatkov. Na primer, če je največja dovoljena velikost 25, navedite potrditveni deskriptor kot "maxlen=25"
    minlen=???preveri dolžino vnesenega niza na zahtevani minimum. primer "minlen=5"
    alnumPreverite podatke, če vsebujejo druge znake razen črk ali številk
    alnum_sDovoljuje samo črke, številke in presledke
    štPreverite številske podatke
    alfaPreverite abecedne podatke.
    alfa_sPreverite abecedne podatke in dovolite presledke.
    E-naslovPolje je polje za e-pošto in preverite veljavnost podatkov.
    lt=???
    manj=???
    Preverite, ali so podatki manjši od posredovane vrednosti. Velja samo za številska polja.
    primer: če mora biti vrednost manjša od 1000, podajte opis potrditve kot "lt=1000"
    gt=???
    več kot=???
    Preverite, ali so podatki večji od posredovane vrednosti. Velja samo za številska polja.
    primer: če bi morala biti vrednost večja od 10, navedite potrditveni opis kot "gt=10"
    regexp=???Preverite z regularnim izrazom, ali se mora vrednost ujemati z regularnim izrazom.
    primer: “regexp=^(1.20)$” dovoljuje do 20 abecednih znakov.
    ne izberi=??Ta deskriptor za preverjanje veljavnosti je za izbrane vhodne elemente (sezname). Običajno imajo polja s seznami za izbiro en element z napisom »Izberi eno«. Uporabnik mora izbrati možnost, ki ni ta možnost. Če je vrednost te možnosti 'Izberi enega', mora biti opis preverjanja "dontselect=Izberi enega"
    dontselectchkTa potrditveni deskriptor je za potrditvena polja. Uporabnik ne sme označiti danega potrditvenega polja. Vnesite vrednost potrditvenega polja namesto ??
    Na primer, dontselectchk=on
    shouldselchkTa potrditveni deskriptor je za potrditvena polja. Uporabnik mora izbrati dano potrditveno polje. Vnesite vrednost potrditvenega polja namesto ??
    Na primer, shouldselchk=on
    dontselectradioTa potrditveni deskriptor je za izbirne gumbe. Uporabnik ne sme izbrati danega izbirnega gumba. Navedite vrednost izbirnega gumba namesto ??
    Na primer, dontselectradio=NO
    selectradioTa potrditveni deskriptor je za izbirne gumbe. Uporabnik mora izbrati dani izbirni gumb. Navedite vrednost izbirnega gumba namesto ??
    Na primer selectradio=yes
    selmin=??Izberite vsaj n število potrditvenih polj iz skupine potrditvenih polj.
    Na primer: selmin=3
    samotenRadijska skupina je obvezna. Uporabnik mora izbrati vsaj en element iz radijske skupine.
    eqelmnt=???primerjajte dva elementa v obrazcu in se prepričajte, da sta vrednosti enaki. Na primer, "geslo" in "potrditev gesla". Zamenjajte ??? z imenom drugega vhodnega elementa.
    Na primer: eqelmnt=confirm_pwd

    Govorili bomo o validaciji podatkov POST ali GET, čeprav se to načeloma lahko uporabi tudi za podatke, prejete z drugimi metodami, kot so piškotki. Ko razvijate katero koli spletno aplikacijo, morate napisati vmesnik za interakcijo z uporabniki in seveda ustvariti različne obrazce za pošiljanje podatkov uporabnikom na strežnik. na primer, to so lahko komentarji. Mislim, da je vsakomur jasno in očitno, da je treba prejete podatke preveriti, ali ustrezajo vrsti, velikosti in določenemu obsegu. V prvi vrsti je to potrebno zaradi varnosti sistema, spletne strani ali podatkovne baze, ker... Nepravilno posredovani podatki ali namerno slabo oblikovana zahteva lahko napadalcu odprejo dostop.

    Drugič, nepreverjeni podatki, če so napačni, lahko povzročijo nestabilno delovanje skripta, sistema ali celotnega strežnika. Zato je treba vse podatke preveriti in še enkrat preveriti, morda bo kdo rekel, da pretirana paranoja ni potrebna, jaz pa menim, da v tej zadevi pač ne more biti pretirana.

    Ne zaupajte podatkom, prejetim od uporabnikov, pod nobenim izgovorom in v nobenih okoliščinah. Zgodi se, da smo preprosto preleni, da bi napisali kodo, ki še enkrat preveri prejete podatke, ali pa upamo, da so obstoječe metode preverjanja dovolj, zaradi česar si popuščamo.

    Majhen odmik od teme:
    Delo na projektih, razvoj in programiranje spletnih strani, skript in drugih sistemov mi vzamejo skoraj ves prosti čas (poleg delovnega časa), oziroma to delo opravljam maksimalno možno število ur na dan. Od časa do časa je treba kaj preizkusiti, iz zabave ali samo radovednosti. Kot rezultat, mesta, izdelana na hitro, z uporabo domačih motorjev ali CMS starodavnih različic, postanejo podobne laboratorijske podgane za testiranje. Seveda vse našteto trpi zaradi pokvarjeno napisane kode, pomanjkanja nadzora nad podatki in preprosto mrgoli različnih hroščev. Pravzaprav mi v večini primerov v eni uri poskusov na takšnih spletnih mestih uspe najti več resnih ranljivosti, večina pa je v nezadostnem preverjanju prejetih podatkov. V zadnjem času se to pogosto pojavlja v skriptih, ki obdelujejo podatke POST, prejete iz JavaScript + Ajax.

    Očitno programerji, ki so napisali te skripte z uporabo Ajaxa, verjamejo, da ker se vse zahteve pojavljajo v ozadju, brez vednosti uporabnika ali preprosto brez ponovnega nalaganja strani, podatkov ni treba posebej preverjati.

    Praviloma se kar nekaj teh skript izkaže za tako luknjastih, da jim brez posebnega truda uspe narediti večjo luknjo in preplaviti svojo lupino. seveda izključno z namenom eksperimentiranja in nič več (administracija takih strani je vedno obveščena o obstoječih ranljivostih).

    Mislim, da je pomen validacije jasen vsem. Dolgo časa sem pisal vsakič isto kodo, nato pa uporabljal lastne funkcije za preverjanje podatkov, od katerih so bile mnoge zelo primitivne in praviloma razpršene po različnih delih (vključenih) datotek. Kmalu sem se začel spoznavati s PHP ogrodji Zend, CI, Kohana, od katerih je vsak implementiral svoj razred za validacijo podatkov, ki sem si jih izposodil za svoje projekte. Na koncu sem se odločil, da enega od razredov CI prilagodim svojim potrebam, a se je izkazalo, da je za to poskrbel že avtor enega izmed programerskih blogov. Nato delim njegova dela, in sicer spremenjeno knjižnico CodeIgniter.

    Poglejmo naslednjo kodo:

    Ogled kode PHP

    require_once "validator.class.php" ; $validator = new Validator() ; $validator -> set_rules ("name" , "Vaše ime" , array ("required" => , "alpha" => ) ) ; $validator -> set_rules ("email" , "Vaš e-poštni naslov" , array ("required" => "Polje %s je obvezno" , "valid_email" => ) ) ; if ($validator -> run () ) ( echo "Preverjanje je bilo uspešno" ; ) else ( echo $validator -> get_string_errors () ; )

    Kot lahko vidite iz primera, v prvo vrstico vključimo datoteko razreda validator.calss.php našemu scenariju. Nato ustvarimo primerek razreda in shranimo objekt v spremenljivko $validator.
    Nato uporabite metodo $validator->set_rules($field, $label, $rules) nastavite polja za preverjanje.

    Ta metoda zajema 3 parametre:

  • $polje- ime validacijskega polja (vrednost atributa name v oznaki)
  • $label- ime potrditvenega polja bo vstavljeno v sporočila o napakah
  • $pravila- niz validacijskih pravil, v katerem je validacijsko pravilo uporabljeno kot ključ, sporočilo o napaki za to pravilo pa kot vrednost
  • Ko so nastavljena vsa polja za validacijo, zaženemo validator z metodo $validator->run(). Če je bilo preverjanje uspešno, bo ta metoda vrnila vrednost PRAV, sicer se vrne, če pride do napak LAŽNO.

    Obstajajo trije načini prejemanja sporočil o napakah:

  • get_string_errors()- vrne vsa sporočila o napakah kot niz
  • get_array_errors()— vrne vsa sporočila kot matriko, kjer je ime polja uporabljeno kot ključ, opis napake za to polje pa je uporabljen kot vrednost.
  • napaka_forma($polje)- vrne sporočilo o napaki za polje, posredovano kot parameter $field
  • Sporočila o napakah so privzeto ovita v oznako . Če želite nastaviti svoj dizajn, uporabite metodo set_error_delimiters($predpona, $končnica). Na primer takole:

    Sporočila o napakah bodo zdaj prikazana kot div z razredom "napaka"

    Kot lahko vidite, je vse zelo preprosto.

    Ogled kode PHP

    $validator -> set_error_delimiters ( " ", " " );

    Za nastavitev pravil preverjanja lahko uporabite metodo set_rules($fields) posredovati večdimenzionalni asociativni niz. Poglejmo primer:

    Ogled kode PHP

    $rules = array ( array ( "field" => "name" , "label" => "Vaše ime" , "rules" => array ( "required" => "Polje %s je obvezno" , "alpha" = > "Polje %s mora vsebovati samo črke" ) , array ( "field" => "email" , "label" => "Vaš email" , "rules" => array ( "required" => "Field % s is obvezno" , "valid_email" => "Polje %s mora vsebovati veljaven elektronski naslov" ) ) ) ; $validator -> set_rules ($rules ) ;

    Kot lahko vidite, sem zapisal enaka validacijska pravila kot v prvem primeru, le v obliki večdimenzionalnega asociativnega polja. Uporabite lahko katero koli metodo, ki vam v dani situaciji najbolj ustreza.

    Torej, katera pravila preverjanja veljavnosti podpira ta razred?

    V ta razred sem prinesel najpogostejša pravila potrjevanja, s katerimi se sreča vsak. Tu je popoln seznam teh pravil:

    potrebnoVrne FALSE, če je polje prazno
    celo številoVrne FALSE, če vrednost ni celo število
    lebdiVrne FALSE, če vrednost ni številska vrednost
    valid_urlVrne FALSE, če vrednost ni veljaven URL
    valid_emailVrne FALSE, če vrednost ni veljaven e-poštni naslov
    veljaven_ipVrne FALSE, če naslov IP ni veljaven
    tekmeVrne FALSE, če se element ne ujema z vrednostjo drugega elementa polja
    alfaVrne FALSE, če element vsebuje več kot le črke
    valid_captchaVrne FALSE, če vrednost v polju seje ni enaka vrednosti polja obrazca
    veljaven_datumVrne FALSE, če element vsebuje neveljaven datum

    Večina teh pravil uporablja filtre, ki so postali na voljo v PHP 5.

    Če želite, lahko vedno razširite nabor pravil za preverjanje tako, da dodate potrebne funkcije v razred Validator.

    Če želite pridobiti obdelano vrednost podatkov POST, uporabite naslednjo metodo:

    Ogled kode PHP

    Običajno se ta metoda pokliče za čiščenje obrazca po uspešni obdelavi obrazca.

    Lep večer vsem (bolj noč – op. urednika). Danes ga bomo malo izboljšali. Najprej se naučimo, kako narediti validacijo obrazca v PHP in naredimo nekaj varnostnih manipulacij.

    Torej, poglejte spodnjo kodo in upoštevajte naslednje spremembe in naslednje razloge za spremembe. Vse nove vrstice sem označil z barvo.

    Ime polj obrazca je spremenjeno. Lahko se vprašate - zakaj za vraga potrebujemo to? Preprosto je, odgovoril vam bom. Kolikor vem, nekateri roboti za neželeno pošto iščejo obrazce in jih izpolnjujejo na podlagi imen teh polj. V teoriji, če ne najdejo tekmeca, gredo domov, kar si želimo. Seveda se mi ne zdi, da je stopnja te zaščite posebno velika, vendar nam ne bo škodilo, in če se vsiljena elektronska pošta zmanjša za 1 črko, bo to dobro =).

    Preverjanje, ali je e-poštni naslov pravilno vnesen. Vrstica 17 uporablja operator elseif, ki bo preverjen, če nam bo vrnil pozitiven odgovor, to je, da je pisalo, da e-poštni naslov sploh manjka, to je, da ni bil vnesen. Tu uporabimo funkcijo preg_match, ki nam omogoča primerjavo vnesenega naslova z vsakdanje izražanje. Morda bom kasneje na kratko pisal o regularnih izrazih, a za zdaj je vredno vedeti, da regularni izraz ustvari nekakšno predlogo, po kateri se preverja naš niz. In če se v našem primeru vneseni naslov ne ujema z izrazom, se ponovno prikaže napaka. Na primer, tukaj je še nekaj regularnih izrazov:
    |^[-а-яе\s\.,;:\?!]+$|i– ta regularni izraz omogoča uporabo samo ruske abecede in nekaterih znakov, kot so presledek, pika, vejica itd.
    #http://[-a-z0-9_.]+[-a-z0-9_:@&?=+,.!/~*’%$]*\.(html?|php)#i– in ta izraz vam omogoča preverjanje pravilnega črkovanja naslova na internetu.

    Nato uporabimo operator else, kjer je že prenesena vsa naša koda za pošiljanje pisma. Pravila za preverjanje lahko ustvarite sami v poljubni količini, samo dodajte nova, na primer za preverjanje e-poštnega naslova, in zadovoljni boste.




    Kontaktna oseba:



    Kontaktni e-poštni naslov:



    Sporočilo:






    Tako lahko potrdite svoje obrazce PHP, ne da bi uporabili karkoli tujega. Naslednjič v objavi na temo obrazcev mislim, da bo obravnavana validacija obrazcev v jQuery. Medtem pa čakam na vaše komentarje in želje. Lahko noč in lepo jutro vsem =).

    To in naslednje poglavje prikazujeta, kako uporabljati PHP za preverjanje podatkov obrazca.

    Preverjanje obrazca PHP

    Pri obdelavi obrazcev PHP pomislite na VARNOST!

    Te strani bodo pokazale, kako obdelovati obrazce PHP ob upoštevanju varnosti. Pravilno preverjanje podatkov obrazca je pomembno za zaščito vašega obrazca pred hekerji in pošiljatelji neželene pošte!

    Obrazec HTML, ki ga bomo obravnavali v teh poglavjih, vsebuje različna vnosna polja: obvezna in neobvezna besedilna polja, izbirne gumbe in gumb za pošiljanje:

    Pravila potrjevanja za zgornji obrazec so naslednja:

    Pravila za preverjanje veljavnosti polja
    Ime Obvezno. + Vsebovati mora samo črke in presledke
    E-naslov Obvezno. + Vsebovati mora veljaven e-poštni naslov (z @ in .)
    Spletna stran Neobvezno. Če je prisoten, mora vsebovati veljaven URL
    Komentiraj Neobvezno. Večvrstično vnosno polje (textarea)
    Spol Obvezno. Izbrati je treba enega

    Najprej si bomo ogledali navadno kodo HTML za obrazec:

    Besedilna polja

    Polja za ime, e-pošto in spletno mesto so elementi za vnos besedila, polje za komentar pa je besedilno polje. Koda HTML izgleda takole:

    ime:
    E-naslov:
    Spletna stran:
    komentar:

    Radijski gumbi

    Polja za spol so izbirni gumbi in koda HTML je videti takole:

    spol:
    ženska
    moški
    drugo

    Element obrazca

    HTML koda obrazca izgleda takole: