電子書籍の厳選無料作品が豊富!

cgi初心者のdejifuraと申します。どうか助けてください。
「パスワード認証後に、ユーザーIDごとにそれぞれのページへリンクさせたい。」
「ユーザーIDが○○(完全一致)ならば、http://www.dejifura.com/○○.htmlへリンクする」
以上の内容を行いたく、パスワード認証のCGI設置はできたのですが、それ以降がわかりません。
リンク先を振り分けるCGIを一度ダウンロードにしたのですが、私の力では振り分け条件を変更することができませんでした(設置場所がおかしいのかも)。ぴったりのCGIがダウンロードできる場所か、振り分け条件の変更方法のわかる方がいらっしゃいましたらどうか助けてください。

A 回答 (3件)

#1です。



先に確認なんですが、
Perlのパス設定や、パーミッション設定、ASCII転送などは問題ありませんか?
    • good
    • 0
この回答へのお礼

親切にアドバイスいただき、ありがとうございます。
やはり自分では良くわからないので、外注することにしました。
どうもお騒がせ致しました。

お礼日時:2005/12/15 22:17

■基本認証後の振り分け


http://www.rescue.ne.jp/cgi/furiwake/

↑これなんかどうですか?

この回答への補足

早速のご回答ありがとうございます。
実は、現在そのCGIの設置を試みていました。
ですが、ユーザー認証でユーザー名とパスワードを入力しても「Internal Server Error」が表示され、目的のページが表示されません。

元のプログラムはこれでした。
$USERNAME = $ENV{'REMOTE_USER'};
if ($USERNAME eq "") { &error("Error","このプログラムは基本認証が行われるディレクトリ内に設置してください。"); }

print "Location: ";

# ↓上から順番に処理しますので注意! (先に該当するものがあれば適用になってしまう)

# もしユーザ名が FOOBARなら(完全一致)
if ($USERNAME eq "FOOBAR") { print "http://www.rescue.ne.jp/cgis/furiwake/sample/1.h … } # アクセス先URL

# もしユーザ名が A から始まり h で終わるなら
elsif ($USERNAME =~ /^A.*h$/) { print "http://www.rescue.ne.jp/cgis/furiwake/sample/3.h … } # アクセス先URL

# もしユーザ名が A から始まるなら(大文字小文字を区別しない場合は i オプションをつける)
elsif ($USERNAME =~ /^A/i) { print "http://www.rescue.ne.jp/cgis/furiwake/sample/2.h … } # アクセス先URL

# もしユーザ名が A以外 から始まるなら
elsif ($USERNAME !~ /^A/) { print "http://www.rescue.ne.jp/cgis/furiwake/sample/4.h … } # アクセス先URL

# 何も該当しない場合は
else { print "http://www.rescue.ne.jp/cgis/furiwake/sample/0.h … } # アクセス先URL

print "\n\n";
exit;

sub error { #----------------------------------------------------------------

local (@msg) = @_;
local ($i);

print "Content-type: text/html\n\n";

print <<"EOF";
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE></TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=x-sjis">
</HEAD>
<body>
<h1>$_[0]</h1>
EOF

foreach $i (1 .. $#msg) { print "$msg[$i]<br>\n"; }

print <<"EOF";
</body></html>
EOF
exit;

}

これを、もしユーザー名が○○なら、http://www.▲▲.comへ、と言う内容にするにはどうしたらよいのでしょう?

# もしユーザ名が ○○なら(完全一致)
if ($USERNAME eq "○○") { print "http://www.▲▲.com"; } # アクセス先URL

と変えるだけではだめですか?

補足日時:2005/12/14 13:00
    • good
    • 0

どのCGI使っているか判らないし……。


ユーザーIDが○○と完全一致ならば、目標のページへ
違えば、HOMEに逆戻り
というのは、どのユーザー認証でもある基本的機能なので、リンク先を振り分けるCGIってなに?な状態です。
完全一致以外は入口のページに戻すとかそういうものではないのですか?
間違ったら適当な場所に飛んでもらいたいのでしょうか?
設置場所がおかしいかもと書かれても、お使いのサーバーも判りませんし……。
答えられる人もいるかもしれませんが、ちょっと答えにくいですので、補足お願いします。

この回答への補足

意味合いとしては、「ユーザーごとに別々のページへ飛んでもらいたい」ということなんですが・・。
普通のユーザー認証だと、どのユーザーも同じページへ飛びますよね?
うまく表現できなくて申し訳しわけありません。
早速の回答ありがとうございました。

補足日時:2005/12/14 12:41
    • good
    • 0

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