📄 gifs.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 + -