📄 nsadmin.cgi
字号:
#!/usr/bin/perl
#
#
##########################################################
# 网络小厨房 商店系统
# Net Kitchen SHOP
##########################################################
#首页代码
##########################################################
####################################################################################
#前端预处理
####################################################################################
use FindBin qw($Bin);
use lib "$Bin/library";
use iLcatlib;
use strict;
use vars qw(%FORM %CON %COOKIE $LIB $sth $row @userdata);
#获得系统参数
tie %CON, 'IniFiles', ( -file => "$Bin/nkshop.ini" );
#构造新对象
$LIB=iLcatlib->new(ttmlpath=>"$CON{path}{ttmlpath}");
#获得COOKIE
%COOKIE=$LIB->ReadCookie();
#获得提交内容
%FORM=$LIB->ReadParse();
#连接数据库
$LIB->MySQL_Connect(
database=>"$CON{database}{database}",
dbhost=>"$CON{database}{dbhost}",
dbuser=>"$CON{database}{dbuser}",
dbpwd=>"$CON{database}{dbpwd}"
);
#SESSION PROCESS
@userdata=$LIB->key_proc("$COOKIE{'key'}","$CON{parameter}{timeout}");
if ($FORM{'act'} eq "create_login") {&create_login;} #建立登陆数据
elsif ($FORM{'act'} eq "logout") {&delete_login;} #删除登陆数据
elsif ($FORM{'act'} eq "main") {&check_user;&main;} #第一页
elsif ($FORM{'act'} eq "admin_left") {&check_user;&admin_left;} #第一页框架LEFT
elsif ($FORM{'act'} eq "admin_main") {&check_user;&admin_main;} #第一页框架MAIN
elsif ($FORM{'act'} eq "pg_cate") {&check_user;&pg_cate;} #分类管理页
elsif ($FORM{'act'} eq "mv_cate") {&check_user;&mv_cate;} #分类移除页
elsif ($FORM{'act'} eq "ad_cate") {&check_user;&ad_cate;} #分类增加页
elsif ($FORM{'act'} eq "rn_cate") {&check_user;&rn_cate;} #分类更名页
elsif ($FORM{'act'} eq "rn_cate_do") {&check_user;&rn_cate_do;} #分类更名工作页
elsif ($FORM{'act'} eq "pg_life") {&check_user;&pg_life;} #分类管理页
elsif ($FORM{'act'} eq "mv_life") {&check_user;&mv_life;} #分类移除页
elsif ($FORM{'act'} eq "ad_life") {&check_user;&ad_life;} #分类增加页
elsif ($FORM{'act'} eq "rn_life") {&check_user;&rn_life;} #分类更名页
elsif ($FORM{'act'} eq "rn_life_do") {&check_user;&rn_life_do;} #分类更名工作页
elsif ($FORM{'act'} eq "pg_pro") {&check_user;&pg_pro;} #商品管理页
elsif ($FORM{'act'} eq "ad_pro") {&check_user;&ad_pro;} #商品增加页
elsif ($FORM{'act'} eq "up_pro") {&check_user;&up_pro;} #商品更新页
elsif ($FORM{'act'} eq "up_pro_do") {&check_user;&up_pro_do;} #商品更新工作页
elsif ($FORM{'act'} eq "se_pro") {&check_user;&se_pro;} #商品搜索工作页
elsif ($FORM{'act'} eq "mv_pro") {&check_user;&mv_pro;} #商品移除工作页
elsif ($FORM{'act'} eq "ed_pro") {&check_user;&ed_pro;} #商品编辑页
elsif ($FORM{'act'} eq "ed_pro_do") {&check_user;&ed_pro_do;} #商品编辑工作页
elsif ($FORM{'act'} eq "pg_account") {&check_user;&pg_account;} #帐务单页
elsif ($FORM{'act'} eq "do_account") {&check_user;&do_account;} #帐务工作页
elsif ($FORM{'act'} eq "pg_goods") {&check_user;&pg_goods;} #物流单页
elsif ($FORM{'act'} eq "do_goods") {&check_user;&do_goods;} #物流工作页
else {&login;} #无任何请求登陆
sub login
{
print "Content-type: text/html\n\n";
print qq~
<form method="POST" action="nsadmin.cgi">
<p>ID<input type="text" name="uid" size="20"></p>
<p>PWD<input type="password" name="pwd" size="20"><input type="submit" value="提交" name="B1"></p>
<input type="hidden" name="act" value="create_login">
</form>~;
exit;
}
########检测用户
sub check_user
{
if ($userdata[0] eq "游客") {
$LIB->CookieClear('key');
$LIB->Error("用户超时,请重新登陆");
}
elsif ($userdata[1] ne "0") {
$LIB->CookieClear('key');
$LIB->Error("用户权限不够");
}
return();
}
sub create_login
{
my ($session_key);
###########################
#建立用户的SESSION KEY
####检测用户
if ($COOKIE{'key'} eq "") {#如果是未登陆用户
$sth=$LIB->MySQL_Query("select id,passwd,level from userdata where id = '$FORM{'uid'}'");
$row = $sth->fetchrow_arrayref();
$FORM{'pwd'}=$LIB->crypt("$FORM{'pwd'}");
if ($FORM{'pwd'} ne $row->[1]) {$LIB->Error("用户密码错误");}
elsif ($row->[2] ne 0) {$LIB->Error("用户权限不够,必须是最高级用户");}
#######################
#建立用户登陆数据
my $lgt = time();
my $ukey = $LIB->RandKey();
$LIB->MySQL_Do("UPDATE userdata set lgt='$lgt',ukey='$ukey' where id = '$FORM{'uid'}'");
$session_key = &iLcatlib::cookie(-name=>'key',
-value=>"$ukey",
-expires=>"+$CON{parameter}{timeout}s");
print "Set-Cookie: $session_key\n";
}
else {#如果是已经登陆用户权限不够就显示错误
if ($userdata[1] != 0) {$LIB->Error("用户权限不够");}
}
$LIB->Location("$CON{path}{cgiurl}/nsadmin.cgi?act=main");
exit
}
########检测用户
sub delete_login
{
$LIB->MySQL_Do("UPDATE userdata set lgt='',ukey='' where id = '$userdata[0]'") if ($userdata[1] == 0);
$LIB->CookieClear('key');
$LIB->Location("$CON{path}{cgiurl}/nsadmin.cgi");
exit;
}
##################################################################
# MAIN PAGE部分
##################################################################
sub main
{
my ($text,@view);
$text={
cgiurl => $CON{path}{cgiurl},
};
@view=$LIB->Parse("admin.htm",$text);
print @view;
#MySQL Disconnect
$LIB->MySQL_Disconnect();
#The END
$LIB->exit();
}
sub admin_left
{
my ($text,@view);
$text={
cgiurl => $CON{path}{cgiurl},
imgurl => $CON{path}{webimg},
};
@view=$LIB->Parse("admin_left.htm",$text);
print @view;
#MySQL Disconnect
$LIB->MySQL_Disconnect();
#The END
$LIB->exit();
}
sub admin_main
{
my ($text,@view);
@view=$LIB->Parse("admin_main.htm");
print @view;
#MySQL Disconnect
$LIB->MySQL_Disconnect();
#The END
$LIB->exit();
}
##################################################################
# 产品管理部分
##################################################################
#-----------------------------
# 分类页
#-----------------------------
sub pg_cate
{
my ($text,@view,%dbs);
##########
#总量
$sth=$LIB->MySQL_Query("select count(cate_num) from pro_cate where cate_type='0'");
$row = $sth->fetchrow_arrayref();
my $count = $row->[0];
#获得分类
my $dm_catelist=0;
$sth=$LIB->MySQL_Query("select cate_num,cate_name,cate_level,cate_cretime from pro_cate where cate_type = '0'");
while (($row = $sth->fetchrow_arrayref)){
$dbs{'catelist'}{"$dm_catelist"}={
num => $row->[0],
name => $row->[1],
level => $row->[2],
cretime => $row->[3],
};
$dm_catelist++;
}
$text = {
cgiurl => $CON{path}{cgiurl},
imgurl => $CON{path}{webimg},
loop_catelist=> $dm_catelist-1,
count => $count,
};
@view=$LIB->Parse("admin_pg_cate.htm",$text,%dbs);
print @view;
#MySQL Disconnect
$LIB->MySQL_Disconnect();
#The END
$LIB->exit();
}
#-----------------------------
# 分类增加页
#-----------------------------
sub ad_cate
{
#Filter Values
$FORM{'cate_name'}=$LIB->MySQL_Quote("$FORM{'cate_name'}");
$FORM{'cate_level'}=$LIB->MySQL_Quote("$FORM{'cate_level'}");
##########
#顺序号
$sth=$LIB->MySQL_Query("select cate_num from pro_cate order by cate_num desc limit 1");
$row = $sth->fetchrow_arrayref();
my $cate_num = $row->[0]+1;
#将新分类增加到数据库当中
$LIB->MySQL_Do("INSERT into pro_cate(cate_num,cate_name,cate_level,cate_type,cate_cretime)
values('$cate_num',$FORM{'cate_name'},$FORM{'cate_level'},'0',sysdate())
");
$LIB->Location("$CON{path}{cgiurl}/nsadmin.cgi?act=pg_cate");
#MySQL Disconnect
$LIB->MySQL_Disconnect();
#The END
$LIB->exit();
}
#-----------------------------
# 关系页
#-----------------------------
sub pg_life
{
my ($text,@view,%dbs);
##########
#总量
$sth=$LIB->MySQL_Query("select count(cate_num) from pro_cate where cate_type='1'");
$row = $sth->fetchrow_arrayref();
my $count = $row->[0];
#获得所有的关系
my $dm_lifelist=0;
$sth=$LIB->MySQL_Query("select cate_num,cate_name,cate_level,cate_cretime,cate_image from pro_cate where cate_type = '1'");
while (($row = $sth->fetchrow_arrayref)){
$dbs{'lifelist'}{"$dm_lifelist"}={
num => $row->[0],
name => $row->[1],
level => $row->[2],
cretime => $row->[3],
image => "$row->[4]",
};
$dm_lifelist++;
}
$text = {
cgiurl => $CON{path}{cgiurl},
imgurl => $CON{path}{webimg},
loop_lifelist=> $dm_lifelist-1,
count => $count,
};
@view=$LIB->Parse("admin_pg_life.htm",$text,%dbs);
print @view;
#MySQL Disconnect
$LIB->MySQL_Disconnect();
#The END
$LIB->exit();
}
#-----------------------------
# 关系增加页
#-----------------------------
sub ad_life
{
my ($file,$fh,$extname,$buffer,$image);
#Filter Values
$FORM{'cate_name'}=$LIB->MySQL_Quote("$FORM{'cate_name'}");
#如果存在图片就UP图片到服务器上
if ($FORM{'cate_image'} ne "") {
$file = &iLcatlib::param("cate_image");
$fh = &iLcatlib::upload("cate_image");
($extname,$buffer);
$file =~ s/^.*(\\|\/)//;
if ($file =~ /\.([\W\w\d]+)$/) {
$extname = $1;
}
if (-e "$CON{path}{proimgpath}/$file") {
close ($fh);
$LIB->Error("$CON{path}{proimgpath}/$file 这个文件名已经存在");
}
unless (open (OUTFILE,">$CON{path}{proimgpath}/$file")) {
close ($fh);
$LIB->Error("$CON{path}{proimgpath}/$file 不能写文件");
}
binmode $fh;
binmode OUTFILE;
while (read($fh, $buffer, 1024)) {
print OUTFILE $buffer;
}
close (OUTFILE);
close ($fh);
$image="$CON{path}{proimg}/$file";
}
else{
$image="$CON{path}{proimg}/$CON{path}{lifemain}";
}
##########
#顺序号
$sth=$LIB->MySQL_Query("select cate_num from pro_cate order by cate_num desc limit 1");
$row = $sth->fetchrow_arrayref();
my $cate_num = $row->[0]+1;
#将新关系增加到数据库当中
$LIB->MySQL_Do("INSERT into pro_cate(cate_num,cate_name,cate_image,cate_type,cate_cretime)
values('$cate_num',$FORM{'cate_name'},'$image','1',sysdate())
");
$LIB->Location("$CON{path}{cgiurl}/nsadmin.cgi?act=pg_life");
#MySQL Disconnect
$LIB->MySQL_Disconnect();
#The END
$LIB->exit();
}
#-----------------------------
# 产品页
#-----------------------------
sub pg_pro
{
my ($text,@view,%dbs,$row2,$row3,$sth2);
##########
#总量
$sth=$LIB->MySQL_Query("select count(cate_num) from pro_cate where cate_type='0'");
$row = $sth->fetchrow_arrayref();
my $count = $row->[0];
#获得数据
my $dm_prolist=0;
$sth=$LIB->MySQL_Query("select num,name,image,photo,price,amount,choosed,sellout,inherit_cate,life_foot,cretime,pid from store order by cretime desc");
while (($row = $sth->fetchrow_arrayref)){
##########
#总量
$sth2=$LIB->MySQL_Query("select cate_name from pro_cate where cate_num = '$row->[8]'");
$row2 = $sth2->fetchrow_arrayref();
##########
#总量
$sth2=$LIB->MySQL_Query("select cate_name from pro_cate where cate_num = '$row->[9]'");
$row3 = $sth2->fetchrow_arrayref();
$dbs{'prolist'}{"$dm_prolist"}={
num => $row->[0],
name => $row->[1],
image => $row->[2],
photo => $row->[3],
price => $row->[4],
amount => $row->[5],
choosed => $row->[6],
sellout => $row->[7],
cate_name => $row2->[0],
life_name => $row3->[0],
cretime => $row->[10],
pid => $row->[11],
cgiurl => $CON{path}{cgiurl},
};
$dm_prolist++;
}
#获得生存关系
my $dm_lifefoot=0;
$sth=$LIB->MySQL_Query("select cate_num,cate_name from pro_cate where cate_type = '1' order by cate_num desc");
while (($row = $sth->fetchrow_arrayref)){
$dbs{'lifefoot'}{"$dm_lifefoot"}={
cate_num => $row->[0],
cate_name => $row->[1],
};
$dm_lifefoot++;
}
#获得生存关系
my $dm_inherit_cate=0;
$sth=$LIB->MySQL_Query("select cate_num,cate_name from pro_cate where cate_type = '0' order by cate_num desc");
while (($row = $sth->fetchrow_arrayref)){
$dbs{'inherit_cate'}{"$dm_inherit_cate"}={
cate_num => $row->[0],
cate_name => $row->[1],
};
$dm_inherit_cate++;
}
$text = {
cgiurl => $CON{path}{cgiurl},
imgurl => $CON{path}{webimg},
loop_prolist=> $dm_prolist-1,
loop_lifefoot=> $dm_lifefoot-1,
loop_inherit_cate=> $dm_inherit_cate-1,
count => $count,
};
@view=$LIB->Parse("admin_pg_pro.htm",$text,%dbs);
print @view;
#MySQL Disconnect
$LIB->MySQL_Disconnect();
#The END
$LIB->exit();
}
sub ad_pro
{
#########声明!
my ($image_file,$image_fh,$image_extname,$buffer,$photo_file,$photo_fh,$photo_extname);
#########CheckINPUT
if ($FORM{'name'} eq "") {$LIB->Error("请填写产品名称");}
elsif ($FORM{'pid'} eq "") {$LIB->Error("请填写货号");}
elsif ($FORM{'price'} eq "") {$LIB->Error("请填写产品单价");}
elsif ($FORM{'amount'} eq "") {$LIB->Error("请填写产品数量");}
elsif ($FORM{'des'} eq "") {$LIB->Error("请填写产品介绍");}
elsif ($FORM{'image'} eq "") {$LIB->Error("请上载小图片");}
elsif ($FORM{'photo'} eq "") {$LIB->Error("请上载大图片");}
#Filter Values
$FORM{'name'} = $LIB->MySQL_Quote("$FORM{'name'}");
$FORM{'pid'} = $LIB->MySQL_Quote("$FORM{'pid'}");
$FORM{'spec_desc'} = $LIB->MySQL_Quote("$FORM{'spec_desc'}");
$FORM{'spec'} = $LIB->MySQL_Quote("$FORM{'spec'}");
$FORM{'price'} = $LIB->MySQL_Quote("$FORM{'price'}");
$FORM{'amount'} = $LIB->MySQL_Quote("$FORM{'amount'}");
$FORM{'life_foot'} = $LIB->MySQL_Quote("$FORM{'life_foot'}");
$FORM{'statmsg'} = $LIB->MySQL_Quote("$FORM{'statmsg'}");
$FORM{'inherit_cate'}= $LIB->MySQL_Quote("$FORM{'inherit_cate'}");
$FORM{'des'} = $LIB->MySQL_Quote("$FORM{'des'}");
##########
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -