傘地蔵さん、
まず、Webサーバとのやりとりというのは1回限りと思った方がよいです。別のページを開けばその時は別の接続です。
ユーザ認証で、ログインということはありえません。ログインしているわけではなく、毎回リクエストのたびに認証情報をつけているだけです。
一回ユーザ名とパスワードを入れるとそれ以降いちいち入れ直さなくていいのは、ブラウザが覚えていて自動的に認証情報を送ってくれるからです。
そのあたりの事情は、トレースログ(trace.log)を見るとわかります。
ユーザ名の空白については、確認して直します。
ユーザ名に空白がはいることは想定していませんでしたから何か不具合があるのだと思います。
REMOTE_USER の件ですが、 CGI を認証が必要な場所に置いていないと設定されない
ようですね。色々と調べていて、そのような記述を見つけました。
認証付きで一旦ログインすると、ログアウトするまで REMOTE_USER が付いてまわる
のだと思っていました。
CGI は C++ で書いています。面倒だって意見も有るようですが、私にとって新しい
ものを覚えなおすより楽なものですから…。
C++ だとクラスも使用できますから、それなりのクラスを準備することで、それほど
面倒なことをしないでも済みそうです。
未だ未だ判らないことも多く、皆様にとっては意味不明な、あるいは「そんなことも
知らないのか」と呆れられるような質問をすると思いますが、どうか御容赦ください。
追伸
ユーザ名に空白を含んでいると REMOTE_USER には最初のワードしか入って来ない
ようです。これは仕様でしょうか。
サイトによっては氏名を DBCS の空白で区切っているところがありますが。空白が
利用できないためかなと思っています。
いとさん、今晩は。ありがとうございます。
トップページを CGI にして REMOTE_USER を確認すると確かに設定されていました。
トップページからゲストブックの入力ページを開くのですが、そこでは設定されて
いません。
REMOTE_USER には寿命が有るのでしょうか。だとすれば、何処かに記録しておく必要が
有るということでしょうか。
トップページは HTML なのでどうすれば良いのか…。
AN HTTPD の話じゃなくて、基本的な CGI の動かし方のようで申し訳有りません。
傘地蔵さん
環境変数の REMOTE_USER は問題なく設定されますよ。
試しに以下のスクリプトをファイル名 hello.cgi とでもして
ユーザ認証のあるパスに置いて実行してみてください。
#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
print "<HTML><BODY><H1>こんにちは $ENV{REMOTE_USER} さん</H1></BODY></HTML>\n";
設定されなかったというのはユーザ認証のないパスでもろもろの
環境変数をリストさせたようなときだったのではないでしょうか?
中田さん、有難うございます。
環境変数は調べてみたのですが REMOTE_USER は設定されていませんでした。
何か設定が必要なのでしょうか。
ログの方にはユーザ名が有るので解析して得ようかとも思ったのですが、
複数のユーザがログインすると誰の名前か判らなくなる問題が有ります。
傘地蔵さん、
ユーザ認証のユーザ名は 環境変数 REMOTE_USER にセットされます。
グループの連絡用にホームページを開設しています。
CGI で、ログインした方毎にメッセージを切り替えたいのですが、ユーザ認証の
名称を CGI で得ることはできないのでしょうか。
投稿者(ユーザ)が誰かを自動的に設定したり、ユーザ宛のメッセージを保留
しているといったメッセージを表示したいと考えています。
また、ゲストブックはゲストも閲覧できるが、投稿は許可されたユーザに限るといった
制御も行ないたいのです。