プロが教える店舗&オフィスのセキュリティ対策術

CGIで動いている掲示板上にBASIC認証のIDを表示させてイと思っています。

以前HTML上に表示させるには?と聞いたらSSIで表示させるCGIを呼び出すことによって表示させることができると教えていただきました。

CGIの場合はどのようにすればBASIC認証のIDを表示できるのでしょうか?

A 回答 (4件)

print $ENV{'REMOTE_USER'};


とすれば表示できます。
認証を通さないと値は空なので気をつけてください。

参考URL:http://www.rfs.jp/sitebuilder/perl/03/05.html

この回答への補足

今実験してみたところ表示されませんでした。

<input type=text name="name" value="print $ENV{'REMOTE_USER'};" size=25$ff$NML></td></tr>

と書き換えると print; と表示されID名が表示できません。

どのようにすればよろしいのでしょうか?

補足日時:2005/09/20 11:47
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/09/20 11:21

>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";
}

この回答への補足

即急な回答有難うございます。
>可能ですが、ある程度スキルがいります。
そうですか。私には全くといっていいほど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>/
~~~~~~~~~~~~~~~~~~~~~~~でよろしいでしょうか。

よろしくお願いいたします。

補足日時:2005/09/20 13:47
    • good
    • 0

>私には全くといっていいほど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'}
を表示してみてください。

この回答への補足

回答有難うございました。だめでした。使用しているスクリプトはChild Treeなのですが、書いていただいた物をそのまま記入すると

print =<<EOF;

が表示され名前欄に print と表示されます。

$ENV{'REMOTE_USER'} では何も表示されません。
もちろんのことBASIC認証を通してます。

SHTMLで実験するとちゃんと表示されるのですが。。。
ちなみに以下のスクリプトを設置しSSIで呼び出すことでIDを表示できるのですが。。

print "Content-type: text/plain\n\n";
print "$ENV{'REMOTE_USER'}\n";

よろしくお願いいたします。

補足日時:2005/09/20 17:36
    • good
    • 0
この回答へのお礼

すいません!スペルミスで表示されなかったようです!しっかりコピーしてやったところ成功しました。有難うございます。

ところで“ゲスト”と表示の仕方をもしよろしければ教えてくれませんか?すいません。

よろしくお願いいたします。

お礼日時:2005/09/20 17:56

>ところで“ゲスト”と表示の仕方をもしよろしければ教えてくれませんか?



どんな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'] = 'ゲスト';
}
とすればよいです。
    • good
    • 0
この回答へのお礼

回答有難うございました。

何とかカスタムできそうです。

お礼日時:2005/09/23 22:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!