• ベストアンサー

perl/cgi リダイレクトができない

こんにちは。 レンタルサーバーにて、認証後に開きたいページをlocationで実行してみたのですが動かなくて困っています。 index.html(ログインフォーム) ↓ aaa.cgi(認証可否チェック) ↓OKならsessionを与えて bbb.cgi(認証後にユーザーに見せる最初のページ) location以外でダイレクトさせる方法を教えてください。 よろしくお願いいたします。

  • CGI
  • 回答数3
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.1

METAを使えばリダイレクトできますけども。 <meta http-equiv="refresh" content="0;URL=http://hogehoge.com"> 普通は location でできます。 location の前にprint していませんか? location は 一番最初(printする前)にやらないと動作しません。 ただし、例の動作でしたら私ならばaaa.cgiにすべて入れてしまいますね。 subルーチンとかを使えば余計なページ移動を考えなくてもいいので。

cluewm
質問者

お礼

仰るとおりですね。 別ファイルに記述しなくとも、 subで問題ありません。 ただ、動かなかったので気になりました・・

その他の回答 (2)

  • taseki
  • ベストアンサー率66% (155/233)
回答No.3

print "Location~ という行の前に print "Content-type~ とか入っていませんか?

回答No.2

まずlocationでリダイレクトが本当にできないかどうかを確認するべきかと。 書いたソースと、起きた現象について補足願います。

cluewm
質問者

補足

http://www.futomi.com/lecture/ohter/redirect.html を参考にして、 aa.cgi ----------------------------------------- print "Location: http://○○/bb.cgi\n\n"; ----------------------------------------- としました。 結果は、 http://○○/bb.cgi が出力されているだけで動きません。

関連するQ&A

  • perl/cgi セッションについて

    www.ksknet.net/movabletype/archives/2004/09/cgisession.html セッションについて上記を参考にしています。 セッションIDを付与しているのはソースから分かります。 ただ、付与したセッションをチェックするのが分かりません。(認証成功後のページからの全ての遷移先ページでセッションが有効かどうかチェックしますよね?) index.html ↓ログイン成功。セッションを付与 aaa.cgi ↓セッションをチェック bbb.cgi ダイレクトに(セッションを付与されていない状態) bbb.cgi をアクセスしたときにアクセスできないようにならなければ意味がありませんので・・・。 $session->id()に値が入っているかどうかのチェック文を認証をかけたい全てのページに仕込めばよいのでしょうか? 文章おかしくてすみません・・ よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • HTMLとPerl間のページ遷移について。

    HTMLとPerl間のページ遷移について。 こんにちわ。 HTML(index.html)でログインフォーム(ユーザ名、パスワード)を作成し、そこに入力した情報を、Perl(login.pl)にPOST送信します。 Perlでは、受け取ったパラメータをチェックし、ユーザ名とそのパスワードが正しければ、もとのHTMLファイル(index.html)にページ遷移し、もともとあったログインフォームをJavaScriptで削除し、「ログイン中」と表示させる、ということをしたいのですがわからないところがあり投稿させていただきました。 現在、クライアントでは、JavaScriptを使ってログインフォームを作っています。そして、フォームの中の値を取得して、POST送信することはできます。次に、サーバにてPerlで受け取ったパラメータをチェックし、ユーザ名とパスワードの認証をとるところまではできています。しかし、その後にどうすべきかがわかりません。locationで、もとのHTMLファイル(index.html)を指定しても、ログインを認証したという情報は保持しておらず、それでは意味がありません。 Perlでログインを認証した後に、認証したという情報を保持したままHTMLページに遷移する事は可能でしょうか。可能であればその方法を教えていただきたく思います。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • CGIのアクセス制限について

    環境は windowsXPHome SP3 / Apache2.2 / ActivePerl5 / (MySQLを使う予定) です。 htdocs\index.html htdocs\ddd\aaa.cgi htdocs\ddd\bbb.cgi のようなディレクトリ構成で、httpd.confは、htdocs以下を公開する設定になっていて <Directory "D:\Program Files\Apache Software Foundation\Apache2.2\htdocs\ddd"> AddHandler cgi-script .cgi Options +ExecCGI </Directory> を指定しました。 これを自宅サーバーとして公開する場合、外部からはindex.htmlにアクセスできるようにして、 aaa.cgiやbbb.cgiはindex.htmlからリンクやformのactionから呼び出されてからしか実行できない (直接cgiのurlを指定して開けない)ようにするにはどうすればいいでしょうか? よろしくお願いします。

    • ベストアンサー
    • CGI
  • xx.cgi?/***のリダイレクトを行いたい

    .htaccessを使い、別のページにリダイレクトを行いたいのです。 今、h ttp://xxxyyyzzz.co.jp/cgi-bin/index.cgi?/01_aaa/ajan.html/ のようにアドレスバーには表示されています。 これをh ttp://xxxyyyzzz.co.jp/newsite/****** にリダイレクトするようにしたいのですが・・・・ (*****は移動元によって変わります) 構造は如何の様になっています (ファイル名は仮です) main(.htaccess設置)    -/01_aaa/-/ajan.html     -/a    -/02_bbb/-/bmay.html     -/baplil.html    -/cgi-bin/-index.cgi Redirect permanent /cgi-bin/index.cgi h ttp://xxxyyyzzz.co.jp/newsite/******/ と記述すると、全ページ同じ場所に移動してしまいますし、 前を/cgi-bin/index.cgi?/01_aaa/ajan.html/ に変えたら リダイレクト自体が動きません。 申し訳ありませんがよろしくおねがいします。

    • ベストアンサー
    • HTML
  • 301リダイレクトの記述方法に関して

    サイトリニューアル後の301リダイレクトに関してご質問させて頂きます。 旧サイト URL : http://www.hoge.co.jp/aaa サーバーのディレクトリ : www/aaa 新サイト(全ページssl対応) URL : https://www.hoge.co.jp/aaa/bbb サーバーのディレクトリ : ssl/aaa/bbb サーバー:ファーストサーバ ------------------------------------------------------------------------- 上記の状況で旧サイトのディレクトリwww/aaaより下のファイルにアクセスしてきたものを 全て新サイトのトップページ(https://www.hoge.co.jp/aaa/bbb/index.php)へ 「.htaccess」を使用してリダイレクトしたいのですが、どの様に記述すれば良いのか 分かりません。 調べて「.htaccess」を作成しサーバーへアップロードしてみてもインターネットエラー500に なってしまいます。 この様な場合の「.htaccess」の記述方法や設置場所をご教授頂きますようお願い申し上げます。

  • リダイレクト元のURLの取得方法について

    現在、以下2つのphp5プログラム(+ PEAR::AUTH)で、なんちゃってフォーム認証するCGIを作成しています。 環境 Windows XP、Web SV IIS 5.1 (1) aaa.php  : PEAR:AUTHを使った、ログイン画面(フォーム認証CGI)。  : 機能 : MySQLに格納されたID/PWで認証する。認証OKだったら、bbb.phpが出力するDBレコードデータ参照ページへのリンク集を出力する。    リンク1)http://domain.jp/bbb.php?id=1001    リンク2)http://domain.jp/bbb.php?id=1002    リンクn)http://domain.jp/bbb.php?id=nnnn    ・・・といった感じで、DBに登録されたレコードを表示するCGIへのリンクをずらずら出します。 (2) bbb.php  : DBデータを整形し、多少見やすい形に加工したHTMLページを出力する。    この時、aaa.phpが認証OKの証?として出力したCookieが、    1.あったらHTMLページ出力し、     例1)http://domain.jp/bbb.php?id=1001 = 一意のキーid=1001の値で出力出来る、MySQL上のデータをHTML化したもの     例2)http://domain.jp/bbb.php?id=1002 = 一意のキーid=1002の値で出力出来る、MySQL上のデータをHTML化したもの     例n)http://domain.jp/bbb.php?id=nnnn = 一意のキーid=nnnnの値で出力出来る、MySQL上のデータをHTML化したもの    2.無かったら、     (a) http header 401を出力     (b) aaa.php(フォームログイン画面)にリダイレクトする。  一応、ここ迄はいいのですが、例えば、利用者が、上記例2のURLをブラウザ「お気に入り」で保存しておき、直接そのページをみたい、と言った時、リンク指定先のbbb.phpは、  ・ そのユーザがログインしていない場合(Cookieが無い場合)、aaa.phpのログインフォームへリダイレクトする  ・ aaa.phpは認証後、リンク集ページを出力する、  といった動作になってしまいます(てゆうかそうゆう作りなんで当たり前ですが・・・)。  そこで、aaa.phpの機能で、  ・ 「どのURLから、リンク(リダイレクト)されてきたかを判定するロジック」を入れ、もし、「bbb.php?id=xxxx」だったら、   ・ 認証OK後、直接、そのbbb.phpが出力するHTMLのURL(http://domain.jp/bbb.php?id=xxxx)に、再度リダイレクトする処理を入れれば良い?、   のかなーと短絡的に考えました。  で、問題となるのが、aaa.phpが表示された時、どこからリダイレクトされてきたか(リダイレクト元のURL)を知る方法です。  そこで、PHPの、$_SERVER[HTTP_REFERER]を入れてみた所、  ・ bbb.phpにリダイレクトされる前のURLが、$_SERVER[HTTP_REFERER]に入っている(多分、別のHTMLのbbb.php?id=~へのリンク集?)  ・ $_SERVER[HTTP_REFERER]の中が空(URL直接指定?)  という現象で詰まってしまいました。  ここから抜け出す為、何か良いアイディア(別の方法、関数等)があればお知恵拝借したいと考えています(書いてある事を理解して頂ける文章か今イチ不安ですが・・・)。  何卒よろしくお願いします。

    • ベストアンサー
    • PHP
  • 認証CGIスプリクトを教えて下さい。

    現在、レンタルサーバーを利用して掲示板(携帯電話用)を作っています。 ここで認証の壁?にぶつかっているのですが、現状では会員登録のデータがaaa.csvとaaa.datであります。このデータファイルからネームとPWを読込⇒照合出来れば、index.cgiにリンクさせる様にしたいのですが、初心者なので、途方に暮れた状態です。 (あれこれ現在のCGIをカスタマイズを試みたのですが、認証を実行させると、トップページからお入り下さい・・・っと!今、そこに入りたい!!!と思うのですが、無理のようです) あつかましいとは思いますが、どなたかスプリクトをお教え下さい。初心者ですので・・・出来れば、分かりやすく・・・スミマセン宜しくお願い致します。

    • 締切済み
    • CGI
  • mod_rewriteについて

    Apacheのmod_rewriteを使って、aaa.cgiをいったんbbb.cgiにリダイレクトし、aaa.cgiの危険な関数を確認するためにソースコードをopen関数でチェックして、 問題がなければ、requireを使って$ENV{'REDIRECT_URL'}でaaa.cgiを読み込んであげるのですが、前者も後者もaaa.cgi/pathというようなPATH_INFOつきのアドレスだと、500 Internal server errorになってしまって表示できないのですが、解決方法はありますか? レンタルサーバー用のチェックシステムなんです。

    • 締切済み
    • CGI
  • perl cgi, パスワード可能なレンタルサーバ

    従来ジオシティーズでperl CGIを作っていました。 しかしジオシティーズではパスワードによるアクセス制限ができないことがわかりました。 パスワード管理(たとえば.htaccessなどによる)が可能でperl cgiが動くレンタルサーバはないでしょうか? 絶対条件としては、サーバに作成したデータベースの所有権がユーザ側にあることや、サーバとしての信頼性です。ですので、無料サーバよりむしろ有料であって、サーバのダウンが極力なくセキュリティーもしっかりしているところの方がよいです。 なんらかのSQLデータベースもCGIから使えれば好ましいです。 そういったレンタルサーバをご紹介ください。

    • ベストアンサー
    • CGI
  • CGIで入力した内容をHTML内に表示

    いつもお世話になっています。 メールフォームで事前に「aaa.cgi」というページで入力した内容を「bbb.html」内に表示したいと思っています。 具体的には「aaa.cgi」の中に「name」というフォームがあり、この値をそのままbbb.html内に「●●さん」として表示したいです。 $in{'name'}などとして引き継げるのはCGI→CGIですよね? HTMLに$in{'name'}と記述しても空欄になってしまうためご質問させて頂きました。 bbb.htmlをcgiで書き直してaaa.cgiの値を受け取った後、Printなどで出力する方法しかないでしょうか? よろしくお願い致します。

    • ベストアンサー
    • HTML

専門家に質問してみよう