CGI-BBS > 電子掲示板 > 簡易BBS > Minibbs Ver8.93で、URLにもクッキーをつけるには


カレッヂ
カレッヂ


質問者 TIN  投稿日 2/15(木) 12:06:31
Minibbs Ver8.93ですが、
投稿者のHPのURLを毎回入れるのが面倒だという意見を頂いたのです。
デフォルトでは、「リンク」にはクッキーが適用されないですよね。
「リンク」にクッキーを適用するようにさせるには、
スクリプトのどこをどのように変更すればいいですか?

あと、同じMinibbsに、SSI式のテキストカウンタをつけたいのですが、
CGIが吐き出すHTML内にSSIコマンドを書いても無視されるのです。
CGIの中でSSIは使えないのですか?
設定を変えたら出来ますか?

よろしくお願いします。
回答者 いのちゃん  [削除]  投稿日 2/16(金) 02:29:05
http://www.kcb-net.ne.jp/ki-net/mini91/minibbsv8.93.cgi
http://www.kcb-net.ne.jp/ki-net/mini91/minibbsv8.93.txt
上記URLにCOOKIEを設定してみました。

347: print "リンク <input type=text name=\"url\" size=70 value=\"$COOKIE{'url'}
348: \"><p>\n"; (オリジナルはvalue=\"http://\"><p>\n";)

399: if ($url) { print "<b>リンク:</b> <a href=\"$url\">$url</a>\n";}
ここは削除の次ぎの行です。新規投稿した時に表示するようにしたものです。
クリッカブルにしてありますのでurlからジャンプが可能です。

502: if ($FORM{'url'} eq '') { &error('入力ミス','URLを記入してください.'); }
emailの次に設定しました。urlの記入が無ければエラーになります。

543: url\:$FORM{'url'}\,
emailの次に設定しました。

581: $COOKIE{'url'} = $FORM{'url'};
emailの次に設定しました。
回答者 谷口  [削除]  投稿日 2/16(金) 12:32:57
次の処理で不具合が出るような気がしますが、いかがでしょうか?

@pairs = split(/,/,$DUMMY{$reload});
foreach $pair (@pairs) {

        ($name, $value) = split(/:/, $pair);
        $COOKIE{$name} = $value;
}

foreachループ内のsplitでは、:により$pairを分割するようになっていますが、
URLの場合:が含まれることが考えられるため、$COOKIE{'url'}はhttpだけと
なることが考えられますが。

        ($name, $value) = split(/:/, $pair, 2);

とすることで対応できると思いますがテストはしていません。
回答者 いのちゃん  [削除]  投稿日 2/16(金) 13:31:53
>347: print "リンク <input type=text name=\"url\" size=70 value=\"$COOKIE{'url'}
>348: \"><p>\n"; (オリジナルはvalue=\"http://\"><p>\n";)

こちらの方でご指摘の“http”の不都合が表示したのでオリジナルの指定を削除して
つまりhttp://の指定を外して最初からurlを書いてもらうように改めております。

その後テストはしておりませんが今の所この条件でCOOKIEが効いておりますの出ちょ
っと様子を見てみたいかと存じます。又何か当方の気付かないような事柄がありました
ら宜敷くご指導して下さいませ。

谷口さんちょっと話をこちらに取りますが
http://www.kcb-net.ne.jp/ki-net/memory/dirsize.cgi?..|ri
このプログラムを重宝に使わして貰っております。ホームページの大きさのお知らせ
をクリックすれば一番下へジャンプしてファイルの数とバイト数を見れるようにして
おります。もう直ぐ20MBになりますので契約数量が一杯です。毎日この値と睨めっ
こをしております。(^^)
回答者 いのちゃん  [削除]  投稿日 2/16(金) 14:08:09
COOKIEの不都合の修正
投稿日 2月16日(金)13時44分 投稿者 いのちゃん [proxy.kcb-net.ne.jp] 削除

リンク: http://www.kcb-net.ne.jp/ki-net/frame4_1.html

今回確認の為に次ぎのURLに這入って見ましたらやはりご指摘のように
“http”となっておりましたので次の様に修正してOKになりました。
どうもです。_(._.)_

299:         ($name, $value) = split(/:/, $pair,2);
上記Item No.299の“,2”を谷口さんのアドバイスにより挿入しました。

これによりCOOKIEが完全になったようです。有難うございました。(^^)
質問者 TIN  [削除]  投稿日 2/16(金) 16:13:13
早速のレス、ありがとうございます。

書いてあったようにスクリプトに挿入してアップロードしたところ、
無事リンクのクッキーが出来ました。

ところで、このようにすると、
URL欄には、無表示かクッキーかのどちらかになるようですが、
常に「http://」を表示させるようにするためには(デフォルトのように)、
単純にvalue=のところにhttp://をつけるだけではダメですか?
回答者 まさ  [削除]  投稿日 2/16(金) 16:22:25
Cookieの方はいのちゃんさんが既に回答なさっているので、わたしはもうひとつの方を。

>あと、同じMinibbsに、SSI式のテキストカウンタをつけたいのですが、
>CGIが吐き出すHTML内にSSIコマンドを書いても無視されるのです。
>CGIの中でSSIは使えないのですか?
>設定を変えたら出来ますか?

まず結論から言いますと、これは設定云々の話ではなくて、そういったことは出来ません。
何故かといいますと、SSIはHTML内を解析してSSIのコマンドがあるとそれを実行
します。解析ファイルですけれども、それは例えば.htaccessなどに記述します。よく*.shtml
と言うのを見かけますがあれがSSIを動作させるHTMLです。*.htmlでもいいのですが、
こうしてしまうとSSIが無いファイルも解析してしまい、余計なレスポンスを与えます。

CGIが出力する動的HTMLは解析しません。あくまでも解析するのは静的HTMLのみ
です。ですからCGIの中にSSIを記述しても無視されてしまいます。
ではCGIの中にはSSIを記述できないのかといいますと、SSIがしていることを関数
などにしてCGIの中から呼び出すと、結果的にSSIを埋め込んでいるかのような動作を
させることはできます。

カウンターを表示させたいとのことですが、IMGで呼び出すCGIなどを使うと実現できます。
回答者 いのちゃん  [削除]  投稿日 2/16(金) 20:32:30
>347: print "リンク <input type=text name=\"url\" size=70 value=\"$COOKIE{'url'}
>348: \"><p>\n"; (オリジナルはvalue=\"http://\"><p>\n";)

ここのオリジナルの事に言及されて居るようですが当方も改造に当たっては
出来る丈オリジナルに添って改造をするように心掛けておりますが前回のご
説明の様に“http”の不都合が発生しておりましたのでその個所を削除した
経緯があります。

貴殿のご発言のようにどうしても“http://”がurlの行頭に欲しい場合はそ
れを付けて見て下さい。当方はその行のやり取りを若干テストして見ましたが
既にCOOKEIが効いて有効の状態のままになっております。(^^)

問題は最初の一回こっきりの話ですので2回目からはCOOKIEが効いております
ので問題は無いかとは存じますが...。しかし乍ら貴殿のご希望の様にURLの
行頭に“http://”と最初から指定してある場合とその指定の無い場合もあり
ますのでご使用者の使用勝手に関する好みの問題になります。

要は2回目以降に訪問した時には同じURLを何度も書き込む手数を省いてCOOKEI
が有効に働いておりますので貴殿の最初のCOOKIEを有効にしたいというご希望
には添っているかとは存じますが...。

質問者 TIN  [削除]  投稿日 2/17(土) 10:59:53
>CGIが出力する動的HTMLは解析しません。あくまでも解析するのは静的HTMLのみ
>です。ですからCGIの中にSSIを記述しても無視されてしまいます。

そうなんですか・・・
今まで何度かCGIの中にSSIを記述して、おかしいな〜と思っていたのですが、
やっぱり元から無理だったんですね

>ではCGIの中にはSSIを記述できないのかといいますと、SSIがしていることを関数
>などにしてCGIの中から呼び出すと、結果的にSSIを埋め込んでいるかのような動作を
>させることはできます。

今「とほほのWWW入門」に有るカウンタを埋め込むべくがんばっていますが、
どうも上手く行かないようで・・・

>貴殿のご発言のようにどうしても“http://”がurlの行頭に欲しい場合はそ
>れを付けて見て下さい。当方はその行のやり取りを若干テストして見ましたが
>既にCOOKEIが効いて有効の状態のままになっております。(^^)

しかし、今http://をこちらでつけてしまうと、
先日のクッキー設定以後に、クッキーを取得した人にとっては、
http://http://・・・・・ というように表示されてしまいそうですね。
よく考えたら、別にhttp://のデフォルト表示が無くても大差無さそうなので
デフォルトは空欄でいいです。ありがとうございました。


スレッドを立てたついでにお聞きしておきたいのですが、
Minibbs8.93で、発言文字色をプルダウンフォームで選べるようにするには、
入力フォーム欄にname=変数のプルダウンを設置して、
メッセージ欄に<font color=変数>という感じで出来るのでしょうか?
おそらくデコード処理と言うのが必要になってくると思われるのですが、
その辺が良く分からなくて・・・

返信(回答)する


Web裏技