last-modified: 2019-04-28 (日) 18:36:58 (1834d)[変更箇所]
NEBULAのメモ?ページについて考え中。求める機能は
と、こんなところか?この要求を満たすものをCGIでつくろうかなと思います。K田くんのページは1,2,3,4の点ですぐれているが、整理するという点で不満。問題は3,4,5をどうやって共存させるかかね?
実際自分で書いてみると激しく面倒くさい・・・ 世の中に適当なもんないかね?
複数のひとが編集することを想定すると、同時アクセスによる衝突でデータが消えることがありえる。なのでファイルロックをする必要がある。symlink、flock、テンポラリーファイルを使うなどの方法が在るらしい。symlinkやflockはサーバーによっては使えないことがあるらしいのでテンポラリーファイルを作ることにする。テンポラリーファイルがある時にはファイルの書き込みがロックされるという方法。
容量を制限するためには
use CGI; use CGI::Carp qw(fatalsToBrowser); $CGI::POST_MAX = 1024 * 1024; # 1024 * 1KBytes = 1MBytes. my $query = CGI->new; $query->param; die($query->cgi_error) if ($query->cgi_error);
のように書けばよいらしい。
windowsではCR+LF、MACはCR、LinuxはCR。フォームから文字列をとってきたときには改行コードはクライアント側のものになっている。ファイルに保存してあるテキストとフォームからのものを比較するときにはこの改行コードに気を付けないと常に一致しなくなる。具体的には改行コードを
sub linebreak{# convert line break my $str = $_[0]; $str=~s/\x0D\x0A|\x0D|\x0A/\n/g; return $str; }
のようにして変換した。Perlの中では\nはOSによらない。なのでs/\r\n|\r/\n/gとするのは実は正確ではない、とのこと。
convertでは空白はそのままだけど、ps2pngだと余計な空白を消してくれる。 これを使おう!
HTMLのタグが使える状態はかなり危険ということを今更学んだので、フォームで入力されたテキストの中のタグを殺す必要がある。テキストの装飾するものは生かすとして、図を貼り付けるために条件を考える必要がある。リンクは許可しない?でもテキストでかけるのだからリンクのタグは殺してもしょうがないかな? 危険なタグは
そのほか考えないといけないのは
http://xxx.xxx/xxx/xxx/としたときにディレクトリのファイルが見えるのはよくないよね。
Options -Indexes
と書けばOK。(ハイフンはマイナスの意味)