当前位置: 首页 > news >正文

承装承修承试材料在哪个网站做制作一个网站费用

承装承修承试材料在哪个网站做,制作一个网站费用,网站建设服务费要不要折旧呢,wordpress怎么创建目录页面Python CGI编程 什么是CGI CGI 目前由NCSA维护#xff0c;NCSA定义CGI如下#xff1a; CGI(Common Gateway Interface),通用网关接口,它是一段程序,运行在服务器上如#xff1a;HTTP服务器#xff0c;提供同客户端HTML页面的接口。 网页浏览 为了更好的了解CGI是如何工作… Python CGI编程 什么是CGI CGI 目前由NCSA维护NCSA定义CGI如下 CGI(Common Gateway Interface),通用网关接口,它是一段程序,运行在服务器上如HTTP服务器提供同客户端HTML页面的接口。 网页浏览 为了更好的了解CGI是如何工作的我们可以从在网页上点击一个链接或URL的流程 1、使用你的浏览器访问URL并连接到HTTP web 服务器。2、Web服务器接收到请求信息后会解析URL并查找访问的文件在服务器上是否存在如果存在返回文件的内容否则返回错误信息。3、浏览器从服务器上接收信息并显示接收的文件或者错误信息。 CGI程序可以是Python脚本PERL脚本SHELL脚本C或者C程序等。 CGI架构图 Web服务器支持及配置 在你进行CGI编程前确保您的Web服务器支持CGI及已经配置了CGI的处理程序。 所有的HTTP服务器执行CGI程序都保存在一个预先配置的目录。这个目录被称为CGI目录并按照惯例它被命名为/var/www/cgi-bin目录。 CGI文件的扩展名为.cgipython也可以使用.py扩展名。 默认情况下Linux服务器配置运行的cgi-bin目录中为/var/www。 如果你想指定其他运行CGI脚本的目录可以修改httpd.conf配置文件如下所示 Directory /var/www/cgi-binAllowOverride NoneOptions ExecCGIOrder allow,denyAllow from all /DirectoryDirectory /var/www/cgi-bin Options All /Directory第一个CGI程序 我们使用Python创建第一个CGI程序文件名为hellp.py文件位于/var/www/cgi-bin目录中内容如下修改文件的权限为755 #!/usr/bin/pythonprint Content-type:text/html\r\n\r\n print html print head print titleHello Word - First CGI Program/title print /head print body print h2Hello Word! This is my first CGI program/h2 print /body print /html以上程序在浏览器访问显示结果如下 Hello Word! This is my first CGI program这个的hello.py脚本是一个简单的Python脚本脚本第一的输出内容Content-type:text/html\r\n\r\n发送到浏览器并告知浏览器显示的内容类型为text/html。 HTTP头部 hello.py文件内容中的 Content-type:text/html\r\n\r\n即为HTTP头部的一部分它会发送给浏览器告诉浏览器文件的内容类型。 HTTP头部的格式如下 HTTP 字段名: 字段内容例如 Content-type: text/html\r\n\r\n以下表格介绍了CGI程序中HTTP头部经常使用的信息 头描述Content-type:请求的与实体对应的MIME信息。例如: Content-type:text/htmlExpires: Date响应过期的日期和时间Location: URL用来重定向接收方到非请求URL的位置来完成请求或标识新的资源Last-modified: Date请求资源的最后修改时间Content-length: N请求的内容长度Set-Cookie: String设置Http Cookie CGI环境变量 所有的CGI程序都接收以下的环境变量这些变量在CGI程序中发挥了重要的作用 变量名描述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地址例如上面的192.168.1.67。这个值总是存在的。而且它是Web客户机需要提供给Web服务器的唯一标识可以在CGI程序中用它来区分不同的Web客户机。REMOTE_HOST这个环境变量的值包含发送CGI请求的客户机的主机名。如果不支持你想查询则无需定义此环境变量。REQUEST_METHOD提供脚本被调用的方法。对于使用 HTTP/1.0 协议的脚本仅 GET 和 POST 有意义。SCRIPT_FILENAMECGI脚本的完整路径SCRIPT_NAMECGI脚本的的名称SERVER_NAME这是你的 WEB 服务器的主机名、别名或IP地址。SERVER_SOFTWARE这个环境变量的值包含了调用CGI程序的HTTP服务器的名称和版本号。例如上面的值为Apache/2.2.14(Unix) 以下是一个简单的CGI脚本输出CGI的环境变量 #!/usr/bin/pythonimport osprint Content-type: text/html\r\n\r\n; print font size1Environment/font\br; for param in os.environ.keys():print b%20s/b: %s\br % (param, os.environ[param])GET和POST方法 浏览器客户端通过两种方法向服务器传递信息这两种方法就是 GET 方法和 POST 方法。 使用GET方法传输数据 GET方法发送编码后的用户信息到服务端数据信息包含在请求页面的URL上以?号分割, 如下所示 http://www.test.com/cgi-bin/hello.py?key1value1key2value2 有关 GET 请求的其他一些注释 GET 请求可被缓存GET 请求保留在浏览器历史记录中GET 请求可被收藏为书签GET 请求不应在处理敏感数据时使用GET 请求有长度限制GET 请求只应当用于取回数据 简单的url实例GET方法 以下是一个简单的URL使用GET方法向hello_get.py程序发送两个参数 /cgi-bin/hello_get.py?first_nameZARAlast_nameALI以下为hello_get.py文件的代码 #!/usr/bin/python# CGI处理模块 import cgi, cgitb # 创建 FieldStorage 的实例化 form cgi.FieldStorage() # 获取数据 first_name form.getvalue(first_name) last_name form.getvalue(last_name)print Content-type:text/html\r\n\r\n print html print head print titleHello - Second CGI Program/title print /head print body print h2Hello %s %s/h2 % (first_name, last_name) print /body print /html浏览器请求输出结果 Hello ZARA ALI简单的表单实例GET方法 以下是一个通过HTML的表单使用GET方法向服务器发送两个数据提交的服务器脚本同样是hello_get.py文件代码如下 form action/cgi-bin/hello_get.py methodget First Name: input typetext namefirst_name br /Last Name: input typetext namelast_name / input typesubmit valueSubmit / /form使用POST方法传递数据 使用POST方法向服务器传递数据是更安全可靠的像一些敏感信息如用户密码等需要使用POST传输数据。 以下同样是hello_get.py 它也可以处理浏览器提交的POST表单数据: #!/usr/bin/python# 引入 CGI 模块 import cgi, cgitb # 创建 FieldStorage 实例 form cgi.FieldStorage() # 获取表单数据 first_name form.getvalue(first_name) last_name form.getvalue(last_name)print Content-type:text/html\r\n\r\n print html print head print titleHello - Second CGI Program/title print /head print body print h2Hello %s %s/h2 % (first_name, last_name) print /body print /html以下为表单通过POST方法向服务器脚本hello_get.py提交数据: form action/cgi-bin/hello_get.py methodpost First Name: input typetext namefirst_namebr / Last Name: input typetext namelast_name /input typesubmit valueSubmit / /form通过CGI程序传递checkbox数据 checkbox用于提交一个或者多个选项数据HTML代码如下 form action/cgi-bin/checkbox.cgi methodPOST target_blank input typecheckbox namemaths valueon / Maths input typecheckbox namephysics valueon / Physics input typesubmit valueSelect Subject / /form以下为 checkbox.cgi 文件的代码 #!/usr/bin/python# 引入 CGI 处理模块 import cgi, cgitb # 创建 FieldStorage的实例 form cgi.FieldStorage() # 接收字段数据 if form.getvalue(maths):math_flag ON else:math_flag OFFif form.getvalue(physics):physics_flag ON else:physics_flag OFFprint Content-type:text/html\r\n\r\n print html print head print titleCheckbox - Third CGI Program/title print /head print body print h2 CheckBox Maths is : %s/h2 % math_flag print h2 CheckBox Physics is : %s/h2 % physics_flag print /body print /html通过CGI程序传递Radio数据 Radio只向服务器传递一个数据HTML代码如下 form action/cgi-bin/radiobutton.py methodpost target_blank input typeradio namesubject valuemaths / Maths input typeradio namesubject valuephysics / Physics input typesubmit valueSelect Subject / /formradiobutton.py 脚本代码如下 #!/usr/bin/python# Import modules for CGI handling import cgi, cgitb # Create instance of FieldStorage form cgi.FieldStorage() # Get data from fields if form.getvalue(subject):subject form.getvalue(subject) else:subject Not setprint Content-type:text/html\r\n\r\n print html print head print titleRadio - Fourth CGI Program/title print /head print body print h2 Selected Subject is %s/h2 % subject print /body print /html通过CGI程序传递 Textarea 数据 Textarea向服务器传递多行数据HTML代码如下 form action/cgi-bin/textarea.py methodpost target_blank textarea nametextcontent cols40 rows4 Type your text here... /textarea input typesubmit valueSubmit / /formtextarea.cgi脚本代码如下 #!/usr/bin/python# Import modules for CGI handling import cgi, cgitb # Create instance of FieldStorage form cgi.FieldStorage() # Get data from fields if form.getvalue(textcontent):text_content form.getvalue(textcontent) else:text_content Not enteredprint Content-type:text/html\r\n\r\n print html print head; print titleText Area - Fifth CGI Program/title print /head print body print h2 Entered Text Content is %s/h2 % text_content print /body通过CGI程序传递下拉数据 HTML下拉框代码如下 form action/cgi-bin/dropdown.py methodpost target_blank select namedropdown option valueMaths selectedMaths/option option valuePhysicsPhysics/option /select input typesubmit valueSubmit/ /formdropdown.py 脚本代码如下所示 #!/usr/bin/python# Import modules for CGI handling import cgi, cgitb # Create instance of FieldStorage form cgi.FieldStorage() # Get data from fields if form.getvalue(dropdown):subject form.getvalue(dropdown) else:subject Not enteredprint Content-type:text/html\r\n\r\n print html print head print titleDropdown Box - Sixth CGI Program/title print /head print body print h2 Selected Subject is %s/h2 % subject print /body print /htmlCGI中使用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的有效期限,格式 expiresWdy,DD-Mon-YYYY HH:MM:SS pathpath: 设置cookie支持的路径,如果path是一个路径则cookie对这个目录下的所有文件及子目录生效例如 path/cgi-bin/如果path是一个文件则cookie指对这个文件生效例如path/cgi-bin/cookie.cgi。 domaindomain: 对cookie生效的域名例如domainwww.chinalb.com secure: 如果给出此标志表示cookie只能通过SSL协议的https服务器来传递。 cookie的接收是通过设置环境变量HTTP_COOKIE来实现的CGI程序可以通过检索该变量获取cookie信息。 Cookie设置 Cookie的设置非常简单cookie会在http头部单独发送。以下实例在cookie中设置了UserID 和 Password pre #!/usr/bin/pythonprint Set-Cookie:UserIDXYZ;\r\n print Set-Cookie:PasswordXYZ123;\r\n print Set-Cookie:ExpiresTuesday, 31-Dec-2007 23:12:40 GMT;\r\n print Set-Cookie:Domainwww.w3cschool.cc;\r\n print Set-Cookie:Path/perl;\n print Content-type:text/html\r\n\r\n ...........Rest of the HTML Content....以上实例使用了 Set-Cookie 头信息来设置Cookie信息可选项中设置了Cookie的其他属性如过期时间Expires域名Domain路径Path。这些信息设置在 Content-type:text/html\r\n\r\n之前。 检索Cookie信息 Cookie信息检索页非常简单Cookie信息存储在CGI的环境变量HTTP_COOKIE中存储格式如下 key1value1;key2value2;key3value3....以下是一个简单的CGI检索cookie信息的程序 #!/usr/bin/python# Import modules for CGI handling from os import environ import cgi, cgitbif environ.has_key(HTTP_COOKIE):for cookie in map(strip, split(environ[HTTP_COOKIE], ;)):(key, value ) split(cookie, );if key UserID:user_id valueif key Password:password valueprint User ID %s % user_id print Password %s % password以上脚本输出结果如下 User ID XYZ Password XYZ123文件上传实例 HTML设置上传文件的表单需要设置enctype 属性为multipart/form-data代码如下所示 html bodyform enctypemultipart/form-data actionsave_file.py methodpostpFile: input typefile namefilename //ppinput typesubmit valueUpload //p/form /body /htmlsave_file.py脚本文件代码如下 #!/usr/bin/pythonimport 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 The file fn was uploaded successfullyelse:message No file was uploadedprint \ Content-Type: text/html\n html bodyp%s/p /body /html% (message,)如果你使用的系统是Unix/Linux你必须替换文件分隔符在window下只需要使用open()语句即可 fn os.path.basename(fileitem.filename.replace(\\, / ))文件下载对话框 如果我们需要为用户提供文件下载链接并在用户点击链接后弹出文件下载对话框我们通过设置HTTP头信息来实现这些功能功能代码如下 #!/usr/bin/python# HTTP Header print Content-Type:application/octet-stream; name\FileName\\r\n; print Content-Disposition: attachment; filename\FileName\\r\n\n;# Actual File Content will go hear. fo open(foo.txt, rb)str fo.read(); print str# Close opend file fo.close()转自http://www.w3cschool.cc/python/python-cgi.html 什么是CGI CGI是一种协议通过这种协议或约定的规则WEB服务器可以和应用程序进行数据交互处理。 CGI包含三个方面 环境变量请求类型请求IP..标准输入请求主体标准输出请求响应 简而言之CGI在环境变量中描述了请求的基本信息在标准输入中描述了请求主体是如何传入的在标准输出中描述了请求响应是如何输出的。 什么是FASTCGI FASTCGI 是 CGI 的改进方案主要优点是把动态语言和 HTTP Server 分离开来。 因此 Nginx 与 PHP/PHP-FPM 经常被部署在不同的服务器上以分担前端 Nginx 服务器的压力。 使 Nginx 专一处理静态请求和转发动态请求而 PHP/PHP-FPM 服务器专一解析 PHP 动态请求。 区别 CGI 每次请求PHP都要重新解析php.ini重新加载全部扩展和初始化数据结构fork-and-execute模式高并发时效率低 FASTCGI 采用C/S结构HTTP服务器和脚本解析服务器分离多个脚本解析守护进程扩展加载和数据结构初始化在进程启动时只发生一次多个CGI程序保持在内存中接受FastCGI进程管理器调度 FastCGI原理图 Nginx 将 CGI 请求发送给 Socket 通过 FastCGI 接口Wrapper 接收到请求然后派生出一个新的线程这个线程调用解释器或者外部程序处理脚本并读取返回数据Wrapper 再将返回的数据通过 FastCGI 接口沿着固定的 Socket 传递给 NginxNginx 将返回的数据发送给客户端 PHP-FPM PHP-FPM 是 FASTCGI 协议的一种实现在 PHP5.3.× 版本中就开始内置该进程管理器。 Spawn-fcgi Spawn-fcgi是 HTTP 服务器 lighttpd 的一部分目前已经独立成为一个项目一般与 lighttpd 配合使用来支持PHP。 但是 ligttpd 的spwan-fcgi 在高并发访问的时候会出现内存泄漏甚至自动重启 FastCGI 的问题。 http://blog.segmentfault.com/vboy1010/1190000000459803 转自http://blog.segmentfault.com/vboy1010/1190000000459803
http://www.hkea.cn/news/14394261/

相关文章:

  • 网站百度收录是什么意思wordpress远程插件
  • 新建的网站可以百度推广seo是指什么岗位
  • 青岛做门户网站的建设网站需要几个文件夹
  • 深圳公明网站建设本周新闻热点10条2021
  • 海外仓网站建设大良手机网站建设
  • 备案 网站名称涉及到行业网站页面大小优化怎么做
  • 艺术设计专业灵感推荐网站品牌网站建设4a小蝌蚪
  • 郑州网站建设up188视频网站后台设计
  • 水果网站设计论文网站中的人力资源建设
  • 网站建设的报价制作网址怎么收费
  • 太原中企动力网站建设wordpress收起边栏
  • 柳市网站设计推广互联网巨头是哪几家
  • 做商城网站需要多大的服务器厦门网站建设哪家不错推荐
  • html5网站开发设计目前比较火的电商平台有哪些
  • 辽宁平台网站建设公司夜月直播下载直播
  • 信誉比较好的网上做任务的网站网页编程软件叫什么
  • zhi做网站家具设计公司
  • 永清县建设局 网站智慧软文网站
  • 教务在线网站开发报告书网上买保险网站
  • 做网站的的人收入多少钱电商运营培训视频课程
  • 东盟经济技术开发区建设网站部队网站设计
  • wordpress中文修改眼科医院网站优化服务商
  • 织梦本地做网站盐城市网站建设公司
  • 网站内页seo免费建站哪家有
  • 小说网站做兼职网络规划设计师多少分通过
  • 网站开发 群前端开发线下培训班
  • 成都海鸥手表网站seo外包优化公司
  • 江门网站制作设计怎么建设商城网站
  • 兰州网络公司网站石家庄建设局
  • 网站的宣传推广包括快速网站排名