• ベストアンサー

CGI上にBASIC認証のIDを表示させるには?

CGIで動いている掲示板上にBASIC認証のIDを表示させてイと思っています。 以前HTML上に表示させるには?と聞いたらSSIで表示させるCGIを呼び出すことによって表示させることができると教えていただきました。 CGIの場合はどのようにすればBASIC認証のIDを表示できるのでしょうか?

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

  • ベストアンサー
  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.4

>ところで“ゲスト”と表示の仕方をもしよろしければ教えてくれませんか? どんなIDを使用しているか分からないので想像ですが、 $ENV{'REMOTE_USER'}で取るのでしたら、必ず取るので必要ないですね。 他の場合だと、 <input type=text name="name" value="print $ENV{'REMOTE_USER'};" size=25$ff$NML> の記入がなかった場合だったら、 どこかに$_POST['name']を記録しているところがあるので、適切な場所で、 if (!$_POST['name']) { $_POST['name'] = 'ゲスト'; } とすればよいです。

Intel_404
質問者

お礼

回答有難うございました。 何とかカスタムできそうです。

その他の回答 (3)

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.3

>私には全くといっていいほどPerlなどのプログラムには知識が無いので。。。あきらめるしかないのでしょうか。。。 全くといっていいほど知識がないのでしたら無理でしょう。 やることは初歩的なことなのですので、ある程度勉強をすればできるようになるかもしれません。 あと、ソースですが、ヒアドキュメントでしょうか? print =<<EOF; $nf$pf$Hi$TPH<table border=0> <tr><td bgcolor=$ttb>メンバーID</td><td>/ <input type=text name="name" value="print $ENV{'REMOTE_USER'};" size=25$ff$NML></td></tr> <tr><td bgcolor=$ttb>E-Mail</td><td>/ EOF みたいに記述されているのでしょうか。 とりあえずは $ENV{'REMOTE_USER'} だけでいいので、 <input type=text name="name" value="$ENV{'REMOTE_USER'}"> としてみてダメならば、他の場所で $ENV{'REMOTE_USER'} を表示してみてください。

Intel_404
質問者

お礼

すいません!スペルミスで表示されなかったようです!しっかりコピーしてやったところ成功しました。有難うございます。 ところで“ゲスト”と表示の仕方をもしよろしければ教えてくれませんか?すいません。 よろしくお願いいたします。

Intel_404
質問者

補足

回答有難うございました。だめでした。使用しているスクリプトはChild Treeなのですが、書いていただいた物をそのまま記入すると print =<<EOF; が表示され名前欄に print と表示されます。 $ENV{'REMOTE_USER'} では何も表示されません。 もちろんのことBASIC認証を通してます。 SHTMLで実験するとちゃんと表示されるのですが。。。 ちなみに以下のスクリプトを設置しSSIで呼び出すことでIDを表示できるのですが。。 print "Content-type: text/plain\n\n"; print "$ENV{'REMOTE_USER'}\n"; よろしくお願いいたします。

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.2

>IDを持ってない方が掲示板に書き込もうとした際にIDが無いので“ゲスト”として表示したいのですがこれは可能でしょうか? 可能ですが、ある程度スキルがいります。 ><input type=text name="name" value="print $ENV{'REMOTE_USER'};" size=25$ff$NML></td></tr> >と書き換えると print; と表示されID名が表示できません。 CGIで動かしていますか? SSIで呼び出していますか? 認証をした後にしていますか? print の使い方が間違っています。 ソースの開示が部分的すぎるので、もう少し開示してください。 どういう風に実験したかの詳細があると尚良。 既出の参考URLに習って、環境変数を全て出してみて、値を確認してみてください。 foreach my $key( keys %ENV ){ print "$key: $ENV{$key}<BR>", "\n"; }

Intel_404
質問者

補足

即急な回答有難うございます。 >可能ですが、ある程度スキルがいります。 そうですか。私には全くといっていいほどPerlなどのプログラムには知識が無いので。。。あきらめるしかないのでしょうか。。。 >CGIで動かしていますか? はい、CGIです。ある配布サイトからDLした 掲示板スクリプトのCGIにある名前欄に貼ってアップロードしましたがだめでした。 >認証をした後にしていますか? 掲示板が置いてあるディレクトリにBASIC認証をかけています。つまり掲示板に行くには認証を通過しないといけないようになっています。認証をすると掲示板が表示され後は観覧したり書き込んだり普通の掲示板と同じです。 >ソースの開示が部分的すぎるので、もう少し開示してください。 ~~~~~~~~~~~ $nf$pf$Hi$TPH<table border=0> <tr><td bgcolor=$ttb>メンバーID</td><td>/ <input type=text name="name" value="print $ENV{'REMOTE_USER'};" size=25$ff$NML></td></tr> <tr><td bgcolor=$ttb>E-Mail</td><td>/ ~~~~~~~~~~~~~~~~~~~~~~~でよろしいでしょうか。 よろしくお願いいたします。

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.1

print $ENV{'REMOTE_USER'}; とすれば表示できます。 認証を通さないと値は空なので気をつけてください。

参考URL:
http://www.rfs.jp/sitebuilder/perl/03/05.html
Intel_404
質問者

お礼

なるほど。有難うございます。ところで、IDを持ってない方が掲示板に書き込もうとした際にIDが無いので“ゲスト”として表示したいのですがこれは可能でしょうか?

Intel_404
質問者

補足

今実験してみたところ表示されませんでした。 <input type=text name="name" value="print $ENV{'REMOTE_USER'};" size=25$ff$NML></td></tr> と書き換えると print; と表示されID名が表示できません。 どのようにすればよろしいのでしょうか?

関連するQ&A