FC2ブログ
ハルヒと言ったら?? ~やっと、CGI動いたか~
CGI実験中です ご理解ください


アンケート投票「ハルヒといったら?」

藤岡ハルヒに決まってる!!

涼宮ハルヒに決まってる!!





今回、超絶苦労してしまった。。。。
問題はLinuxの権限にあった。まあLinuxというより「Apacheに対する」と言ったほうが正しいかもしれない Apacheのとあるバージョンからは権限のチェックが厳しくなり オーナー以外に「書き込み権限」を与えると、なんと「Internal Server Error」なのだ!!!!!

今回、テストだしと思って、 

chmod 777 haruhi.cgi

としていたのが駄目だった。

今度から、

chmod 755 haruhi.cgi

で統一します!!!!

また、はしもとさんの「文字コードとの戦い実践編@utf-8」のコメントにある #!/usr/bin/perl -w の知識も役に立ちました。


なお、「続きを読む」に 今回のスクリプトを貼っておきます。

あ、そういえば Apacheのログも結構役に立ちますね。

今回参考にさせていただいたサイトは以下です
参考資料:
http://allabout.co.jp/internet/cgiperl/closeup/CU20040722A/index3.htm
http://it-revolution.seesaa.net/article/13687310.html
http://www.futomi.com/lecture/apache/cgierror.html
他多数


ファイルをロックしてないのが気になりますが・・・


#!/usr/bin/perl
use strict;
use warnings;
use CGI qw(:standard);
use CGI::Carp qw(fatalsToBrowser);
require 'jcode.pl';

######################関数を作成###########################################
sub print_html{
my @haruhis;
####################ファイルから読み込む###################
open(HARUHI, "<haruhi.txt") || die "haruhi.txt: $!";
@haruhis = <HARUHI>;
close( HARUHI );
###########################################################

print header(-charset=>'euc-jp');
print "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"
\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\"><head><title>haruhi</title>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=euc-jp\" />
</head>";
print "<body>";
print "$haruhis[0]票<br />";
print "$haruhis[1]票<br />";
print "</body>";
print "</html>";
}
##############################関数作成終了#################################


######↓ここからメイン↓###################################################
# フォームから送信された「vote」を、変数$voteに代入
my @haruhis;
my $name; #涼宮ハルヒ,0 の涼宮ハルヒに相当
my $count; #涼宮ハルヒ,0 の0に相当
my $vote = param('vote'); #アンケートの結果(涼宮 または 藤岡)
jcode::convert(\$vote, 'euc'); #文字コードをeuc-jpに変換

if ( $vote eq "" ){
####################HTMLを表示#############################
print_html();
###########################################################
}else{
####################ファイルから読み込む###################
open(HARUHI, "<haruhi.txt") || die "haruhi.txt: $!";
@haruhis = <HARUHI>;
close( HARUHI );
###########################################################

###################アンケート結果を反映####################
foreach my $haruhi ( @haruhis ) {
( $name, $count ) = split(/,/, $haruhi);
if ( $name eq $vote ) {
$count += 1;
$haruhi = "$name,$count\n";
}
}
###########################################################

###################ファイルを上書きする####################
open( HARUHI, ">haruhi.txt" ) || die "haruhi.txt: $!";
print HARUHI @haruhis;
close( HARUHI );
###########################################################

####################HTMLを表示#############################
print_html();
###########################################################
}

スポンサーサイト



コメントを投稿する
Name:
URL:
Comment:

秘密:管理者にだけ表示を許可する
トラックバック
この記事のトラックバックURL
この記事にトラックバックする(FC2ブログユーザー)
ブログ検索

プロフィール

ビンゴ中西
Perlが好きである。
プログラミング言語のほとんどは独学。独学の過程で多くのプログラム仲間にも色々教わりました。

FC2カウンター

カレンダー

03 | 2021/04 | 05
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -

ブロとも申請フォーム

この人とブロともになる

| ホーム |