Common Gateway Interface(CGI)是一个用来生成网页动态内容或者应用程序的标准方法。CGI在web服务器和web content生成程序之间提供一个接口。这个web content生成程序一般被称为CGI scripts或者简单点叫CGIs,通常由脚本语言写成,但是也能用任何的编程语言编写。
1 <Directory"/var/www/cgi-bin"> 2 AllowOverrideNone 3 OptionsExecCGI 4 Order allow,deny 5 Allow from all 6 </Directory> 7 8 <Directory"/var/www/cgi-bin"> 9 OptionsAll 10 </Directory>
1 <formmethod="POST"action="/cgi-bin/login"> 2 姓名:<input type="text"name="T1"size="20"><br> 3 身份证号码:<inputtype="text"name="T2"size="20"><br> 4 <inputtype="submit"value="提 交"name="B1"> 5 <inputtype="reset"value="重 写"name="B2"></p> 6 </form>
1 <body> 2 <a href="/cgi-bin/displaytime">显示服务器时间</a> 3 </body>
变量名 | 描述 |
---|---|
CONTENT_TYPE | 这个环境变量的值指示所传递来的信息的MIME类型。目前,环境变量CONTENT_TYPE一般都是:application/x-www-form-urlencoded,他表示数据来自于HTML表单。 |
CONTENT_LENGTH | 如果服务器与CGI程序信息的传递方式是POST,这个环境变量即使从标准输入STDIN中可以读到的有效数据的字节数。这个环境变量在读取所输入的数据时必须使用。 |
HTTP_COOKIE | 客户机内的 COOKIE 内容。 |
HTTP_USER_AGENT | 提供包含了版本数或其他专有数据的客户浏览器信息。 |
PATH_INFO | 这个环境变量的值表示紧接在CGI程序名之后的其他路径信息。它常常作为CGI程序的参数出现。 |
QUERY_STRING | 如果服务器与CGI程序信息的传递方式是GET,这个环境变量的值即使所传递的信息。这个信息经跟在CGI程序名的后面,两者中间用一个问号‘?‘分隔。 |
REMOTE_ADDR | 这个环境变量的值是发送请求的客户机的IP地址。这个值总是存在的。而且它是Web客户机需要提供给Web服务器的唯一标识,可以在CGI程序中用它来区分不同的Web客户机。 |
REMOTE_HOST | 这个环境变量的值包含发送CGI请求的客户机的主机名。如果不支持你想查询,则无需定义此环境变量。 |
REQUEST_METHOD | 提供脚本被调用的方法。对于使用 HTTP/1.0 协议的脚本,仅 GET 和 POST 有意义。 |
SCRIPT_FILENAME | CGI脚本的完整路径 |
SCRIPT_NAME | CGI脚本的的名称 |
SERVER_NAME | 这是你的 WEB 服务器的主机名、别名或IP地址。 |
SERVER_SOFTWARE | 这个环境变量的值包含了调用CGI程序的HTTP服务器的名称和版本号。 |
1 #!/usr/bin/python 2 3 print("Content-type:text/html\r\n\r\n") 4 print("""<html> 5 <head> 6 <title>Hello Word - First CGI Program</title> 7 </head> 8 <body> 9 <h2>Hello Word! This is my first CGI program</h2> 10 </body> 11 </html>""")
1 <html> 2 <head> 3 <title>test</title> 4 </head> 5 <body> 6 <formaction="/cgi-bin/hello_get.py"method="get"> 7 First Name: <inputtype="text"name="first_name"> <br/> 8 9 Last Name: <inputtype="text"name="last_name"/> 10 <inputtype="submit"value="Submit"/> 11 </form> 12 </body> 13 </html>
1 #!/usr/bin/python 2 #-*- coding:utf-8 -*- 3 4 #CGI处理模块 5 import cgi,cgitb 6 7 form = cgi.FieldStorage() 8 9 first_name = form.getvalue(‘first_name‘) 10 last_name = form.getvalue(‘last_name‘) 11 12 13 print(‘Conten-type:text/html\r\n\r\n‘) 14 print("""<html> 15 <head> 16 <title>Hello - Second CGI Program</title> 17 </head> 18 <body> 19 <h2>Hello %s %s</h2> 20 </body> 21 </html>"""%(first_name,last_name))
1 <html> 2 <head> 3 <title>test</title> 4 </head> 5 <body> 6 <formaction="/cgi-bin/hello_get.py"method="post"> 7 First Name: <inputtype="text"name="first_name"> <br/> 8 9 Last Name: <inputtype="text"name="last_name"/> 10 <inputtype="submit"value="Submit"/> 11 </form> 12 </body> 13 </html>
1 <html> 2 <body> 3 <form enctype="multipart/form-data" 4 action="/cgi-bin/save_file.py" method="post"> 5 <p>File:<input type="file" name="filename"/></p> 6 <p><input type="submit" value="Upload"/></p> 7 </form> 8 </body> 9 </html>
1 #!/usr/bin/python 2 #-*- coding=utf-8 -*- 3 4 import cgi,os 5 import cgitb;cgitb.enable() 6 7 form = cgi.FieldStorage() 8 9 #获取文件名 10 fileitem = form[‘filename‘] 11 12 #检测文件是否上传 13 if fileitem.filename: 14 #设置文件路径 15 fn = os.path.basename(fileitem.filename.replace("\\","/")) 16 open(‘/tmp/‘+ fn,‘wb‘).write(fileitem.file.read()) 17 18 message =‘The file "‘+ fn +‘" was uploaded successfully‘ 19 20 else: 21 message =‘No file was uploaded‘ 22 23 print("""24 Content-Type: text/html\r\n\r\n 25 <html> 26 <body> 27 <p>%s</p> 28 </body> 29 </html> 30 """% message)
原文:http://www.cnblogs.com/codetravel/p/4550417.html