第10回CGIことおぼえ レポート課題 氏名:小山田晃平 学籍番号:c1110393 語学クラス:英語5 コース:政策マネジメント 1.筆記問題 まず、require 'pstore'でpstoreを使用する宣言をする。 rubycgiの下にpstoreというディレクトリを作成 pstoreを第3者が書き込めるようにchmod o+w pstoreを実行 pstoreにデータをしまうbbs.dbを作成し、第3者が書き込めるようにする データを書き出すプログラムpstore_bbs.rbを作成 pstore_bbs.rbの解説 #!/usr/bin/env ruby #coding: euc-jp require 'cgi' # CGIを使う宣言 require 'pstore' # pstoreを使う宣言 cgi = CGI.new(:accept_charset => "EUC-JP") db = PStore.new("pstore/bbs.db") # データ−ベースを作成 usr = cgi["user"] # 変数に入れる cmt = cgi["comment"] t = Time.now #p t myprog = "pstore_bbs.rb" print("Content-type: text/html; charset=EUC-jp\n\n") print("\n") print("
\n") print("会員登録を行います。下の会員情報を入力して、"登録"をクリックして下さ い。入力内容をリセットする場合は、"クリア"をクリックして下さい。
このプログラムは東北公益文科大学小山田晃平が著作権を保有しています。 このプログラムの入手、実行、変更は自由に行うことが出来ますが、取扱うこと で生じた結果に対して著作権者は責任一切負いません。
出力部分(best.rb) #!/usr/bin/env ruby #coding: euc-jp require 'cgi' # cssを使用する宣言 cgi = CGI.new(:accept_charset => "EUC-JP") print("Content-type: text/html; charset=EUC-JP\n\n") number = 1 # 会員番号は最初は1 open("best.txt", "r") do |read| # テキストファイルを読み込む while data = read.gets # 読み込んだものをdataにいれる if/(\d+)/ =~data # テキストファイルは数値が1列だけなので(\d+)になる number = $1.to_i # テキストファイルの1列目を数値としてnumberにいれる end end end sei1 = cgi["sei_kanzi"] # 入力されたものを変数に入れる namae1 = cgi["namae_kanzi"] sei2 = cgi["sei_kana"] namae2 = cgi["namae_kana"] bango = cgi["number"] yubinbango = cgi["yubin"] todouhuken = cgi["jusyo_todouhuken"] siku = cgi["jusyo_siku"] banti = cgi["jusyo_banti"] adress = cgi["mail"] seibe = cgi["seibetsu"] year = cgi["seinen_nen"] month = cgi["seinen_tsuki"] day = cgi["seinen_niti"] password = cgi["pass"] css = cgi["color"] print("\n") print("氏名(漢字):%s%s
\n", sei1, namae1) # 入力されたものを表示 printf("氏名(フリガナ):%s%s
\n", sei2, namae2) printf("電話番号:%s
\n", bango) printf("郵便番号:%7.0f
\n", yubinbango) # 郵便番号は7桁なので整 数7桁を表示出来るようにした printf("住所:%s%s%s
\n", todouhuken, siku, banti) #住所は3つのテ キストエリアをまとめて表示するようにした printf("メールアドレス:%s
\n", adress) printf("生年月日:%s年%s%s日
\n", year, month, day) # 生年月日は3 つの変数をまとめて表示するようにした printf("バスワード:%s
\n", password) elsif css == "red" # cssがredを選択されたら print("\n") # cssを読み込む print("氏名(漢字):%s%s
\n", sei1, namae1) # 入力されたものを表示 printf("氏名(フリガナ):%s%s
\n", sei2, namae2) printf("電話番号:%s
\n", bango) printf("郵便番号:%7.0f
\n", yubinbango) # 郵便番号は7桁なので整 数7桁を表示出来るようにした printf("住所:%s%s%s
\n", todouhuken, siku, banti)#住所は3つのテ キストエリアをまとめて表示するようにした printf("メールアドレス:%s
\n", adress) printf("生年月日:%s年%s%s日
\n", year, month, day) printf("バスワード:%s
\n", password) elsif css == "yellow" # cssがyellowを選択されたら print("\n") # cssを読み込む print("氏名(漢字):%s%s
\n", sei1, namae1) printf("氏名(フリガナ):%s%s
\n", sei2, namae2) printf("電話番号:%s
\n", bango) printf("郵便番号:%7.0f
\n", yubinbango) # 郵便番号は7桁なので整 数7桁を表示出来るようにした printf("住所:%s%s%s
\n", todouhuken, siku, banti)#住所は3つのテ キストエリアをまとめて表示するようにした printf("メールアドレス:%s
\n", adress) printf("生年月日:%s年%s%s日
\n", year, month, day) printf("バスワード:%s
\n", password) elsif css == "green" # cssがgreenを選択されたら print("\n") # cssを読み込む print("氏名(漢字):%s%s
\n", sei1, namae1) # 入力されたものを表示 printf("氏名(フリガナ):%s%s
\n", sei2, namae2) printf("電話番号:%s
\n", bango) printf("郵便番号:%7.0f
\n", yubinbango) # 郵便番号は7桁なので整 数7桁を表示出来るようにした printf("住所:%s%s%s
\n", todouhuken, siku, banti)#住所は3つのテ キストエリアをまとめて表示するようにした printf("メールアドレス:%s
\n", adress) printf("生年月日:%s年%s%s日
\n", year, month, day) printf("バスワード:%s
\n", password) elsif css == "pink" # cssがpinkを選択されたら print("\n") # cssを読み込む print("氏名(漢字):%s%s
\n", sei1, namae1) # 入力されたものを表示 printf("氏名(フリガナ):%s%s
\n", sei2, namae2) printf("電話番号:%s
\n", bango) printf("郵便番号:%7.0f
\n", yubinbango) # 郵便番号は7桁なので整 数7桁を表示出来るようにした printf("住所:%s%s%s
\n", todouhuken, siku, banti)#住所は3つのテ キストエリアをまとめて表示するようにした printf("メールアドレス:%s
\n", adress) printf("生年月日:%s年%s%s日
\n", year, month, day) printf("バスワード:%s
\n", password) end printf("会員番号:%d\n", number) # 会員番号を表示 number += 1 # numberを1増やす open("best.txt", "w") do |write| # テキストファイルに書き込む write.printf("%d\n", number) # numberの数値を書き込む end print("このプログラムは東北公益文科大学小山田晃平が著作権を保有しています。 このプログラムの入手、実行、変更は自由に行うことが出来ますが、取扱うことで生じた結果に対して著作権者は責任一切負いません。
") print("\n") print("\n") 元にしたプログラムからの変更点 今までに作成したorder_input_c111039.rb,counter.rb,css.rbなどを参考に作成 した。これらのプログラムを組み合わせて作成した。 実行結果 姓(漢字) 小山田 名前(漢字) 晃平 姓(フリガナ) オヤマダ 名前(フリガナ) コウヘイ 電話番号 08015427635 郵便番号 9980054 住所(都道府県) 山形県 住所(市区郡町村)酒田市 住所(番地・建物名)宮野浦2丁目2-5 メールアドレス c111039@g.koeki-u.ac.jp 性別 男性 生年月日(年) 1992 生年月日(月) 11 生年月日(日) 13 パスワード m0a7t0m4 会員ページのカラー ピンク を入力 結果氏名(漢字):小山田晃平
氏名(フリガナ):オヤマダコウヘイ
電話番号:08015427635
郵便番号:9980054
住所:山形県酒田市宮野浦2丁目2-5
メールアドレス:c111039@g.koeki-u.ac.jp
生年月日:1992年11月13日
バスワード:m0a7t0m4
会員番号:6このプログラムは東北公益文科大学小山田晃平が著作権を保有しています。 このプログラムの入手、実行、変更は自由に行うことが出来ますが、取扱うことで生じた結果に対して著作権者は責任一切負いません。
入力内容のcssの部分だけ変更して実行氏名(漢字):小山田晃平
氏名(フリガナ):オヤマダコウヘイ
電話番号:08015427635
郵便番号:9980054
住所:山形県酒田市宮野浦2丁目2-5
メールアドレス:c111039@g.koeki-u.ac.jp
生年月日:1992年11月13日
バスワード:m0a7t0m4
会員番号:7このプログラムは東北公益文科大学小山田晃平が著作権を保有しています。 このプログラムの入手、実行、変更は自由に行うことが出来ますが、取扱うことで生じた結果に対して著作権者は責任一切負いません。
再度cssを変更し実行氏名(漢字):小山田晃平
氏名(フリガナ):オヤマダコウヘイ
電話番号:08015427635
郵便番号:9980054
住所:山形県酒田市宮野浦2丁目2-5
メールアドレス:c111039@g.koeki-u.ac.jp
生年月日:1992年11月13日
バスワード:m0a7t0m4
会員番号:8このプログラムは東北公益文科大学小山田晃平が著作権を保有しています。 このプログラムの入手、実行、変更は自由に行うことが出来ますが、取扱うことで生じた結果に対して著作権者は責任一切負いません。
考察 入力された内容が間違えなく表示されている スタイルシートが間違えなく反映されている 会員番号が実行するごとに1づつ増加している 住所や生年月日をまとめて表示できている 以上のことからプログラムは正しいといえる B. http://roy.e.koeki-u.ac.jp/~c111039/adv2/index.html に貼り付けた 3.感想 CGIで興味を持ったのは小野貴己さんの作品です アドレスは、http://roy/~c111038/rubycgi/order_input_c111038.htmlです この作品は、選択肢が多く、何度も実行したくなるもので独創性が強い作品だと 感じたので選びました。 4.参考文献 第9回基礎プログラミング2(CGIことえらび) テキストエリアの作り方 西村まどか http://roy/~madoka/2012/r2/09/r2_09_07_theme_02_textarea.html 第9回基礎プログラミング2(CGIことえらび) FileOpenを使ってみよう 西村まどか http://roy/~madoka/2012/r2/09/r2_09_08_theme_03_fileopen.html