Perl cgi编程语法

2 篇文章 0 订阅
 CGI脚本是用下列三种方法使用的:
作为一个表单的ACTION 
 <form name="test" action=/cgi-bin/upload.cgi>
链接link
<A HREF="http://192.168.1.12/cgi-bin/printenv"> Display the Date </A>
SSI
将CGI代码嵌在HTML中,称为SHTML


      perl cgi 的html 输出
perl-cgi脚本产生某种Web服务器能理解的输出结果

#!/usr/bin/perl
print "Content-type:text/html\n\n";   少一个\n会出500错误

print "<html><head><title>cgi test </title></head>";
print "<body bgcolor='yellow'>";

print "</body></html>";
     

        执行CGI,把输出显示在页面上,至少要有一句print "Content-type:text/html\n\n";
否则页面会显示[an error occurred while processing this directive]

        content-type实际是限制此句后面的所有输出,你输出的数据应该符合你所规定的content-type ;
Content-Type      
HTML       text/html       输出安置应该是在HTML.
Text       text/plain      
GIF         image/gif
JPEG       image/jpeg       输出应该是在一个二进制的GIF文件
MPEG       video/mpeg      


        在print "Content-type: text/html\n\n";之前,print别的信息,浏览器上无显示
#!/usr/bin/perl -w
。。。
print "$fileName";
print "Content-type: text/html\n\n";
浏览器什么都不显示
#!/usr/bin/perl -w
print "Content-type: text/html\n\n";
print "$fileName";
浏览器显示文件名


      print "\n"和print "<br>"都能在HTTP上输出换行?
print "<br>"肯定能输出换行,
只有当cgi脚本是纯perl语句时,\n能在浏览器上输出回车
下面的\n能输出换行
print "Content-type: text/html\n\n"; 
下面的\n,由于被夹在<body> </body>间,无法显示换行
print "<html><head><title>cgi test </title></head>";
print "<body bgcolor='yellow'>";
print "xxx\n";
print "</body></html>";
\n被夹在html语句中间时,浏览器是以html语言解释它,则不认识\n
必须改为print "xxx <br>";

        可以不输出文档,而是只通知用户浏览器哪儿可以得到这个新文档
Content-type: text/html
Location: /dir1/dir2/myfile.html


        采用shell script来编写CGI----- 关键是用echo输出html格式语句
[root@mac-home cgi-bin]# vi hello.sh
#!/bin/sh
echo "Content-type: text/html"
echo          输出一个空行,相当于\n\n
echo "How are you!"

普通的unix下执行

http://192.168.1.12/cgi-bin/hello.sh

 
# ./hello.sh
Content-type: text/html

How are you!
 网页只显示空白行和How are you!
     

===============================SSI=============================================

       什么是SSI(Server Side Includes)?
       SSI是HTML页面中的指令,可以把 一小段CGI程序插入到页面中 (而不是CGI程序模拟整个页面)
       SSI最典型的特征是index.shtml

      SSI最常用的几个地方:
       页面计数器
  您是第 <!--#exec cgi="/cgi-bin/counter.pl--> 位光临本站的客人
       页面当前时间

      enable apache SSI (以下两条都不用配,都是缺省就有)
vi httpd.conf
<Directory "/var/www/html">
    Options Indexes FollowSymLinks Includes
    或者
    Options Indexes FollowSymLinks IncludesNOEXEC
</Directory>
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml

      SSI指令的html语法:其格式很象HTML的注释,因此如果没有正确配置SSI,它会被浏览器忽略
<!--#element attribute=value attribute=value ...-->

     执行一个SSI CGI,把输出显示在页面上
两种方法:
<!--#exec cgi="/cgi-bin/counter.pl" -->    很危险建议不采用
<!--#include virtual="/cgi-bin/counter.pl" -->   


        <!--#exec功能是极度危险的,因为它会执行任何包含在exec标记中的命令
如果有可以修改网页内容的语句,比如“留言本”,那么一定要关闭这个功能
vi httpd.conf

<Directory "/var/www/html">
Options Indexes FollowSymLinks IncludesNOEXEC
                                    关闭exec功能,同时又保留SSI
</Directory> 


        SSI设置变量 
定义       <!--#set var=" modified " value="$LAST_MODIFIED" -->
应用       <!--#set var="date" value=" $modified " -->
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值