【perl】(1)フレームワークを使って、ログイン処理・新規登録を行うプログラム
フレームワークを使って、新規登録→確認→修正→登録、ログインの処理を行うプログラムを作った。
先輩に助けてもらいながら、一日かけて作りました。
今日はもう疲れたので、詳しい説明はまた後日。
package UsersController; use strict; use base qw/IdaFrameWork/; # モードの設定 sub setup { my $self = shift; $self->error_mode('error'); # エラー時、error関数を処理 $self->start_mode('login'); # パラメータがない時、loginを処理 $self->mode_param('mode'); # 実行モードのパラメータ名に「mode」を指定 $self->run_modes( 'login' => 'do_login', 'list' => 'do_list', 'new' => 'do_new', 'confirm' => 'do_confirm', 'create' => 'do_create', 'edit' => 'do_edit', 'update' => 'do_update', ); } # エラー時に処理される sub error { my($self, $err) = @_; return $err; } # パラメータ値が無しの時に処理される sub do_login { my $self = shift; my $msg; if($self->query->param('login')){ #ボタンが押された my $sth = $self->dbh->prepare('select * from users where id = ?'); $sth->execute($self->query->param('id')); my $h = $sth->fetchrow_hashref; if($h && $h->{pass} eq $self->query->param('pass')){ $msg = 'OK'; }else{ $msg = 'NG'; } } return $self->output_with_tt('tt/login.html', { msg => $msg }); } sub do_list { my $self = shift; my $sth = $self->dbh->prepare('SELECT * from users'); $sth->execute; my @list; while(my $h = $sth->fetchrow_hashref){ push(@list, $h); } return $self->output_with_tt('tt/list.html', { list => \@list }); } sub do_new { my $self = shift; return $self->output_with_tt('tt/new.html'); } sub do_confirm { my $self = shift; return $self->output_with_tt('tt/confirm.html'); } sub do_create { my $self = shift; $self->dbh->prepare( 'insert into users(id, name, pass, email) values(?, ?, ?, ?)' )->execute( $self->query->param('id'), $self->query->param('name'), $self->query->param('pass'), $self->query->param('email'), ); return $self->output_with_tt('tt/create.html'); } sub do_edit { my $self = shift; my $h; if($::ENV{REQUEST_METHOD} eq 'GET'){ my $sth = $self->dbh->prepare('select * from users where id = ?'); $sth->execute($self->query->param('id')); if($h = $sth->fetchrow_hashref){ $self->query->param($_, $h->{$_}) for(keys %$h); } } return $self->output_with_tt('tt/edit.html'); } sub do_update { my $self = shift; $self->dbh->prepare( 'update users set name = ?, pass = ?, email = ? where id = ?' )->execute( $self->query->param('name'), $self->query->param('pass'), $self->query->param('email'), $self->query->param('id'), ); return $self->output_with_tt('tt/update.html'); } 1;