• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:掲示板などのCGIでモード別機能の実現)

掲示板のモード切り替えについての課題

このQ&Aのポイント
  • 掲示板の管理者モードに移行する際に、途中でモードが外れてしまう問題が発生しています。
  • モードの切り替え時に自身をコールする方法ではうまくいっていないため、別の方法を模索しています。
  • ログイン中の管理者フラグを持ちまわることができるような方法を考えていますが、適切な方法が見つかっていません。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.7

グッスリ眠って頭スッキリ。出ました。(笑) こんなのでどうでしょう。 if ($login) {   print "<INPUT TYPE=\"hidden\" NAME=\"login\" VALUE=\"1\">"; } GET なら if ($login) {   print "<A HREF=\"abc.cgi?login=1\">"; } else {   print "<A HREF=\"abc.cgi\">"; } これでOKだとおもいますので、ご確認ください。 う~ん、なんて単純な。

Spur
質問者

お礼

すっきりしましたか(笑) 本当に何度もありがとうございます。m(_ _)m そうですね、やはり、hiddenで渡すしかないですよね? 「if ($login)」の部分もやりたいことはわかりますが、なんとなくもうひとつかな? でも、一度もログインしてなければhidden渡しも表示されないということで、良いのかな?とも考えます。 色々いただいたアイデアで私なりにやってみます。 ありがとうございました。

その他の回答 (6)

回答No.6

>れてしまうので、GETを使うメリットというか、必要性を >理解していないこともあって、POSTしか使ったことが無 >いのです。 私は両方つかいます。POSTだけでは実現が難しいこと もありますので。もちろん肝心な部分はPOSTにします。 >しかし、管理者ではない人が、ソースを見て予測をつけ >て、適当に引数を入れたときにログイン後と同じ処理が >走るのは面白くないなと考えています。 URLに引数を付加した場合は撥ねるので心配はない(適当に 引数を入れたとき = GETで値を与えたの場合 = にログイン 後と同じ処理が走ることは無い)という考えなんですが、 それでは不足ですか? 残る手段として、環境変数を使うというのはどうでしょうか?

回答No.5

読み落としました。 POST と GETは違うはずですよ。 cgi-libを使ってるとあまり意識する必要がないのかも分かりませんが。あまり気にしたことがないので、よく覚えていません。最近 perlは使いませんし。 そのときでも $ENV{'REQUEST_METHOD'}を調べて "GET"だ ったらフラグを無視すればいいと思います。 全部POSTで作れるかという問題はのこりますけど。

Spur
質問者

お礼

何度も恐れ入ります。( -.-)( _ _) 違いは知っていますが、私はPOSTしか使ったことがありません。 GETでは256bytesしか扱えないことと、URLに引数が表示されてしまうので、GETを使うメリットというか、必要性を理解していないこともあって、POSTしか使ったことが無いのです。 私が恐れているのは、URLとして表示されることではなく、それはログインした管理者に見えてもかまいません。なぜなら、ソースを見れば、どっちみち分かることですから。 しかし、管理者ではない人が、ソースを見て予測をつけて、適当に引数を入れたときにログイン後と同じ処理が走るのは面白くないなと考えています。 ですから、CGIが吐き出した結果のHTMLを見てもログイン後のパラメータがバレないようにしたいのです。 やっぱり、無理かな~?

回答No.4

http://xxxx.xxx.jp/cgi-bin/yyyy.cgi?login=1 >などとダイレクトに打ち込むと、認証を完了した画面に >いきなり行ってしまいます。 そのために、なるべくPOSTでと、お断りしたのですが。 全てをPOSTにするのは不可能ですか? 全部はPOSTに出来ないとなると、『芸が無い』と言われているテンポラリファイルを使わざるを得ないかもしれません。もう少し考えてみますが...

回答No.3

ああ、ホントにそそかしい。少し訂正します。 パスワード認証が完了した時点で $login = 1; のようにログイン済みのフラグを設定しておいて フォームを使って <form method="POST" ... <input type="hidden" name="login" value=$login> とするか <a href="Spurbbs.cgi?mode=edit&login=$login> のようにしてGETで受け取ればログイン中のフラグを持ち回れます。 なるべく POSTをつかった方がいいです。

Spur
質問者

お礼

2回回答いただきましたが、こちらにまとめて書かせていただきます。 その方法はあるのですが、それだと、hiddenにしてもアクセスする時にURLに付ければ認証不要になってしまいます。 つまり、 http://xxxx.xxx.jp/cgi-bin/yyyy.cgi?login=1 などとダイレクトに打ち込むと、認証を完了した画面にいきなり行ってしまいます。 フリーのCGIなどで良く使われる方法だと思うのですが、そこにもう一工夫欲しいなと考えています。 認証後のパラメータ付きでダイレクトにアクセスしても、認証が済んでなければ、認証要求をするようにしたいのですが、無理でしょうか?

回答No.2

方法はいろいろありますが、フォームを使って <form method="POST" ... <input type="hidden" name="login" value="1"> とするか <a href=Spurbbs.cgi?mode=edit&login=1> のようにしてGETで受け取ります。 なるべく POSTをつかった方がいいです。

  • so_blue
  • ベストアンサー率48% (50/104)
回答No.1

> 「ログイン中」というフラグを持ちまわる Cookieを発行してはどうでしょう? http://tohoho.wakusei.ne.jp/wwwcook.htm

参考URL:
http://tohoho.wakusei.ne.jp/wwwcook.htm
Spur
質問者

お礼

それも考えたのですが、少ないとは思いますがcookieをoffにしている場合もあるし、それを考えると汎用性がどうかな?とも思います。 案の1つではありますね。 ありがとうございました。

関連するQ&A