Username: Password:

CGI教学:第一章cgilib例
来源:linux宝库作者:linux宝库 发布时间:2007-09-30 00:00:00


  一个简单的读取并处理表格请求数据的cgilib.pl例子:

  #!/usr/bin/perl

  sub readGetData{

  # 指定局部变量queryString用以保存和传递函数的参数

  local(*queryString) = @_ if @_;

  # 读取环境变量QUERY_STRING的值赋给变量$queryString

  $queryString = $ENV{"QUERY_STRING"};

  return 1;

  }

  sub readPostData{

  local(*queryString)=@_ if @_;

  local($contentLength);

  # 读取环境变量CONTENT_LENGTH的值

  $contentLength = $ENV{"CONTENT_LENGTH"};

  # 检查是否有数据

  if($contentLength){

  # 从设备STDIN读取contentLength长度的字符赋给$queryString

  read(STDIN,$queryString,$contentLength);

  }

  return 1;

  }

  sub readData{

  local(*queryString) = @_ if @_;

  # 读取环境变量REQUEST_METHOD

  $requestType=$ENV{"REQUEST_METHOD"};

  # 假如请求方式为GET则使用函数readGetData

  # 否则假如请求方式为POST则使用函数readPostData

  if($requestType eq "GET"){

  &readGetData(*queryString);

  }

  elsif($requestType eq "POST"){

  &readPostData(*queryString);

  }

  return 1;

  }

  sub DecodeData{

  local(*queryString)= @_;

  # 把加号转换成空格

  $queryString=~s/\+/ /g;

  # 转换十六进制字符

  $queryString=~s/%(..)/pack("c",hex($1))/ge;

  return 1;

  }

  sub parseData{

  local(*queryString,*formData) = @_ if @_;

  local($key,$value,$curString,@tmpArray);

  # 以&为分隔符把字符串转换成键-值对

  @tmpArray = split(/&/,$queryString);

  # 在数组@tmpArray内循环

  foreach $curString(@tmpArray){

  # 以=为分隔符分开键-值对

  ($key,$value) = split(/=/,$curString);

  # 解码

  &DecodeData(*key);

  &DecodeData(*value);

  # 把键和值加到字典中

  $formData{$key}=$value;

  }

  return 1;

  }

  1;

  #end of file cgilib.pl

  使用方法:

  要使用此库需含下列语句:

  #require "cgilib.pl";

  表格数据处理:

  %dataDict=();

  &readData(*data);

  &parseData(*data,dataDict);

  字典数据处理:

  while(($key,$value)=each(%dataDict)){

  print $key,"=",$value,"\n\n";

  }

喜欢本文,那就收藏到:

    Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪ViVi 365Key网摘 天极网摘 和讯网摘 博拉网 POCO网摘 添加到饭否 QQ书签 Digbuzz我挖网
相关评论  我也要评论
还没有关于此文章的相关评论!
  • 昵称: (为空则显示guest)
  • 评论分数: ★ ★ ★★★ ★★★★ ★★★★★
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
  • 导航
    赞助商
    文章类别
    订阅