PerlのサブルーチンからのリターンをHTMLに取り込む方法とは?

このQ&Aのポイント
  • PerlのサブルーチンからのリターンをHTMLに取り込む方法について、現実的で実装可能な方法として以下の3つが考えられます。
  • 1.HTMLからPerlで実装したcgiを実行し、復号化させたデータを<meta>タグの中で content属性を使用してCookieにセットする方法。
  • 2.javascriptで復号化しセットする処理を記述する方法。BASE64の復号化については調査が必要です。
回答を見る
  • ベストアンサー

PerlのサブルーチンからのリターンをHTMLに取り込む方法はありますか?

現在構築しているサイトで、暗号化されたcookieをBASE64を利用して復号化し、その中から一部のデータを取り出してCookieにセットしなければなりません。 利用者にボタンを押下させたり、リンクをクリックさせたりすることなく、あるURLにアクセスしてくると自動的に上記のようなCookieの復号化とセットが実行されるようにしたいと思っています。 私が考える限り、以下のような方法が思いつくのですが、どちらが一番現実的で実装可能でしょうか。また、これらによる実装が無理な場合、他にどのような方法があるでしょうか。 1.HTMLからPerlで実装したcgiを実行し、復号化させたデータを<meta>タグの中で content="xxxx"としてCookieにセットする。ただし、HTMLからどのように呼び出せばよいのかわからず困っています。 試しに、a.cgiというPerlで復号化およびデータの切り出しを実装してみたのですが、どのように記述すればHTMLからそれが呼び出されるのかわからず困っています。また、ユーザの環境ではPerlは実行できませんのでこの方法の場合は、a.cgiはサーバで実行させたいです。 2.上記1が無理な場合、javascriptで復号化しセットする処理を記述する。ただし、この場合、どうすればBASE64で復号化できるのかわかりません。 www.tohoho-web.com などを参考にさせていただきましたが、javascriptはBASE64は扱えないのでしょうか。 3.上記1の中で記述したa.cgiを、切り出したデータを返すようにするのではなく、Cookieをセットするように改良してHTMLから呼び出す。ただし、利用者の操作なしで実行させる方法がわかりません。 長文失礼しました。お知恵を拝借させてください。

noname#227760
noname#227760

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

  • ベストアンサー
  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.1

まずは、どんな設定のサーバーなのかが問題ですね。 1.SSIでcgiが実行できる 一番簡単に実現出来ます。 <meta>タグの中で content='<!--#exec cmd="a.cgi" -->' というように呼び出す。 2.SSIは使えない >3.上記1の中で記述したa.cgiを、切り出したデータを返すようにするのではなく、Cookieをセットするように改良してHTMLから呼び出す。 ページ内にデータを入れる必要がないなら、imgタグでそのcgiを呼び出します。 で、返すデータは、透過1×1gifにします。テキストを返しても、imgタグのサイズを1×1にすれば、見た目何も表示されません。 <img src="a.cgi" height="1" width="1"> アクセスログを取る時などにこの方法がよく使われます。 >2.上記1が無理な場合、javascriptで復号化しセットする処理を記述する。ただし、この場合、どうすればBASE64で復号化できるのかわかりません。 JavaScript でBASE64を複合する方法は私も解りません。 4.SSIは使えないが、どうしても、ページ内にcookie取得データを埋め込みたい ページ全部をcgi出力にするしかないですね。 i.埋め込みたい部分をページの他の部分と区別出来るコードにしておいて、 ii.元のhtmlをテンプレートとして読み込んで、 iii.文字列置換した後、 iv.ページデータ出力

noname#227760
質問者

お礼

hrm_mmmさん お返事遅くなり申し訳ありません。 SSIが使えないので、2の方法を試してみます。 <img>タグで呼び出す方法は知りませんでした。 ありがとうございます。 とても参考になりました!

関連するQ&A

  • HTMLからPerlを呼び出すには?

    今、Perlで他のサイトのtxtファイル(中身はliタグやaタグのHTMLファイルで、そのサイトではSSIで呼び出されています)を、入手して表示させるプログラムを作っています。 これを、呼び出して、あたかも私のサイトのように見せるにはどうすればよいでしょうか? 現在はiframeを使ってそのままtxtファイルのアドレスを指定しているのですが、拡張子がtxtであるため、IEでしか見れないという不具合があります。 これを解決するために、とほほさんのwww入門 http://tohoho.wakusei.ne.jp/wwwperl2.htm#socket で紹介されているPerlを参考にしました。そのPerlのファイルをブラウザから直接URL指定すれば実行できるようにはなり、txtの中身が表示されるようになったのですが、どのようにHTMLから呼び出せばよいのかわかりません。 やはりSSIで実行するしかないのでしょうか。 javascriptの場合、<script>タグでHTMLに直接スクリプトを記述できますが、Perlでもそのようなことは可能ですか?

    • ベストアンサー
    • HTML
  • SSI で #exec 以外で Perl-CGI を実行する方法は?

    最近 CGI に興味をもち Perl を始めました。 簡単なサンプルを無料サーバーにアップロードして cgi だけを 直接実行すると問題なく実行されます。 ですが SSI の #exec を使って HTML ソースに <!--#exec cgi="/cgi-bin/sample.cgi" --> と記述してページを開くと [an error occurred while processing this directive] と表示されてエラーになりました。 無料サーバーは infoseek で CGI/SSI は使えると書かれていたので 試してみました。それでもう一度確認の為に読んで見ると『#exec』は セキュリティ強化のため利用できないことが判明しました。 http://help.www.infoseek.co.jp/isweb/20602.html#7 質問内容: (1)CGI/SSI は使えるが #exec は使えない状況でどうやって Perl-CGI を   HTML ソースに記述して実行すればよいのか? (2)CGI は cgi-bin に置きパーミッションを 755 に設定しています。   設定は infoseek さんの指示通りです。他に設定すべき点ありますか? (3)Perl-CGI の1行目ではちゃんと『#!/usr/local/bin/perl』と記述しています。   こちらも infoseek さんの指示通りです。   Perl の記述で何か気をつけるべき点はありますか?バグ以外で。 (4)HTML ソースの拡張子は shtml にしています。   SSI を使うにはサーバーが対応していれば拡張子を変えるだけで使えるのですか? 今回の質問は Perl-CGI を HTML ソースに記述して実行する?には どうすべきかをお聞きしたいです。infoseek さんの情報は次のリンクです。 http://help.www.infoseek.co.jp/isweb/20601.html またネット検索していたら次のページを発見しました。 http://cocohome.hp.infoseek.co.jp/ssi/ ここの人は私と同じ infoseek で SSI 入門を書いています。 なぜこの方は SSI の #exec が使えるのでしょうか? この辺も知りたいです。 分かる方お願いします。 教えて下さい。

    • ベストアンサー
    • CGI
  • CGI(Perl)とHTMLについて

    CGI初心者です、Perlの知識は皆無です。 質問は2つあるのですが・・・ 1、CGIのページを例えば画像を呼び出すようにHTMLで指定できるのでしょうか? 画像であれば<img src=".../AAA.gif">ですが、こんな感じでCGIのページ自体をHTMLの指定した枠に呼び出すことはできるのでしょうか。 2、CGIページのカスタマイズ 現在、CGIレスキューさんからダウンロードしたファイルをカスタマイズしています。 条件指定ができる検索データベースです。 設置と動作確認はできたのですが、思うようにレイアウトできないでいます。 Perl記述中にテーブル(HTML)を挿入すると、プルダウンメニューから選択項目が飛び出してしまうのです。 (おおざっぱに記述すると) print <<"---HTML---"; あいうえお<select name="aiueo" size=1> ---HTML--- forseach $i (@AIUEOs) { print "<option value=\$i\"$pref_selected{$i}>$i</option>\n";} print <<"---HTML---"; </select> <p> (略) ---HTML--- こんな感じです、変数の部分は変えてます。 ずっと上の方で、 @AIUEOs = ("あああ", "いいい", "ううう", "えええ", "おおお"); と、変数が定義されてるようです。 名称かきく「プルダウンメニューA」 名称あいうえお「プルダウンメニューB」 要は、「 」の部分を揃えたい(縦に整列)のですが、うまくいきません。プルダウンメニューが飛び出してしまいます。 2段目のHTML記述部分がなぜ閉じタグから始まっているのかもよくわからないです。 端折ってますので、分かりにくいと思いますが、コメントいただける方、よろしくお願いします。

    • ベストアンサー
    • CGI
  • cgi(perl)を実行のみしたい

    HTMLよりCGI(PERL)を起動し、ログファイルの読み書きを実行し、そのまま終了させることは出来ないでしょうか? CGIからデータを戻す必要は無く、ブラウザへの表示はHTMLファイルがそのまま表示される形で問題ありません。 宜しくお願いします。

  • HTML上(javascript)からCGIを実行する方法

    javascriptから外部実行ファイル(javascriptファイルではなくperlなどのCGI) を実行する方法を探しています。 下記のようにindex.htmとtest.cgiファイルを用意して、index.htm内の javascriptから外部cgiを実行させ、cgiの結果(test.cgiでは単に 『test』と表示するのみ)を表示したいと考えています。 利用増ですが、cgiやssiが使用できないサーバにindex.htmを置いて、 cgiが使用できるサーバ上のcgi結果を取得したいものです。 通常のcgiのように、1ページでcgi結果を表示するものではなく、 HTMLファイルの一部にcgi処理結果を表示させたいものです。 そもそも、SSIを使用しなければ下記のようなHTML内にcgiなどの 実行結果を表示する事は出来ないのでしょうか。 よろしくお願い致します。 ※下例のプログラムではcgi結果は表示されませんでした・・・。 ---<index.htm>---------------------------------------- <HTML> <BODY> <SCRIPT language="Javascript" src="http://xxx.xxx.xxx.xxx/test.cgi"></SCRIPT> </BODY> </HTML> ---<test.cgi>---------------------------------------- #!/usr/bin/perl print "test"

  • どうしてもCookieとCGI・perlの関係?が理解できない。

    ととろさんのところを(http://tohoho.wakusei.ne.jp/www.htm)みながら、なんとかPerl・CGIを勉強しているところです。 普通にフォームに入力されたものをログファイルにとる、などはできるようになったのですが、 どうしてもクッキーのところでつまづいてしまいます。 Cookie書き込みの例、のところに、 Set-Cookie: NAME=tanaka; Fri, 31-Dec-2030 23:59:59; とやったら、tanakaというクッキーが作成されるのでしょうか? どうしてもこの辺がわからないのです。 これを実行する場合、 #!/usr/local/bin/perl print "Content-type:text/html\n"; print "Set-Cookie: NAME=tanaka; Fri, 31-Dec-2030 23:59:59;" print "\n"; のようにやるのですか? 最終的にはフォームの入力値を取得・反映したいと考えているのですが…。 あちこちわかりやすいと言われるcgi・PERL解説サイトをみたのですが、どうしてもここだけが理解できませんでした。

    • ベストアンサー
    • CGI
  • 暗号化(perl)→復号化(php)

    暗号化キーを使用した暗号化→復号化で cgi(perl)で暗号化し、phpで復号化を行おうとしております。 AES暗号を使用したのですが、いろいろ設定を変えて 試みたのですが、うまくいきませんでした。 他に暗号化キーを使用した暗号化の方法がありましたら 教えてください。 暗号化(perl)→復号化(php)で実績のあるモジュールが あれば非常に助かります。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • perl初心者 「カウンタ」

    勉強のためにperlでカウンタを作りました。 しかし、このカウンタは単独で動作するだけでHTMLと連動しないようなものです。 配布されているようなカウンタでは、HTMLに<img src="http://~~/count.cgi?id=index">と記述することでcgiを呼び出して、HTMLと連動しているということは分かるのですが、どういった仕組みなのか分かりません。 どなたかご教授お願いします。

    • ベストアンサー
    • Perl
  • Perl(cgi)でこれはできますか?

    今まで、デスクトップ上にあるJAVAのプログラムで、 http://***.ne.jp を解析して、その中から、ある値を含む条件のURLのみを抜き出してHTMLリンク集を作っていました。 この作業を、ウェブベース(sakura.ne.jpのライトプランで利用予定。使用可能言語は多分perlのcgiのみ)で行うことはできないものかと思っております。 具体的には、 インプットボックスに、解析したいURLを入れて、検索ボタンを押すと、そのURLの文章の中から必要な文章のみを抜き出してそれと、HTMLリンク集にして返すというプログラムです。 また、perlやcgiは今まで殆ど触ったことが無い言語なので、どんなことでも、参考になりそうなことがありましたら是非是非、ご紹介ください。 宜しくお願い致します。

    • ベストアンサー
    • Perl
  • cookieを介さずにCGI/PerlとセッションIDを遣り取りする方

    cookieを介さずにCGI/PerlとセッションIDを遣り取りする方法 Adobe AIR HTML/Ajax で cookieを介さずにサーバーのCGI/PerlとセッションIDを遣り取りする方法について、何か情報ありませんでしょうか。 AIRはcookieをOSと共有するようなのですが、既定ブラウザがFirefoxの場合、共有できません。 幸い、AIRはローカルでのファイル操作が可能なので、自前でセッションIDの遣り取りと管理をさせたいと考えております。 で、以下の様にしてみましたが、nullが返ってくるだけでした。 PerlのセッションID発行はCGI::Sessionを使用しています。 [code] var cgi_url = 'http://server_name/cgi/session.pl'; var login_name = 'hoge'; var login_auth = 'fuga'; var msg = $.ajax( { type :'POST', url :cgi_url, data :'login_name=' + login_name + '&login_auth=' + login_auth }).responseText; alert(msg); [/code]