网站建设怎么收费,湖南专业关键词优化,网页游戏开发入门,网站桥页怎么找前言
本章继续介绍Python的CGI编程。
通过CGI程序传递checkbox数据 checkbox用于提交一个或者多个选项数据#xff0c;HTML代码如下#xff1a;
实例
!DOCTYPE html
html
head
meta charsetutf-8
titlecsdn教程(csd…前言
本章继续介绍Python的CGI编程。
通过CGI程序传递checkbox数据 checkbox用于提交一个或者多个选项数据HTML代码如下
实例
!DOCTYPE html
html
head
meta charsetutf-8
titlecsdn教程(csdn.com)/title
/head
body
form action/cgi-bin/checkbox.py methodPOST target_blank
input typecheckbox namecsdn valueon / csdn教程
input typecheckbox namegoogle valueon / Google
input typesubmit value选择站点 /
/form
/body
/html以下为 checkbox.py 文件的代码
实例
#!/usr/bin/python3# 引入 CGI 处理模块
import cgi, cgitb# 创建 FieldStorage的实例
form cgi.FieldStorage()# 接收字段数据
if form.getvalue(google):google_flag 是
else:google_flag 否if form.getvalue(csdn):csdn_flag 是
else:csdn_flag 否print (Content-type:text/html)
print ()
print (html)
print (head)
print (meta charset\utf-8\)
print (titlecsdn教程 CGI 测试实例/title)
print (/head)
print (body)
print (h2 csdn教程是否选择了 : %s/h2 % csdn_flag)
print (h2 Google 是否选择了 : %s/h2 % google_flag)
print (/body)
print (/html)修改 checkbox.py 权限
chmod 755 checkbox.py通过CGI程序传递Radio数据 Radio 只向服务器传递一个数据HTML代码如下
实例
!DOCTYPE html
html
head
meta charsetutf-8
titlecsdn教程(csdn.com)/title
/head
body
form action/cgi-bin/radiobutton.py methodpost target_blank
input typeradio namesite valuecsdn / csdn教程
input typeradio namesite valuegoogle / Google
input typesubmit value提交 /
/form
/body
/htmlradiobutton.py 脚本代码如下
实例
#!/usr/bin/python3# 引入 CGI 处理模块
import cgi, cgitb# 创建 FieldStorage的实例
form cgi.FieldStorage()# 接收字段数据
if form.getvalue(site):site form.getvalue(site)
else:site 提交数据为空print (Content-type:text/html)
print ()
print (html)
print (head)
print (meta charset\utf-8\)
print (titlecsdn教程 CGI 测试实例/title)
print (/head)
print (body)
print (h2 选中的网站是 %s/h2 % site)
print (/body)
print (/html)修改 radiobutton.py 权限
chmod 755 radiobutton.py通过CGI程序传递 Textarea 数据 Textarea 向服务器传递多行数据HTML 代码如下
实例
!DOCTYPE html
html
head
meta charsetutf-8
titlecsdn教程(csdn.com)/title
/head
body
form action/cgi-bin/textarea.py methodpost target_blank
textarea nametextcontent cols40 rows4
在这里输入内容...
/textarea
input typesubmit value提交 /
/form
/body
/htmltextarea.py 脚本代码如下
实例
#!/usr/bin/python3# 引入 CGI 处理模块
import cgi, cgitb# 创建 FieldStorage的实例
form cgi.FieldStorage()# 接收字段数据
if form.getvalue(textcontent):text_content form.getvalue(textcontent)
else:text_content 没有内容print (Content-type:text/html)
print ()
print (html)
print (head)
print (meta charset\utf-8\)
print (titlecsdn教程 CGI 测试实例/title)
print (/head)
print (body)
print (h2 输入的内容是%s/h2 % text_content)
print (/body)
print (/html)修改 textarea.py 权限
chmod 755 textarea.py通过CGI程序传递下拉数据。 HTML 下拉框代码如下
实例
!DOCTYPE html
html
head
meta charsetutf-8
titlecsdn教程(csdn.com)/title
/head
body
form action/cgi-bin/dropdown.py methodpost target_blank
select namedropdown
option valuecsdn selectedcsdn教程/option
option valuegoogleGoogle/option
/select
input typesubmit value提交/
/form
/body
/htmldropdown.py 脚本代码如下所示
实例
#!/usr/bin/python3# 引入 CGI 处理模块
import cgi, cgitb# 创建 FieldStorage的实例
form cgi.FieldStorage()# 接收字段数据
if form.getvalue(dropdown):dropdown_value form.getvalue(dropdown)
else:dropdown_value 没有内容print (Content-type:text/html)
print ()
print (html)
print (head)
print (meta charset\utf-8\)
print (titlecsdn教程 CGI 测试实例/title)
print (/head)
print (body)
print (h2 选中的选项是%s/h2 % dropdown_value)
print (/body)
print (/html)修改 dropdown.py 权限
chmod 755 dropdown.pyCGI中使用Cookie
在 http 协议一个很大的缺点就是不对用户身份的进行判断这样给编程人员带来很大的不便 而 cookie 功能的出现弥补了这个不足。
cookie 就是在客户访问脚本的同时通过客户的浏览器在客户硬盘上写入纪录数据 当下次客户访问脚本时取回数据信息从而达到身份判别的功能cookie 常用在身份校验中。
cookie的语法 http cookie的发送是通过http头部来实现的他早于文件的传递头部set-cookie的语法如下
Set-cookie:namename;expiresdate;pathpath;domaindomain;secure namename: 需要设置cookie的值(name不能使用;“和”,号),有多个name值时用 “;” 分隔例如name1name1;name2name2;name3name3。expiresdate: cookie的有效期限,格式 expires“Wdy,DD-Mon-YYYY HH:MM:SS”pathpath: 设置cookie支持的路径,如果path是一个路径则cookie对这个目录下的所有文件及子目录生效例如 path“/cgi-bin/”如果path是一个文件则cookie指对这个文件生效例如path“/cgi-bin/cookie.cgi”。domaindomain: 对cookie生效的域名例如domain“www.csdn.com”secure: 如果给出此标志表示cookie只能通过SSL协议的https服务器来传递。cookie的接收是通过设置环境变量 HTTP_COOKIE来实现的CGI程序可以通过检索该变量获取cookie信息。
Cookie设置
Cookie的 设置非常简单cookie 会在 http 头部单独发送。以下实例在 cookie 中设置了 name 和 expires
实例
#!/usr/bin/python3print (Set-Cookie: namecsdn教程;expiresWed, 28 Aug 2016 18:30:00 GMT)
print (Content-Type: text/html)print ()
print (
htmlheadmeta charsetutf-8titlecsdn教程(csdn.com)/title/headbodyh1Cookie set OK!/h1/body
/html
)将以上代码保存到 cookie_set.py并修改 cookie_set.py 权限
chmod 755 cookie_set.py以上实例使用了 Set-Cookie 头信息来设置 Cookie 信息可选项中设置了 Cookie 的其他属性如过期时间 Expires域名 Domain路径 Path。这些信息设置在 “Content-type:text/html” 之前。
检索Cookie信息
Cookie信息检索页非常简单Cookie信息存储在CGI的环境变量HTTP_COOKIE中存储格式如下
key1value1;key2value2;key3value3....以下是一个简单的CGI检索cookie信息的程序
实例
#!/usr/bin/python3# 导入模块
import os
import http.cookiesprint (Content-type: text/html)
print ()print (
html
head
meta charsetutf-8
titlecsdn教程(csdn.com)/title
/head
body
h1读取cookie信息/h1
)if HTTP_COOKIE in os.environ:cookie_stringos.environ.get(HTTP_COOKIE)c http.cookies.SimpleCookie()# cCookie.SimpleCookie()c.load(cookie_string)try:datac[name].valueprint (cookie data: databr)except KeyError:print (cookie 没有设置或者已过去br)
print (
/body
/html
)将以上代码保存到 cookie_get.py并修改 cookie_get.py 权限
chmod 755 cookie_get.py文件上传实例
HTML设置上传文件的表单需要设置 enctype 属性为 multipart/form-data代码如下所示
实例
!DOCTYPE html
html
head
meta charsetutf-8
titlecsdn教程(csdn.com)/title
/head
bodyform enctypemultipart/form-dataaction/cgi-bin/save_file.py methodpostp选中文件: input typefile namefilename //ppinput typesubmit value上传 //p/form
/body
/htmlsave_file.py 脚本文件代码如下
实例
#!/usr/bin/python3import cgi, os
import cgitb; cgitb.enable()form cgi.FieldStorage()# 获取文件名
fileitem form[filename]# 检测文件是否上传
if fileitem.filename:# 设置文件路径fn os.path.basename(fileitem.filename)open(/tmp/ fn, wb).write(fileitem.file.read())message 文件 fn 上传成功else:message 文件没有上传print (\
Content-Type: text/html\n
html
head
meta charsetutf-8
titlecsdn教程(csdn.com)/title
/head
bodyp%s/p
/body
/html% (message,))将以上代码保存到 save_file.py并修改 save_file.py 权限
chmod 755 save_file.py如果你使用的系统是Unix/Linux你必须替换文件分隔符在window下只需要使用open()语句即可
fn os.path.basename(fileitem.filename.replace(\\, / ))文件下载对话框
我们先在当前目录下创建 foo.txt 文件用于程序的下载。
文件下载通过设置HTTP头信息来实现功能代码如下
实例
#!/usr/bin/python3# HTTP 头部
print (Content-Disposition: attachment; filename\foo.txt\)
print ()
# 打开文件
fo open(foo.txt, rb)str fo.read();
print (str)# 关闭文件
fo.close()