質問: $ENV{'REMOTE_USER'}はを見て認証すると設定されるもので、書き換えるのは難しいというのはわかりました。 $ENV{'REMOTE_USER'}で参照できますが、中に格納したいときはどうすればよいのでしょうか? perlで下記のプログラムを書きました。 hello1.cgi、hello2.cgi同じ内容です。 #!/usr/local/bin/perl print "Content-type: text/html\n\n"; print "\n"; print "$ENV{'REMOTE_USER'}\n";#1 $ENV{'REMOTE_USER'}="g";#2 print "$ENV{'REMOTE_USER'}\n";#3 print "\n"; exit; IDをguestでログインして、 hello1.cgiにアクセスすると「guest g」が出力されました。 次に、 hello2.cgiにアクセスすると「guest g」が出力されました。 hello1.cgiで、REMOTE_USERにgが代入されて、hello2.cgiでは「g g」が出力されるのかどうかを実験しました。上記の方法では、書き換えができないようです。何個か認証スクリプトダウンロードしてソース見てみましたが、$ENV{'REMOTE_USER'}=$nameというような処理をしているものもありまして、どんなコードにしたら書き込むことができるでしょうか。ソースコード読むのも不慣れで、認証の種類、仕組みについての知識もあいまいです。 よろしくお願いします。
回答: $ENV{'REMOTE_USER'}変数は、クライアント側から、基本認証で取得したデータ(ID)が記録されます。 あくまでこの変数は、記録されたものであり、元のクライアント側のユーザー名を変更するにはいたりません。 また、引数を渡して処理したとしても、デコード処理をするときに環境変数%ENVに格納するというむちゃくちゃな方法以外$ENV{'REMOTE_USER'}の値を変更する手段はありません。 やり方としては、すべてのスクリプトのはじめに$ENV{'REMOTE_HOST'}="(任意の文字)";と書くのが一番よいでしょう。