免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12345下一页
最近访问板块 发新帖
查看: 17749 | 回复: 43
打印 上一主题 下一主题

本人用Dancer框架写的个人网站源码(+1.3011版代码) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-07-22 11:14 |只看该作者 |倒序浏览
本帖最后由 aef25u 于 2011-03-28 15:43 编辑

因最近有人反映代码有问题,检查后发现是由于Dancer版本更新引起的:
-------------------------------------------
Dancer最新版本-1.3011请下载此附件(2011-03-28更新): MyDancer.rar (42.7 KB, 下载次数: 350)
-------------------------------------------

这是本人用perl的Dancer+DBI+SQLite+TT实现的网站源码
此附件为旧版Dancer: dancer.rar (35.99 KB, 下载次数: 232)

运行环境:Windows XP、strawberry perl、IE

实现了:
    1、Template::Toolkit、SQLite、Authen::Simple:BI、Dancer::Session::Storable在dancer框架中的简单运用。
    2、javascript+css实现二级导航栏
    3、网站Perl代码着色显示
    4、post方法的注册表单、登陆表单和留言本。

内附(位于dancer目录下):
    start.bat  方便本机运行WEB服务器 (然后在IE中输入http://localhost:3000/)
    SQLite.pl  生成test.db数据库

1、dancer.pl
  1. #!/usr/bin/perl
  2. use DBI;
  3. use Dancer;
  4. use MyDancer;
  5. use Dancer::Plugin::Database;

  6. my @pages = qw(TtExample SqlExample  registerExample loginExample GuesBookExample configExample layoutTT);

  7. #与use MyDancer等同;
  8. #get '/', sub {
  9. #    layout 'main.tt';
  10. #    template 'home';
  11. #};

  12. get '/:page' => sub {
  13.     layout 'main.tt';
  14.     my ($page) = params->{page};
  15.     pass and return false unless grep /$page/, @pages;
  16.     template $page;
  17. };

  18. get '/tt/scalar', sub {
  19.     layout 'main.tt';   
  20.     template 'scalar' =>
  21.       { content => '欢迎您的到来!希望你也会和我一样喜欢上Perl与Dancer!', };
  22. };

  23. get '/tt/table', sub {
  24.     layout 'main.tt';
  25.     my $r = [ { a => 1, b => 2, c => 3, },
  26.               { a => 2, b => 4, c => 6, } ];
  27.     template 'table' => { r => $r, };
  28. };

  29. get '/tt/filter', sub {
  30.     layout 'main.tt';
  31.     template 'filter';
  32. };

  33. get '/Sql/dbiSqlTest', sub {
  34.     layout 'main.tt';
  35.     my $dbh =
  36.       DBI->connect( "dbi:SQLite:dbname=test.db",,,
  37.         { RaiseError => 1, AutoCommit => 1 } );
  38.     my $sth = $dbh->prepare( 'select * from test where id = 1' );
  39.     $sth->execute;
  40.     my @row_ary = $sth->fetchrow_array;
  41.     template 'dbiSqlTest' => { head => 'use DBI', content => $row_ary[1], };
  42. };

  43. get '/Sql/PluginSqlTest', sub {
  44.     layout 'main.tt';
  45.     my $sth = database->prepare( 'select * from test where id = 1' );
  46.     $sth->execute;
  47.     my @row_ary = $sth->fetchrow_array;
  48.     template 'PluginSqlTest',
  49.       {
  50.         head    => 'use Dancer::Plugin::Database',
  51.         content => $row_ary[1],
  52.       };
  53. };

  54. #表单注册
  55. get '/book/register' => sub {
  56.     layout 'login_main';
  57.     template
  58.       'register' => { path => 'GuestBook' },

  59. };

  60. post '/book/register' => sub {
  61.     my $sth =
  62.       database->prepare('SELECT * FROM authentication  WHERE username=?');
  63.     $sth->execute( params->{username} );
  64.     if ( $sth->fetch ) {
  65.         return "User had been registered, sorry";
  66.     }
  67.     $sth = database->prepare('INSERT INTO authentication  VALUES(NULL,?,?,?)');
  68.     $sth->execute(
  69.         params->{username},
  70.         params->{password},
  71.         params->{fmemail},
  72.     );

  73.     session user => params->{username};
  74.     redirect params->{path};

  75. };

  76. #GuestBook
  77. get '/book/GuestBook' => sub {
  78.     layout 'login_main';
  79.     my @myarray;
  80.     my $sth = database->prepare( 'select * from comments order by id asc' );
  81.     $sth->execute;
  82.     while(my @row_ary = $sth->fetchrow_array){
  83.     push @myarray, { user => $row_ary[1], info => $row_ary[2] };
  84.     }

  85.     template 'GuestBook' => {message=>\@myarray};  

  86. };

  87. post '/book/GuestBook' => sub {
  88.     my $username=session('user');
  89.     if (length params->{fmmsg} > 4096) {
  90.       return "Your comment is too long, sorry";
  91.     }
  92.     my $sth =
  93.       database->prepare('INSERT INTO comments  VALUES(NULL,?,?)');
  94.     $sth->execute(
  95.       $username,
  96.       params->{fmmsg},
  97.     );
  98.     session user => $username;
  99.     redirect 'GuestBook';

  100. };

  101. #表单登陆
  102. load_app 'Pamlogin';

  103. dance;
复制代码
2、Pamlogin.pm
  1. package Pamlogin;
  2. use Authen::Simple::DBI;
  3. use Dancer ':syntax';

  4. # will match '/book/*'
  5. prefix '/book';

  6. # will match '/book/login'
  7. get '/login' => sub {
  8.     layout 'login_main';
  9.     template
  10.       'login' => { path => 'GuestBook' },

  11. };

  12. post '/login' => sub {

  13.     my $dbi = Authen::Simple::DBI->new(
  14.         dsn       => 'dbi:SQLite:dbname=test.db',
  15.         statement => 'SELECT password FROM authentication WHERE username = ?'
  16.     );

  17.     if ( $dbi->authenticate( params->{username}, params->{password} ) ) {
  18.         session user => params->{username};
  19.         redirect params->{path};
  20.     }
  21.     else {
  22.         redirect 'login';
  23.     }
  24. };

  25. get '/logout' => sub {
  26.     session->destroy;
  27.     redirect 'GuestBook';
  28. };

  29. true;
复制代码

论坛徽章:
0
2 [报告]
发表于 2010-07-22 11:17 |只看该作者
很好。。没用过dancer框架,下来学习下~~{:3_193:}

论坛徽章:
0
3 [报告]
发表于 2010-07-22 11:21 |只看该作者
回复 2# 兰花仙子


本人是门外汉,非计算机专业,学perl是兴趣,还请兰花仙子多多指教。

论坛徽章:
0
4 [报告]
发表于 2010-07-22 22:23 |只看该作者
我晕,用cpan安装Dancer失败!
我好像试试

论坛徽章:
3
巳蛇
日期:2013-10-03 10:41:48申猴
日期:2014-07-29 16:12:04天蝎座
日期:2014-08-21 09:24:52
5 [报告]
发表于 2011-02-28 18:15 |只看该作者
thanks a lot

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
6 [报告]
发表于 2011-02-28 18:16 |只看该作者
good

论坛徽章:
0
7 [报告]
发表于 2011-03-01 09:33 |只看该作者
多谢楼主分享, 好好学习

论坛徽章:
1
辰龙
日期:2014-05-15 19:37:15
8 [报告]
发表于 2011-03-01 10:28 |只看该作者
太 tm 支持了,近来在让小弟翻译这个,打算项目中用这个

论坛徽章:
0
9 [报告]
发表于 2011-03-01 10:30 |只看该作者
跑起来了,很好。谢谢分享

论坛徽章:
0
10 [报告]
发表于 2011-03-01 11:39 |只看该作者
我正在学Dancer,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP