Kiel fari TTT-paghojn
Formularoj
XHTML-aj formularoj estas iloj por kolekti informojn, kiuj poste povas esti sendataj ien.
La temo formularoj estas tre kompleksa. Chi tie estos nur mallonga kaj tre baza klarigo.
Jen ekzemplo de simpla formularo:
Testoformularo
Enskribu vian personan kaj familiajn nomojn, kaj poste aktivigu la butonon “Sendi!”. Vi tiam ricevos raporton pri tio, kion vi enskribis. Poste reiru al tiu chi pagho.
Kiel funkcias formularo? «
Formularo en XHTML-a pagho havas sencon nur kunlabore kun ia servo, kiu akceptas la sendatajn informojn.
Oni devas en la formulara kodo indiki la adreson de tia servo. Kiam uzanto fine aktivigas la sendobutonon de la formularo, la TTT-legilo forsendas tiujn informojn al tiu servo. La akceptanta servo tiam faras ion per la senditaj datumoj. Eble ghi plusendas ilin per retposhto ien. Eble ghi konservas ilin en datumbazo. Eble ghi prilaboras ilin kaj resendas ilin al la persono, kiu uzis la formularon. Eble ghi faras plurajn tiajn aferojn samtempe, au ion tute alian.
La chi-antaua testa formularo kunlaboras kun tre simpla programeto, kiun mi instalis en mia servilo. Ghi nomighas “Formularilo”, kaj estas farita per la programlingvo PHP. La Formularilo ne faras multon. Ghi nur kolektas la informojn, kaj resendas tekstan (ne-HTML-an) paghon, kiu raportas, kion la Formularilo ricevis.
Formularakcepta servo normale estas programo instalita en TTT-servilo. Ofte oni parolas pri CGI-programoj. Multaj retprovizantoj havas tiajn gheneralajn servojn, kiujn oni povas uzi por kelkaj bazaj celoj (demandu al via retprovizanto).
En kelkaj lokoj en la Reto ekzistas serviloj kun tiaj servoj uzeblaj de chiu ajn.
Se oni volas mem krei tian servon, oni devas uzi ian programlingvon. (Tio tute ne eblas per XHTML.) Ofte uzataj lingvoj estas Perlo, PHP, Ruby, ASP, JSP kaj multaj aliaj similaj rimedoj.
Ne en chiuj serviloj estas permesite instali tiajn programojn. Ghenerale tio malofte eblas en senkostaj serviloj. Sed se oni pagas monon por sia retspaco, tiam plej ofte oni havas la eblon uzi Perlon au alian tian lingvon. Sed la kondichoj tre varias en la diversaj serviloj.
Ankorau unu eblo estas uzi la retposhtan programon de la uzanto anstatau programon en servilo. Por fari tion oni skribas kiel adreson “mailto:” plus retposhtan adreson, al kiu la retposhta programo sendu la informojn. Tiu eblo tamen estas tre malrekomendinda, char ghi ne estas fidebla. Oni ne scias, kian retposhtan programon la uzanto havas (se li entute havas reposhtan programon), kaj oni ne scias, kiel tiu programo reagos. Oni ja povas uzi “mailto:” en ordinaraj ligiloj. Tio estas sufiche senriska, sed en formularoj “mailto:” estas evitinda.
Tiu chi leciono instruas nur, kiel verki (tre simplan) formularon per XHTML. Se vi volas lerni, kiel fari formularakceptan servon per Perlo, PHP au alia lingvo, vi bedaurinde devas tion lerni aliloke.
form
kaj input
Formularo konsistas el la elemento form
, ene de kiu trovighas diversaj specialaj formularaj elementoj, precipe input
, kaj normale ankau diversaj ordinaraj XHTML-elementoj kiel p
, div
, strong
k.s.
La form
-elemento enhavas (per atributo) la adreson de la servo, kiu akceptos la informojn.
La specialaj formularaj elementoj reprezentas diversajn formularpartojn, kiujn la uzanto uzas por elekti au enskribi siajn informojn, au por poste ordoni, ke la informoj estu forsenditaj. Chi tie estas uzata nur la formulara elemento input
.
Jen la XHTML-kodo de la chi-antaua testa formularo:
<form action="formularilo.php">
<div>
Persona nomo:
<input type="text" name="personanomo" />
</div>
<div>
Familia nomo:
<input type="text" name="familianomo" />
</div>
<div>
<input type="submit" value="Sendi!" />
</div>
</form>
Klarigoj
La formularo komencighas per
<form ...>
, kaj finighas per</form>
. Ne forgesu fermi laform
-elementon!La malferma
form
-marko enhavas la atributonaction
, kiu havas la valoronformularilo.php
. Tio montras la adreson, al kiu la TTT-legilo sendu la informojn de la formularo. La adreso estas relativa, kaj egalas al la absoluta adreso “https://bertilow.com/html/xhtml/kurso/formularilo.php”. Se vi enskribos ion, kaj alklakos “Sendu!”, la Formularilo respondos montrante, kiujn informojn ghi ricevis de vi.La formularo enhavas tri
input
-elementojn. Chiu el ili estas metita ene dediv
-elemento. La du unuajdiv
-oj ankau enhavas tekston, kiu indikas la celon de la apudainput
-elemento (“Persona nomo:”, “Familia nomo:”).La du unuaj
input
-elementoj estas tekstaj. Tion indikas la atributotype="text"
. Tio signifas, ke la uzanto enskribu iomete da teksto. Chiu el tiuj tekstaj enmetiloj havas nomon indikitan per la atributoname
(respektive “personanomo” kaj “familianomo”).La tria
input
-elemento estas forsendilo. Tion indikas la atributotype="submit"
. Tia elemento normale prezentighas kiel butono, kiun la uzanto povas alklaki por forsendi la informojn. Per la atributovalue
estas indikite, kiu teksto aperu sur tiu butono, chi-okaze la teksto “Sendi!”.
Kion ricevis la Formularilo?
Se vi teste enskribas iom da informoj pri persona nomo kaj familia nomo, kaj forsendas tion al la Formularilo, vi ricevas simplan raporton pri via sendajho. Se vi atente rigardas la adreson en la adresokampo de via TTT-legilo, vi tiam kredeble vidos ion similan al la jeno:
http://.../formularilo.php?personanomo=Bertilo&familianomo=Wennergren
Tie vi rimarku la demandosignon post “formularilo.php”. Chio antau la demandosigno estas la adreso, al kiu la TTT-legilo sendis la formularinformojn. Chio post la demandosigno estas la informoj, kiujn ghi sendis.
Tiuj informoj konsistas el du partoj: “personanomo=Bertilo” kaj “familianomo=Wennergren”. Inter ili estas la disiga signo “&”. (Kompreneble anstatau “Bertilo” kaj “Wennergren” aperos tio, kion vi enskribis.)
La Formularilo ricevas tiujn informojn, prilaboras ilin, kaj respondas al vi, montrante, kion ghi ricevis.
Iuj signoj aperos en tia kunteksto (en tia adreso post demandosigno) en speciale kodita formo. Se vi ekzemple uzis spacosignojn, ili aperos anstataue kiel plus-signoj; aliaj signoj povas aperi kiel %-signo sekvata de du literoj au ciferoj. Servo, kiu akceptas tiajn informojn, devas scii, kiel dekodi tiajn informojn. Sed kiam vi faras ordinaran formularon, vi ne bezonas pensi pri tio. La TTT-legilo mem laubezone kodas la aferojn, antau ol ghi forsendas ilin.