CGI-BBS > 電子掲示板 > 簡易BBS > 簡易BBSの改造で削除パスワードをなくしたい。


カレッヂ
カレッヂ


質問者 川上春樹  投稿日 4/12(土) 14:33:16
はじめまして。簡易BBSΘを使いたいと思っているのですが、その投稿フォームにある削除パスワード
をいちいち設定させるのではなく(書込みをする人はどうせ忘れてしまうと思うので。。)削除パス
を設定しなくても投稿ができるようにしたいと思ってます。
それで、bbs.cgiのHTML上のパスワードの部分を削ると、エラーになってしまいます。

色々試したのですが、どうしても、出来ません。
恐らく、フォームの ”action!”"regist" でパスワードが認識できなくてそうなってしまう
のだと思うのですが、

投稿の際に、パスワードをいちいち設定しなくても投稿が出来てしまうシステムにするには
どの部分をどのようにすればよいでしょうか・。。

もしよろしければ教えてください。宜しくお願いします。。

プロバイダ参照:
サーバのOS:UNIXサーバ
パソコンのOS:Win95系
エディタ:Tera Pad
FTPソフト:Ws-FTP
サーバ移転:していない
改造:していない
CGI習熟度:advanced

質問者 川上春樹  [削除]  投稿日 4/13(日) 12:29:54
追記です。

削除パスワードをなくしてしまう。というのは、投稿の際に必要なパスワードということです。
投稿者はパスワードなしで投稿が出来るようにしたいんです。

もし、削除が必要とあれば、管理者が管理パスワードで削除できればいいのです。

宜しくお願い致します。
回答者 いのちゃん  [削除]  投稿日 4/14(月) 04:18:04
http://www.kcb-net.ne.jp/ki-net/minibbs-ic_1.22/index.html

書き損じるから其の面倒さをescapeしたい為に削除パスワードをプログラムから取り
除きたいとのご要望ですが、ご説明の為に冒頭の当方のurlをupして見ました。

“設定の読み込み”をクリックすると
http://www.kcb-net.ne.jp/ki-net/minibbs-ic_1.22/bbs.cgi?form=1

こちらのurlに展開しますが、
名前
Eメール
削除パスワード

を“設定を保存する”の行頭にチェックを入れれば当分の間はCOOKIEが効いております
ので、再度入力する手間は省ける設定になっています。

従って忘れるほど訪問者の訪問が無ければCOOKIEも嫌がって自動消滅もあり得るかも
知れませんがそこまでの配慮は...。
質問者 川上春樹  [削除]  投稿日 4/14(月) 15:53:15
早速の返信ありがとうございました。
確かにそこまでの配慮は必要ないかもしれませんね。^^llおっしゃる通りだと思います。
ただ現状のBBSがとても気に入っていて色々な用途で使いたいな。とも考えてます。

そこで一般の利用者に対してはパスワード設定は構わないというより、おっしゃるとおりの形で
いいと私も思いました。

単に個人的に私の考えているサイトではパスワード設定は不必要な項目かな。と思ったので
ならばいっそのことこの項目を外してしまいたい。と思ったのです。

CGIの勉強なども独学でやっているので、勉強もかねて、どのようにすればこの設定を外せる
のかな。とすごい知りたい。というのものあるんです。

色々調べてやってみたものの、中々上手く行かず、どなたか教えていただければと思い、、、
こちらに記入させて頂きました。

かなり勝手な質問ではあるとは思うのですが、実際にパスワードによる削除を使いたくない。
というのと、CGIの勉強を兼ねて。。。という2つの点から、簡単でいいので、どこをどうすれば
いいのか、というヒントだけでも頂けれたらすごい嬉しいのです。。

もし、、お時間があればでいいのですが、、、教えてもらえませんでしょうか。。
身勝手な質問で申し訳ございません。。。
よろしければお教えいただけましたら幸いでございます。
宜しくお願い致します。
回答者 いのちゃん  [削除]  投稿日 4/14(月) 16:19:12
>かなり勝手な質問ではあるとは思うのですが、実際にパスワードによる削除を使いたくない。

と言うよりも訪問者が一度新規投稿した投稿文章は訪問者が勝手に訪問者の都合で
削除させたくないので、削除したい場合は掲示板管理者によるパスワードで削除が
可能なので訪問者から削除の依頼があれば検討すると言う趣旨のように受け取って
いたのですがそうで無い様ですねぇ。

当方も貴殿の言う意味も充分前回のご質問文章から感じておりましたので削除を
何箇所か試みましたがプログラムが反応しなかったので先のようなご回答に指して
頂いた経過があります。
回答者 いのちゃん  [削除]  投稿日 4/14(月) 18:10:12
index.htmlのファイルをBinaryでDownしてftpした時に、そのindex.htmlを開くと
以下のような行数の記述がありますのでコメントアウト“#”ではなくて削除して
見て下さい。

Line 97 辺りに以下のスクリプトがありますのでこれを削除して下さい。

<tr>
<td nowrap align=right bgcolor=#888888><font color=#ffeedd><b>削除パスワード
</b></font><br><font size=-1 color=#ffeedd>(英数字4〜8文字)</font></td>
<td><input type=password name="passwd" value="" size=10> (設定しない場合は投
稿者による削除はできません)</td>
</tr>

ファイルの上書き保存をして同じくBinaryでupしてftpして下さい。ご希望通り
削除パスワード項目は表示しないようになります。但し、ASCIIで無くて必ず
“Binary”でftpをして下さい。

ご参考までにbbs.cgiのLine 443辺りに
# ●ファイル出力(インデックスファイルの生成)

の記述がありますが、恐らくこの記述によってindex.htmlに出力が発生しておりますので
その他のスクリプトを削除しても有効でなかったようです。

上記の削除は確認済みですが貴殿のご希望に添ったものであるかどうかはテストして
ご確認をして見て下さい。
回答者 いのちゃん  [削除]  投稿日 4/14(月) 18:51:23
“削除パスワード”の削除には一度は成功しましたが、以下のスクリプト除去しない限り
削除された筈の物がまた元通りに再生されておりましたので、全て関係する箇所の除外を
しなければ“削除パスワード”を取り除く事は出来ません。理由は生成プログラムの為。

# ●ファイル出力(インデックスファイルの生成)

if ($in{'action'} eq "regist") {

	if ($in{'attc'}) { ($err_mes) = &regist2; }
	($ret) = &regist;
	if (!$ret) { print "Location: $base\n\n"; exit; }

	&getList;
	$output = "WRITE";
	if (open($output,"> $index_file")) {

		&putMessage;
		close($output);
	}

しかしながらその単一の目的の為に上記の記述を全部削除した場合はプログラム自体に
重大な支障が来て全く作動しなくなります。これ以上の改造は上級者でないと技術的に
当方では残念ながら力不足の為、お力添え出来ませんので悪しからずご承知して下さい。
_(._.)_
回答者 しあわせのツボ  [削除]  投稿日 4/14(月) 19:38:22
line 760
else { Submit(); }
を
Submit();
に書き換えた後、以下に示す行を全てコメントアウトしてください。

line 831-834
<tr>
<td nowrap align=right bgcolor=$subject_bgcolor><font color=$subject_color><b>削除パスワード</b></font><br><font size=-1 color=$subject_color>(英数字4〜8文字)</font></td>
<td><input type=password name="passwd" value="$COOKIE{'passwd'}" size=10> (設定しない場合は投稿者による削除はできません)</td>
</tr>

line 755-759
if (!Passwd) {
	c = "削除パスワードが入力されていないので、あなたが後で削除できません。??n投稿してもよろしいですか?";
	f = confirm(c);
	if (f) { Submit(); }
}

line 639-640
if ($in{'passwd'} eq "") { $err_mes .= "<li>削除パスワードが設定されませんでしたので管理者しか削除できません.?n"; }
elsif (length($in{'passwd'}) < 4 || length($in{'passwd'}) > 8) { $in{'passwd'} = ""; $err_mes .= "<li>削除パスワードが規定文字数内でないので削除パスワードは設定しませんでした.?n"; }

line 361-365
unless ($ADMIN) { # 削除パスワードチェック

	if ($MES{'passwd'} eq "") { push(@REMOVE_ERR,"No.$filenameは削除パスワードが設定されていません."); next; }
	if ($in{'passwd'} eq $MES{'passwd'}) { $remove_ok = 1; }
}

以上で大丈夫じゃないかと思いますが、嘘があったらごめんなさい。
回答者 しあわせのツボ  [削除]  投稿日 4/14(月) 19:45:05
bbs.cgiだけでなくresp.cgiの方も改造する必要がありましたね。
line 59
else { Submit(); }
を
Submit();
に書き換えた後、以下に示す行をコメントアウトor削除してください。

line 115
パスワード <input type=password name="passwd" size=10 maxlength=8>

line 54-58
if (!Passwd) {
	c = "削除パスワードが入力されていないので、あなたが後で削除できません。??n投稿してもよろしいですか?";
	f = confirm(c);
	if (f) { Submit(); }
}
質問者 川上春樹  [削除]  投稿日 4/14(月) 20:27:55
早速のこと細かいご説明本当にありがとうございます。今内容を拝見させていただいたのですが、
早速お教えいただいたことをやってみたいと思います。
返信が遅くなってしまいまして誠に申し訳ございませんでした。

これからやってみたいと思います。
また後ほど結果をご報告させていただきたく存じます。

本当にありがとうございました。
質問者 川上春樹  [削除]  投稿日 4/14(月) 20:58:21
>>いのちゃんさま しあわせのつぼ 様

ご丁寧なご説明本当にありがとうございます。
しあわせのつぼ様のご指導の部分を早速やってみようと思ったのですが、本当に申し訳ない事態
なのですが、、、
”コメントアウト”についてよくわからないんです。。。
CGIを改造したいと思いながらコメントアウトもわからないのか!とお叱りを受けるかと思うのですが
どうしても、コメントアウトの記述がよくわからないのです。。

ちなみに、下記のものをコメントアウトにすると、

<tr>
<td nowrap align=right bgcolor=$subject_bgcolor><font color=$subject_color><b>削除パスワード</b></font><br><font size=-1 color=$subject_color>(英数字4〜8文字)</font></td>
<td><input type=password name="passwd" value="$COOKIE{'passwd'}" size=10> (設定しない場合は投稿者による削除はできません)</td>
</tr>

だと。

<!--<tr>
<td nowrap align=right bgcolor=$subject_bgcolor><font color=$subject_color><b>削除パスワード</b></font><br><font size=-1 color=$subject_color>(英数字4〜8文字)</font></td>
<td><input type=password name="passwd" value="$COOKIE{'passwd'}" size=10> (設定しない場合は投稿者による削除はできません)</td>
</tr>-->

のように、すればよいのでしょうか?

コメントアウトというのは、
<!--ココの文章はブラウザには表示されません--> という形式にするのかな?ということぐらい
しかわからず、、このような間抜けな質問をしてしまったのですが、、、
馬鹿な質問で大変申し訳ないのですが、

コメントアウトする部分については、すべて、<!--●●●-->という具合に囲ってしまえばいいのでしょうか。。

もしよろしければ教えてください。宜しくお願いします。。
回答者 いのちゃん  [削除]  投稿日 4/14(月) 22:18:06
上級者が出動して参りましたので当方は彼にお任せ致しますが、コメントアウトとは
通常行頭 (場合によっては文尾) に半角のシャープを“#”挿入します。

同じような事が貴殿の返答の中にも書かれておりましたが用はコメントアウト“#”
した以降の文章の意味としては削除したのと同じ働きがあります。

但し、index.htmlの記述の中にある数行の行頭にコメントアウトを書き入れますと
その行頭の何行か分がそのまま下にずれて、“#”の記号みが何個か表示してその数行
の行数分のスクリプトは表示はしておりませんでしたが、掲示板が下にずれて表示して
おりました。

従って、cgiの中でのindxt.htmlの“#”は通常のcgiのような使用勝手が異なっている
事が分かりましたので、削除するようにお返事申し上げた訳です。分かって頂ければ
幸いです。(^_^)
回答者 しあわせのツボ  [削除]  投稿日 4/14(月) 23:49:36
ということです。(笑)
1行まるごと無視させるなら行頭に、行の途中から無視させたいならその場所に
(今回は該当行全てなので行頭に) # を打ってください。

ただし、ヒアドキュメントを使っている場所(今回で言うと
bbs.cgiのline 831-, 755-, resp.cgiのline 54-)ではこの手法は使えません。
ですので、それは削除してください。
削除しても行数がずれないよう、後方の行から順に指示してありますので。
(もちろん、全ての場所で「削除」しても効果は同じです)
質問者 川上春樹  [削除]  投稿日 4/15(火) 02:31:33
>>いのちゃん様、しあわせのつぼ様

ご丁寧に解説頂きまして本当にありがとうございます。
これから早速頑張って試してみたいと思います。^^

私、、家庭の事情で家で仕事をしなくてはならなくて、、、年齢も35歳。。。
独学で(かなり無理があるかもしれないのですが、、)それでも、頑張ってCGIの勉強なども
していきたいと思ってます。。。
大変分りやすくご説明頂きまして本当にありがとうございます。

またご報告させて頂ければと存じます。
本当にありがとうございました。
回答者 いのちゃん  [削除]  投稿日 4/15(火) 04:38:44
余計な追記で申し訳ありませんが、貴殿の文章力から見て30歳半ばかな?と想像して
おりました。すごい説得力のある理路整然とした文章力であって感心しております。

当方は65歳ですので恐らくここの参加者の中では年配者に属するのではなろうかと
思いますが、息子と同年輩でありますので若い皆様の大いなる活力を頂戴して生き
甲斐を実感しております。

今後の活躍をご期待しております。今回は色々勉強になりました。どうもです。

返信(回答)する

 


Web裏技