sironekotoroの日記

Perl で楽をしたい

10日で覚えるPerl/CGI入門教室 第5日〜第7日

第5章のメールフォームを少し改造

  • といっても、他の本(「つくって覚えるPerl入門」)を参考に、送信前の確認画面を追加しただけ。
  • formタグのhiddenをつかった。
  • メール送信部はsendmailを利用するスクリプトだったけど、以前作成したgmailでメールを送信するスクリプトに変更。
  • うまく動いた。
  • 感無量。
  • ずっとやりたかった事が、また一つ出来るようになって嬉しい。
  • 出来てしまえば、こんなもんか、と思うのはいつもの事なんだけど、その裏で何が動いているのかを知る道のりが長かった。
    • でも楽しかった。
  • 思い返すに・・・
    • HTMLのformは知っていても、そのformで入力した内容をどうcgiに渡すかを知らなかった
    • CGIに渡された内容を、どうやってメール送信の形にして送ればいいのかも分からなかった
    • 渡されたデータの形がハッシュだから、ハッシュも知らなかったら、そこでつまづいてた。
  • しみじみですわ・・・
  • まぁ、20年遅れかなぁという気もするけど、できないまま30年、40年と遅れていくよりは良いよねー

第6章 ユーザー管理ページを作る

  • 一つのスクリプトでユーザーの表示、登録、削除を行う
  • cgiって画面ごとにファイル分けないとダメなんじゃとか先入観があったけど、べつにそんな事は無いんだ、と。
  • <form action="$ENV{'SCRIPT_NAME'}"> で自分自身を呼び出してパラメータのやり取りが出来ると。なるほど。
  • あと、管理者認証のページだけではなく、追加や削除のときにも管理者パスワードの検証を行わせているのは、良い手だなぁと。
    • 裏で行っている事を知る事が出来て楽しい

第7章 掲示板を作る

  • フォームを用意して、別途ファイルに書き込み。
  • 表示するときはファイルから読み出して整形して表示
  • 分かるようになってきた。
  • ここで楽しかったのは、普通にディレクトリトラバーサルとか、javascriptが実行できるというのを身を以て経験できた事
  • この本の特徴かもしれんけど、確認画面を置かないのが怖い。
    • 書き込みの際には不要かもしれないけど、削除のときには必要なんじゃないかなぁ・・・
    • つまり、自分で作れという事か
  • 書き込みデータをテキストファイルで管理するタイプの掲示板だけど、なんかいろいろ考えたときにsqliteとかで管理した方が楽そうな気がしてきてる
    • つまり自分で作れと
  • 書き込みを削除するときにテキストファイルから削除するんだけど、そこでspliceを使って取り除いてる
  • 複数同時に削除したときに、削除の順番がずれないように古い書き込みから削除するなどの工夫もあり
    • うちだったらうっかり見逃しそうだ・・・
  • 誤植、では無いのだけど、例1のスクリプトから、例2のスクリプトに移るときに、丁寧に変更部分を編みかけして教えてくれるのだけど、その網掛けが漏れてる・・・
    • おかげで勉強にはなったけど。
    • 第二版と書いてあるのに・・・初版はもっと酷かったのかな・・・
  • それにしても、やればやるほど、use CGI;の偉大さが分かる