Perlコーディング

リダイレクト

2007年11月22日
1.認証画面で、パスワード認証
2.クッキー発行
3.トップページへジャンプ
としたいので、リダイレクトを使ってみることにしました。

httpヘッダに、
print "Location: リダイレクトしたいURL\n\n";
と書けばリダイレクトしてくれます。


これはクッキー発行の直後に行いたいので、
print <<EOT;
Content-type: text/html
print "Set-Cookie : cookie_name=cookie_value;\n\n";
print "Location: リダイレクトしたいURL\n\n";

としたのですが、これは画面に
print "Location: リダイレクトしたいURL\n\n";
と表示されてしまい、どうしてもうまく動作しません。


考えた挙句、htmlのヘッダに
<meta http-equiv="Refresh" content="リダイレクトまでの秒数;URL=リダイレクトしたいURL">
を書き加えることにしました。

1.認証のために認証画面を表示したときは、書き込まない。
2.パスワードを入力してボタンをクリックすると、再度認証画面のファイルを読み込み、パスワード確認
3.正しければクッキー発行と上のメタタグを出力

print <<EOT;
Content-type: text/html
print "Set-Cookie : cookie_name=cookie_value;\n\n";
空行
htmlソース

これでクッキーを発行後、目的のURLにリダイレクトできます。
リダイレクトまでの秒数を0にすると、再度認証画面が表示されることはありません。