perl源码 将简单留言板的代码重新整理一下,期待高手提拔。

1019阅读 0评论2009-10-13 hao3721
分类:

index.cgi  显示首页

#!/usr/bin/perl

use strict;
use CGI;
use Template;
BEGIN{
        use CGI::Carp qw(fatalsToBrowser carpout);
}

my $q = CGI->new;
my $config = {
        INCLUDE_PATH => 'ttdir',
    };
my $vars = {
        path_post =>'post.cgi',
 };
my $input = '2.tt';

my $tt = Template->new($config)||die "$Template::ERROR\n";
print $q->header(-type=>'text/html',-charset=>'gb2312');
$tt->process($input,$vars) || die $tt->error(), "\n";

view.cgi 显示页面

#!/usr/bin/perl

use DBI;
use CGI ':standard';
use Template;
BEGIN{
        use CGI::Carp qw(fatalsToBrowser carpout);
}
my @myarray,$error_msg;
my $db=DBI->connect('DBI:mysql:sample_db;user=root');
my $num = 5; # items number per page

my $page = param('page') || 1;
my $sth=$db->prepare("select count(*) as dd from test");
$sth->execute;
my ($count) = $sth->fetchrow_array;
if ($count == 0) {
    print header(-type=>'text/html',-charset=>'gb2312');
    print p("当前没有记录");
    $db->disconnect;
    exit;
}

my $total;
if ($count % $num ) {
    $total = int ($count/$num) +1;
} else {
    $total = $count/$num;
}
         
if ($page < 1 or $page > $total or $page =~ /[^0-9]/) {
    print header(-type=>'text/html',-charset=>'gb2312');
    print p("页码错误");
    $db->disconnect;
    exit;
}
    
my $prepg = ($page -1) || 1;
my $nextpg = ($page +1 > $total) ? $total : $page +1;

my $offset = $num * ($page -1);
    $sth=$db->prepare("select id,user,info from test order by id desc limit $offset,$num")
        or die "Can't prepare sql statement".DBI->errstr;
        $sth->execute();
        if($sth->rows==0){
                print "No date";
                exit;
        }
        while(my @val=$sth->fetchrow_array()){
                push @myarray, {"id"=>$val[0], "user" => $val[1], "info" => $val[2] };
                }
        $sth->finish();
        $db->disconnect();
my $config = {
        INCLUDE_PATH => 'ttdir',
    };
my $vars = {
        path_add => "index.cgi",
        Message => \@myarray,
        path_page => 'view.cgi',
        current_page => $page,
        total_page => $total,
        pre_page => $prepg,
        next_page => $nextpg,
        count => $count,
 };
my $input = 'view.tt';
my $tt = Template->new($config)||die "$Template::ERROR\n";
print header(-type=>'text/html',-charset=>'gb2312');
$tt->process($input,$vars) || die $tt->error(), "\n";


post.cgi提交页面

#!/usr/bin/perl

use DBI;
use CGI ':standard';
BEGIN{
        use CGI::Carp qw(fatalsToBrowser carpout);
}
$db=DBI->connect('DBI:mysql:sample_db;user=root');
        if (param()){
        $username=param('username');
        $info=param('info');
        $sth=$db->prepare("insert into test(user,info) values(?,?)")
        or die "Can't prepare sql statement".DBI->errstr;
        $sth->execute($username,$info);
        $sth->finish();
        $db->disconnect();
        print redirect("view.cgi");
}

mod.cgi修改留言

#!/usr/bin/perl

use DBI;
use CGI ':standard';
use Template;
BEGIN{
        use CGI::Carp qw(fatalsToBrowser carpout);
}

my $id;
if (param()){
$id=param("id");
$db=DBI->connect('DBI:mysql:sample_db;user=root');
$sth=$db->prepare("select user,info,id from test where id=$id") or die "Can't prepare sql statement".DBI->errstr;
$sth->execute();
while(my @val=$sth->fetchrow_array()){
                $user=$val[0];
                $info=$val[1];
                $id=$val[2];
                }
        $sth->finish();
        $db->disconnect();
my $config = {
        INCLUDE_PATH => 'ttdir',
    };
my $vars = {
        path_mod =>'modok.cgi',
        username => $user,
        info => $info,
        id=> $id,
 };
my $input = 'mod.tt';

my $tt = Template->new($config)||die "$Template::ERROR\n";
print header(-type=>'text/html',-charset=>'gb2312');
$tt->process($input,$vars) || die $tt->error(), "\n";
}

modok.cgi修改成功:

#!/usr/bin/perl

use DBI;
use CGI ':standard';
BEGIN{
        use CGI::Carp qw(fatalsToBrowser carpout);
}
        my $db=DBI->connect('DBI:mysql:sample_db;user=root');
        if (param()){
        my $username=param("username");
        my $id=param("id");
        my $info=param("info");
        my $sth=$db->prepare("UPDATE test SET user=?,info=? WHERE id=?")
        or die "Can't prepare sql statement".DBI->errstr;
        $sth->execute($username,$info,$id);
        $sth->finish();
        $db->disconnect();
        print header(-charset=>"gb2312");
        print qq{<script language="javascript">
                alert('修改成功!');
                location.href='view.cgi';
                </script>};
        }

删除留言 del.cgi

#!/usr/bin/perl

use DBI;
use CGI ':standard';
use strict;
BEGIN{
        use CGI::Carp qw(fatalsToBrowser carpout);
}
my $db=DBI->connect('DBI:mysql:sample_db;user=root');
        if (param()){
        my $id=param("id");
        my $sth=$db->prepare("DELETE FROM test WHERE id=?")
        or die "Can't prepare sql statement".DBI->errstr;
        $sth->execute($id);
        $sth->finish();
        $db->disconnect();
        print header(-charset=>"gb2312");
        print qq{<script language="javascript">
                alert('删除成功!');
                location.href='view.cgi';
                </script>};
        }


上一篇:TT模板 将简单留言板的代码重新整理一下,期待高手提拔。
下一篇:CGI:Cookies的用法