Tyto stránky již nejsou udržovány. Obsah je postupně přesouván/aktualizován na adrese chytrosti.marrek.cz.
69/140
Název školy: | Vyšší odborná škola a Střední průmyslová škola, Božetěchova 3 |
Autor: | Ing. Marek Nožka |
Anotace: | Předávání dat webové aplikaci -- webové formuláře |
Vzdělávací oblast: | Informační a komunikační technologie |
Předmět: | Počítačové sítě a komunikační technika (PSK) |
Tematická oblast: | Operační systém Linux/Unix |
Výsledky vzdělávání: | Žák vytvoří webový formulář a odešle ho webové aplikaci |
Klíčová slova: | Linux, Unix, Apache, Python, CGI |
Druh učebního materiálu: | Online vzdělávací materiál |
Typ vzdělávání: | Střední vzdělávání, 4. ročník, technické lyceum |
Ověřeno: | VOŠ a SPŠE Olomouc; Třída: 4L |
Zdroj: | Vlastní poznámky, Vilém Vychodil: Linux Příručka českého uživatele |
Obsah:
Webovému serveru lze s požadavkem o obsah (stránku) zaslat také parametry,
volby. Data lze předat pomocí html formulářů. Jde
tedy o html značky <form>
a
<input>
.
<form>
<p>
<input type="text" name="vstup" value="hodnota" />
<input type="checkbox" name="anone" /> Ano nebo ne
</p><p>
<input type="submit" name="tlac" value="Ano"/>
<input type="submit" name="tlac" value="Ne"/>
</p>
</form>
`--> stáhnout
GET a POST jsou dvě základní metody protokolu http. Metoda GET ukládá data to URL. Proto je následující heslo po stisknutí entru viditelné v adresním řádku prohlížeče.
<form method="get">
<input type="password" name="vstup" value="" />
</form>
`--> stáhnout
Z toho důvodu data, která chceme skrýt nebo data, která jsou příliš objemná zasíláme pomocí metody POST.
<form method="post">
<input type="password" name="vstup" value="" />
</form>
`--> stáhnout
Poznámka: To, že data nejsou na první pohled vidět neznamená, že by putovala sítí šifrovaně. Jsou pouze skrytá, ale ne zabezpečená.
Python disponuje modulem CGI,
pomocí kterého lze jednoduše přebírat parametry zaslané skriptu, bez
ohledu na to, zda byla použita metoda GET nebo POST. Základem je objekt
FieldStorage
.
#!/usr/bin/python
# -*- coding: utf8 -*-
import cgi
print "Content-Type: text/html; Charset=utf-8;\n"
print "<h1>Funguje mi to!!! Huráááá!!!</h1>"
print """
<h1>Formulář, co ho odesílám</h1>
<form method="get">
<p>
<input type="text" name="vstup" value="hodnota" />
<input type="checkbox" name="anone" /> Ano nebo ne
</p><p>
<input type="submit" name="odeslat" />
</p>
</form>
<h1>Data, která jsem dostal</h1>
"""
# načtu data odeslané pomocí formuláře
data = cgi.FieldStorage()
try:
print "<p>vstup:",data["vstup"].value ,"</p>"
except:
print """<p style="color:red;">Nedostal jsem data.</p>"""
# tento způsob je trošku bezpečnější...
print '''
<h2>Nebo...</h2>
<p>vstup:,
'''
print "Vstup:", data.getvalue('vstup')
print '''</p>
<pre>
'''
for k in data.keys():
print k,'=', data[k].value
print '\n</pre>'
`--> stáhnout