掲示板のデータを共有...できますか?

[上に] [前に] [次に]
もぐ1998 [E-Mail] [HomePage] 1998/09/08(火) 02:01:41
初めまして。お世話になっています。

ここの掲示板を使わせてもらっているんですが、
違うサイトと違うサイトでCGI(wwwboard.cgi)だけ違うモノを作り、
データをどちらか一方のサイトにおいておくという事は出来るのでしょうか?
「戻る」のリンクを変えたいので、CGIは変えておきたいのですが、
データは共有して、あたかも同じCGIを使っているようにしたいのです。

「ロックされないとデータが壊れる」ということをよく聞くんですが、
この場合は心配ないですか?

B-Cus 1998/09/08(火) 03:08:23
「違うサイトと違うサイト」というのが「同一ホスト
内の他人同士のweb」という意味なら、できなくはないです。
んが、そうでないなら原理的にはできなくはないけど、
wwwboardはそういうふうには作られていないので無理です。
# 改造するのも結構ホネだと思います。

2つのサイトからframeで同一URLを参照するのが一番いいんじゃ
ないでしょうか。

Tiot [E-Mail] 1998/09/08(火) 13:02:47
cgiをふたつ用意するのではなく
一つのcgiをクエリストリングによって
二種類の掲示板に見せるというのはどうでしょう。
掲示板のURLがhttp://xxx.yyy.zzz/wwwboard.cgiだったとしたら
実際のリンクを張るURLを下のようにしておきます。
http://xxx.yyy.zzz/wwwboard.cgi?aaa=1
http://xxx.yyy.zzz/wwwboard.cgi?aaa=0
そうしておいて、環境変数をcgi-lib.pl等で
解釈して(この場合aaaの値は$in{'aaa'}として説明します)
掲示板のスクリプトの中に

if(${'aaa'}){
  print "<a href=http://xxx.yyy.zzz/index.html>";
  print "戻る"</a>;
}else{
print "<a href=http://aaa.bbb.ccc/index.html>";
  print "戻る"</a>;
}
という文を入れておけば
http://xxx.yyy.zzz/wwwboard.cgi?aaa=1 にリンクを張ったときは
http://xxx.yyy.zzz/index.html への戻るリンクが出ますし
http://xxx.yyy.zzz/wwwboard.cgi?aaa=0 にリンクを張ったときは
http://aaa.bbb.ccc/index.html への戻るリンクが出るようになると思います。

この方法なら他の部分は余り直す必要はないと思います。
でもちょっと強引かな?

Tiot 1998/09/08(火) 13:07:49
上の文で
if(${'aaa'}){
という部分は
if($in{'aaa'}){
の間違いです。ごめんなさい。

もぐ1998 [E-Mail] [HomePage] 1998/09/09(水) 00:39:21
皆さんありがとうございました。いろいろやってみました。でも・・・
require "cgi-lib.pl";
&ReadParse;
$a=$in{'a'};
(この辺は本を写しました)としてやってみたんですけれども、
発言できなくなっちゃうんです。この掲示板はメッセージのデータがないと、
「再読み込み(更新)」として解釈するので、たぶんメッセージのデータが
どこかでなくなっているんだと思います。全くの素人の意見ですが、
Perlを通すとメッセージの変数が初期化されたりはしませんか?
なにか有効な対応策はないでしょうか。

もぐ1998 [E-Mail] 1998/09/09(水) 02:39:01
追加でいっておきますと、cgi-lib.plにアクセスしないようにしたらうまく動きました。
だけどこれでは今度は
〜〜〜.cgi?a=1
の意味がありません。元のと同じになってしまいます。
なにか、いい策略はないでしょうか。
よろしくお願いします。

B-Cus 1998/09/09(水) 03:17:49
え〜っと、cgi-lib.plは使わないで、
 if( $FORM{'aaa'} eq "1" ){
  …
 } else {
  …
 }
でうまくいきませんか?

Tiot 1998/09/09(水) 07:49:56
それでもだめなようでしたら、とほほさんの掲示板を
http://xxx.yyy.zzz/wwwboard.cgi?0
http://xxx.yyy.zzz/wwwboard.cgi?1で呼び出すようにして

if ($ARGV[0]) {
........<<wwwboard.cgi?1のときの処理
}else{
........<<wwwboard.cgi?0のときの処理
}

の文を加えてみてください。
そして中ほどにある

print "<FORM METHOD=POST ACTION=\"wwwboard.cgi\">\n";という行を
print "<FORM METHOD=POST ACTION=\"wwwboard.cgi?$ARGV[0]\">\n";に

書き直してください。

これだけやれば多分できると思います。
前回のものは、こういった方法もあるぐらいのいいかげんなものでしたが(^^;;)、
今回は動作確認もやったので大丈夫だと思います。
cgi-lib.plうんぬんは忘れてください(^^;;;)
単純にwwwboard.cgiで呼び出すとwwwboard.cgi?0のときと同じになります。
ですので、wwwboard.cgi?0の方をメインにしたほうがいいと思います。
あと、この場合ファイルロックの問題は、
cgiスクリプトを単独で走らせた時と同じです。
とほほさんの掲示板ならその処理がされていますので
大丈夫だと思います。

もぐ1998 [E-Mail] 1998/09/18(金) 21:27:06
[[解決]]
皆さんご親切にどうもありがとうございました。
裏技をとりつけていたので少しレスが遅くなりましてすいません。
でもおかげで素晴らしい掲示板が出来ました。ありがとうございました。

[上に] [前に] [次に]