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

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

掲示板などのCGIでモード別機能の実現

ちょっと違うのですが、機能が似ているので掲示板を例にしてお尋ねします。 ユーザモードと管理者モードがあって、例えば、ユーザは新規登録と閲覧だけ、管理者はそれに加えて、削除や編集ができるとします。 問題は、この管理者モードになってから、削除や修正や、色々な機能があるのですが、それを切り替えるたびにモードを引数で渡して自分自身をコールしているのですが、どうも動作が途中で管理者モードから外れてしまいます。 CGIコールをせずに、サブルーチン的に内部で機能を呼べば良いのですが、CGIコールでもうまくいく方法は無いものかと考えています。 簡単に考えれば、管理者として「ログイン中」というフラグを持ちまわることができれば良いと思いますが、それはどうしたら良いでしょう? 変数に入れてもコールするたびに初期化されるし、ファイルに落とすのも芸が無いし・・・ 何か良い方法は無いでしょうか?

  • Spur
  • お礼率66% (51/77)
  • Perl
  • 回答数7
  • ありがとう数6

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

  • ベストアンサー
回答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

  • cgiから別のcgiをコールする方法を教えてください。

    いつもお世話になります。 プログラムとプログラムを結合しております。最初はサブルーチン化しようと思いましたが、元のプログラムの解析ができず。プログラムのコールしたいと考えております。perlから別のperlで作成したcgiをコールする記述方法を教えてください。初歩的な質問で申し訳ありません。

    • ベストアンサー
    • Perl
  • フリーCGI(perl) 掲示板でこんな内容の…

    もしご存知でしたらお教えください。 このようなフリーのCGIの掲示板を探しています。 自分のHPがwakwakのため、使えるCGIはperlだけになります。 要望1.1つのCGIで複数の掲示板のログを扱える。 要望2.できれば簡単な1行レスものがありがたいです。 要望3.またこれもできればですが、HTML内に埋め込み可能なものがうれしいです。 要望4.要望1にからんでですが、複数掲示板を扱えるCGIでも、必要なログの数だけソース内を さわらなくてはいけないのでは大変きついので、パラメータで受け取った引数をそのまんま ログ名にしてくれるようになっていてほしいです。 考えているのは、HTML側でJavaScriptでHTML名を取得し、それを引数にして渡す方法です。 そのようなフリーの掲示板はありませんでしょうか? 全部の条件を満たしてなくても、近いものがあればお教えいただきたいです。 すみませんが、何卒、よろしくお願いします。 ※あとプロバイダがwakwakというのがちょっと曲者ですが(cgi-binがpublic_htmlとは別に管理されている)。

  • 簡易CGIでユーザー管理ができ、ログイン機能がある物を探しています。

    簡易的なCGIで、ユーザ管理ができて、ログイン機能も付いているものを探しています。フリー・シュアどちらでも構いません。機能的にはユーザ登録機能・パスワード再通知機能・会員情報編集機能・データのCSVダウンロード・ファイルのアップロードとうができればありがたいのですが? 急いでいます。どなたか教えてください。

  • cgiの掲示板

    ホームページに掲示板を設置したいのですが、丸ごと自分で作る知識がないため、 cgiプログラムを配布しているサイトを捜しています。 掲示板の必須条件は、 ・スレッド型ではない、できるだけシンプルなもの ・承認制(管理者が公開するまでコメントが表示されない) ・著作権表示がないか、削除可能 ・デザインカスタマイズの自由度が高い です。有料・無料は問いません。相場がわかりませんが、予算は2万円くらいです。 自分でも検索しましたが、見つからなかったので・・・ よろしくお願いいたします。

  • CGIのサブルーチンの呼び出し方でお聞きしたい事がございます

    お世話になります 画像ファイルをクリックして、サブルーチンを呼び出す方法とかあるのでしょうか? あるシューアーCGIの解説をしているホームページがあり、画像をクリックしますとCGIが呼び出されます、 コードを見てみると私の知らない使い方がしてありました、そのホームページの拡張子はhtmなのですがその中に <A href="http://www.hoge.net/foo/index.cgi?mode=admin&pw=0123"><IMG height=30 alt=hoge src="hoge.gif" width=150 border=0></A> となっており、hoge.gifをクリックするとindex.cgiのadminという、サブルーチンをコールしているようにみえるのですが、このような使い方が出来るのでしょうか? 「A href属性」の使い方だと思うのですが、「a herf cgi 呼び出し」で検索してみましても、今一ピントくるものが有りません、 A hrefタグでcgiの呼び出しの仕方を教えて頂けませんでしょうか。

    • ベストアンサー
    • Perl
  • 掲示板のcgiスクリプトの開き方

    はじめまして、よろしくお願いします。 私の投稿している文芸サイト掲示板で、かなり前から英文字のみのURLを羅列したスパム投稿の書き込みが続いており、HP管理者が対処に困っています。対策関連のURLなどもお送りしてみましたが、管理者ご自身はあまりお詳しくないとのことで、私の方ででき得る限り試し間違いなければその方法をお伝えしたいと思い、同じ掲示板配布元より新しい掲示板を登録し日本語禁止のタグを入れたcgi改造をしてみようとしましたが、まず最初の、掲示板のcgiスクリプトの開き方がわかりませんので、どなたかご教示願えませんでしょうか。 ちなみに私は音楽のHPをやっており、FFFTPソフトの使い方はわかります。cgiは扱ったことはありません。 新たに登録した掲示板URLは以下になります。 http://res9.7777.net/bbs/****/ ホスト名アドレスを「http://res9.7777.net/bbs/****/」としてみましたが、接続ができませんでした。ユーザ名及びパスワードは合っていると思います。 初心者なので、3日間かかりきりで調べています。なにとぞよろしくお願いいたします。

  • マクロ教えてください

    マクロについての質問です。 サブルーチン間ですべての変数を共有する方法ってありませんか。 Call Prg(A,B,C) というやり方は知ってますが、サブルーチンの数が結構ありますし変数も多いため、 もっとスマート?にできないかなと思いまして。 よろしくお願いします。

  • ユーザフォームの入力結果の受け取り

    VB6でMsgBoxやInputBoxのフォントを変えたいので、それらしきサブルーチンを作成しました。そのサブルーチンはユーザフォームへの表示内容を設定した後、それを呼び出し(Show method)、押されたコントロールボタンの番号やテキストをパブリック変数に入れて戻っています(Show methodの次のステップに戻りました)。これを引数で受け取るにはどうすればよいのでしょうか(パブリック変数を使いたくないので)。よろしくお願いします。

  • CGIの改造

    タイトルを大袈裟にしてしまいましたが、 Kent-WebのLinkVisorにバナー表示機能を追加したいと思っています。 CGIリンク集などで同機能のスクリプトを検索してみたのですが、 結局見つからず自分で改造するしかないと思っています。 しかし、今まで、HTML部分のカスタマイズは経験したのですが、 CGIスクリプト自体をカスタマイズしたコトがありません。 もし、同機能のCGIスクリプトの存在をご存知だと言う方、 もしくは改造の仕方をご教授していただける方、お教え下されば幸いです。 ちなみに、主に管理人のみの登録・管理モードを利用したいと思っています。 よろしくお願いします。

    • ベストアンサー
    • CGI
  • エクセルマクロのサブルーチン引数で配列を使用したい

    VBA初心者です。 エクセルのマクロを組んでいるですが、サブルーチンの引数を配列にしたいのですが、どうすればよろしいでしょうか? 下記に例を示します。 呼び出し(Call)とサブルーチンの配列変数の記載方法がわかりません。 特に気になるのは、サブルーチンの配列に配列数(下記であれば10)を記入する必要があるのか? 必要な場合、元の配列数を変更した場合、どうすればミスなく、漏れなく修正できるか、良い方法はありまんせんか? (例) (呼び出し側) Dim AA(10) As Integer Call Test(AA)     ← 引数はAAでよい?それともAA() Sub Test(ByRef AA As Integer) ← AA or AA() or AA(10) ? AA(3) = AA(2) + AA(1) 以上、お手数をおかけしますが、よろしくお願いします。