本を読む

読書やコンピュータなどに関するメモ

sh.inatraで簡易BBSもどき

 pure bashで作ったsinatraもどき「sh.inatra」のサンプルとして、簡単なBBSもどきを作ってみました。「Ruby Freaks Lounge:第9回 SinatraとSequel・Hamlで掲示板アプリを作る|gihyo.jp … 技術評論社」のマネです。

 ちなみに、SQL injectionとかXSSとかそのへん全開ですので、念のため。

#!/bin/bash

. /opt/sh.inatra/sh.inatra.sh

dbfile=/tmp/bbs.sqlite3
[ -e "$dbfile" ] || sqlite3 $dbfile 'CREATE TABLE bbs (user text, comment text, created_at text)'

get '/' && {
    cat <<EOF
<html><head><title>BBS</title></head><body>
<form method="POST" action="$SCRIPT_NAME/comment">
<p>Name: <input type="text" name="user" size="16" /></p>
<p>Comment: <input type="text" name="comment" size="60" /></p>
<input type="submit" value="Post"></form>
<table>
EOF
    sqlite3 $dbfile <<'SQL'
.mode html
SELECT * FROM bbs;
SQL
    echo '</table></body></html>'
}

post '/comment' && {
    sqlite3 $dbfile "INSERT INTO bbs (user, comment, created_at) VALUES ('$params_user', '$params_comment', '$(LANG=C date)')"
    redirect '/'
}

 実行例。

sh.inatraサンプル2

 あんまりフレームワークで楽になった気はしませんが、とりあえずsqlite3の".mode html"って便利ですね。

コメント

コメントの投稿

管理者にだけ表示を許可する

トラックバック

http://emasaka.blog65.fc2.com/tb.php/656-0bf2691d

 | HOME | 

Categories

Recent Entries

Recent Comments

Recent Trackbacks

Appendix

emasaka

emasaka

フリーター。
連絡先はこのへん

Monthly


FC2Ad