⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gifs.cgi

📁 号码随机程序cgi 演示地址:http://fjpc.net/cgi/gifs.cgi?action=0
💻 CGI
字号:
   多功能随机抽取号码程序(不完整源码)


演示地址:http://fjpc.net/cgi/gifs.cgi?action=0


   摘自 中国Perl协会 用户推广组   helper  2006-01-14 16:40
http://perlchina.sun126.com/cgi-bin/ccb/index.cgi 
演示地址:http://fjpc.net/cgi/gifs.cgi
欢迎提出改进意见。联系方式见源码行内。

#!/usr/bin/perl

###################################################################
#名称:随机抽机号码程序gifs.cgi
#作者:邱雄盛
#网址:http://fjpc.net
#邮箱:sunboydavid@hotmail.com
#QQ:2263537
#SkyPe:haoqiu
#时间:2006-1-13 23:33
###################################################################

use strict;

# Imports
use CGI::Carp qw(fatalsToBrowser);
use UTCGI;

# Get CGI parameters
my $cgi = new UTCGI;
my $startnum=int($cgi->param('startnum'));
my $endnum=int($cgi->param('endnum'));
my $randnum=int($cgi->param('randnum'));
my $action =int($cgi->param('action'));
my $upload = $cgi->param('upload');
my $sort = int($cgi->param('sort'));
my $mode = int($cgi->param('mode'));
my $source = int($cgi->param('source'));
my $intnum = int($cgi->param('intnum'));
my $takenum = int($cgi->param('takenum'));
my $intnum2 = int($cgi->param('intnum2'));
my $takenum2 = int($cgi->param('takenum2'));

print $cgi->header(-charset=>'GB2312',-type=>'text/html',-expires=>'-1h');

#页眉,样式表
my $header= qq~<html><head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>号码随机程序</title>
<style>
input{font-family: Verdana; font-size: 9pt; font-weight: bold}
</style>
</head>
<body align=center>
~;
#页脚,版权
my $footer=qq~<p align="center"><font color="#FF0000"><span lang="en"><font face="宋体"><span style="font-size: 9pt">?</span></font></span><font face="宋体"><span style="font-size: 9pt">1999-2006 <a href=http://fjpc.net>福建电脑资讯站</a> 作者:<a href=callto:haoqiu>邱雄盛</a></span></font></font></p></body></html>~;

if ($action == 1){
     my @numbers=();
     #号码来源
          #从上传文件取得
          if ($source ==1){
               $upload =~ s/\s+/\n/g;
               @numbers= split(/\n/,$upload);
               chomp @numbers;
          }
          #从号码范围取得
          else{
               @numbers=getnum($startnum,$endnum);
          }

     #抽取方式
          #随机抽取
          if ($mode == 1){
               if ($source==0){
                    $randnum or printMessage ("随机抽取个数不能是0!\n");
                    ($startnum < $endnum) or printMessage ("结束号码不能小于开始号码!\n");
               }
               #打乱号码后随机取个数
               @numbers=brokenum(\@numbers,$randnum);
          }
          #隔行抽取
          elsif($mode == 2){
               $intnum or printMessage ("隔行个数不能是0!\n");
               $takenum or printMessage ("抽取个数不能是0!\n");
               #隔行抽取
               @numbers=internum(\@numbers,$intnum,$takenum);
          }
          #随机并隔行抽取
          else{
               $intnum2 or printMessage ("隔行个数不能是0!\n");
               $takenum2 or printMessage ("抽取个数不能是0!\n");
               #先打乱号码再隔行抽取
               @numbers=brokenum(\@numbers,undef);
               @numbers=internum(\@numbers,$intnum2,$takenum2);
          }

     #排序方式(详细见perldoc -f sort)
          #升序
          if ($sort == 1){
               @numbers = sort {$a <=> $b} @numbers;
          }
          #降序
          elsif($sort == 2){
               @numbers = sort {$b <=> $a} @numbers;
          }
          #不排序不处理

     print $header;
     print "<p align=center>";
     foreach (@numbers){
          print $_,"\n";
     }

     print "</p><p align=center><a href='gifs.cgi?action=0'>返回</a></p>",$footer;

}else{
     print $header;
     print qq~
     <table border="0" id="table1" cellspacing="4" cellpadding="3" align="center" width="400" align=center>
     <tr><form method="POST" name="form" action="" enctype="multipart/form-data"><input type="hidden" name="action" value="1">
          <td colspan="3" align="center">
          <font face="黑体" color="#FF0000">号码随机程序</font></td>
     </tr>
     <tr>
          <td width="321" colspan="3"> </td>
     </tr>
     <tr>
          <td colspan="3" bgcolor="#000000" align="center"><font face="黑体" color="#FFFFFF">号码来源</font></td>
     </tr>
     <tr>
          <td width="4"> </td>
          <td colspan="2"><input type="radio" value="1" name="source"><font face="黑体">从上传文件获取</font>(空格符或回车符隔开)</td>
     </tr>
     <tr>
          <td width="4"> </td>
          <td colspan="2"><input type="file" name="upload" size="20"></td>
     </tr>
     <tr>
          <td width="4"> </td>
          <td colspan="2"><input type="radio" value="0" checked name="source"><font face="黑体">号码范围输入</font></td>
     </tr>
     <tr>
          <td width="4"> </td>
          <td align="right" width="150"><font face="黑体">开始号码</font></td>
          <td width="190">
          <input type="text" name="startnum" size="12"></td>
     </tr>
     <tr>
          <td width="4"> </td>
          <td align="right" width="150"><font face="黑体">结束号码</font></td>
          <td width="190"><input type="text" name="endnum" size="12"></td>
     </tr>
     <tr>
          <td colspan="3" bgcolor="#000000" align="center"><font face="黑体" color="#FFFFFF">抽取方式</font></td>
     </tr>
     <tr>
          <td width="4"> </td>
          <td align="right" width="150"><input type="radio" value="1" name="mode" checked><font face="黑体">随机抽取</font></td>
          <td width="190"><input type="text" name="randnum" size="4" maxlength="6"><font face="黑体">个</font></td>
     </tr>
     <tr>
          <td width="4"> </td>
          <td align="right" width="150"><input type="radio" value="2" name="mode"><font face="黑体">隔行抽取</font></td>
          <td><font face="黑体">隔<input type="text" name="intnum" size="3" maxlength="4">行 抽<input type="text" name="takenum" size="3" maxlength="4">个</font></td>
     </tr>
     <tr>
          <td width="4"> </td>
          <td align="right" width="150"><input type="radio" value="3" name="mode"><font face="黑体">随机并隔行抽取</font></td>
          <td><font face="黑体">隔<input type="text" name="intnum2" size="3" maxlength="4">行 抽<input type="text" name="takenum2" size="3" maxlength="4">个</font></td>
     </tr>
     <tr>
          <td colspan="3" bgcolor="#000000" align="center"><font face="黑体" color="#FFFFFF">排序显示方式</font></td>
          </tr>
     <tr>
          <td width="4"> </td>
          <td align="right" width="150"><input type="radio" value="0" name="sort" checked></td>
          <td><font face="黑体">打乱显示</font></td>
     </tr>
     <tr>
          <td width="4"> </td>
          <td align="right" width="150"><input type="radio" value="1" name="sort"></td>
          <td><font face="黑体">升序显示</font></td>
     </tr>
     <tr>
          <td width="4"> </td>
          <td align="right" width="150"><input type="radio" value="2" name="sort"></td>
          <td><font face="黑体">降序显示</font></td>
     </tr>
     <tr>
          <td colspan="3" align="center"><hr><input type="submit" value=" 确定 " name="B1">
          <input type="reset" value=" 取消 " name="B2"></font></td>
     </tr>
     </form>
     </table>
     ~;
     print $footer;
}



#取得全部号码
sub getnum{
     my ($startnum,$endnum) = @_;

     ($endnum - $startnum >=3) or printMessage("开始号码或结束号码有误!");
     my @numbers=($startnum..$endnum);

     return @numbers;
}

#随机抽取号码
sub brokenum{
     my $numbers=shift();
     my $randnum=shift();

     #初始化随机函数
     srand( time() ^ ($$ + ($$ << 15)) );

     my @numberstemp = @$numbers;
     my @numbers=();

     #打乱源
     if ($randnum){
          my $i=0;
       while ($i<$randnum) {
            $i=$i+1;
               push(@numbers, splice(@numberstemp, rand @numberstemp, 1));
       }
     }else{
       while (@numberstemp) {
               push(@numbers, splice(@numberstemp, rand @numberstemp, 1));
       }
     }
  return @numbers;
}

#隔行抽取号码
sub internum{
     my $numbers=shift();
     my $intnum=shift();
     my $takenum=shift();

     my @numberstemp = @$numbers;
     my @numbers=();
     my $numbers=scalar(@numberstemp);
     my $i=0;
     while($i <= $numbers){
          $i=$i+$intnum;
          for (my $u=0;$u<$takenum;$u++){
               push(@numbers,@numberstemp[$i]);
               $i=$i+1;
          }
     }
     return @numbers;
}

sub printMessage{
     my $message=shift();
     print $header,"<p align=center>",$message,"</p><p align=center><a href='gifs.cgi?action=0'>返回</a></p>",$footer;
     exit;
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -