imgタグのクエリストリングを取得する方法

このQ&Aのポイント
  • IIS + クラシック asp + ActivePerl 環境下で QR コードを取得するプログラムを作っています。
  • 呼び出し元の asp 内に、<img src = "./cgi-bin/qr_test.cgi?q=hogehoge">と書きました。
  • この q=hogehoge を呼び出し先で取得する方法を教えてください。
回答を見る
  • ベストアンサー

imgタグのクエリストリングを取得する方法

IIS + クラシック asp + ActivePerl 環境下で QR コードを取得するプログラムを作っています。 呼び出し元の asp 内に、 <img src = "./cgi-bin/qr_test.cgi?q=hogehoge"> と書きました。 この q=hogehoge を呼び出し先で取得する方法を教えてください。 ===== 呼び出し元 (qr_test.asp) <html> <head></head> <body> <img src = "./cgi-bin/qr_test.cgi?q=hogehoge"> </body> </html> ===== 呼び出し先 (qr_test.cgi) use strict; use warnings; use GD::Barcode; my $url = $in{'q'}; # ここでエラーが出ます。コメントアウトすると正常に動きます。 my $qrimg = GD::Barcode->new('QRcode',$url,{'Ecc'=>'M',Version=>'7','ModuleSize'=>'4'}); binmode(STDOUT); print "Content-Type: image/jpeg\n\n"; print $qrimg->plot->jpeg; exit(0); ===== バージョンは IIS 7.5 Perl 5.14.2 (64bit) です。 どなたかご教授お願いします。

  • ab-bz
  • お礼率88% (8/9)
  • Perl
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.1

> my $url = $in{'q'}; # ここでエラーが出ます。 クエリストリングは自動的に $in に格納されるわけではないから。 キーワード「query_string perl get」でGoogle検索してみてはいかがでしょう。

ab-bz
質問者

お礼

$ENV{'QUERY_STRING'}で取得できました。 ありがとうございます。

関連するQ&A

  • アクセスログCGIをimgタグで埋込むとブラウザに×表示されてしまう

    アクセスログのCGIスクリプトを実行させるための埋め込みタグとして以下のように <img src="http://hogehoge.com/accesslog.cgi?url=http://hogehoge.com/index.html"> imgタグで指定するように指示されているのですが、imgタグで指定するとブラウザで表示したときに×が表示(画像イメージが存在しないときの状態)されてしまいます。 これを回避させる、良い方法はありますでしょうか?

  • <img src=

    アクセスカウンタなどで<img src="cgi-bin/●●●.cgi......">で来客者数を表示できるCGIがありますが、あのように、例えば<img src="cgi-bin/●●●.cgi" width="xx" height="yy">で表示できるCGIとタグを入れるとそのCGIに買い込んで書き込んであるURLのページを500×400の範囲内に表示できるCGIはないでしょうか? <img src="cgi-bin/●●●.cgi?url=http://www.nantoka.or.jp/tobisaki.html">といった使い方のものでもかまいません。 感覚としては、1つのHTMLページにiframeでインラインフレームを入れるのと同じ考え方なのですが、iframeタグが使えないところに、ある別ページを挿入したいのです。 100ページ以上ある商品ページに同じ内容のテーブルを入れ、テーブルの内容を更新するたびに100ページ全部書き換えるのが大変なので、何とかしたいのです。 インラインで表示できれば、1つのHTML書類を書き換えれば100ページ全部が更新されることになりますから。 その商品ページはショッピングモール内のフォームで書き込むものなので、勝手にフレームで切ったりスタイルシートを使ったりできないので、IMGタグで対応するしかありません。 お心当たりのある方はいらっしゃらないでしょうか?

    • ベストアンサー
    • CGI
  • SSIの表示

    perl/cgiの勉強中でssiでhtmlへの埋め込みを行いたいのですが、何故か出力が2度されてしまいます。 以下実行プログラムと結果です。 [test.cgi] #!/usr/bin/perl -w use strict; use warnings; print "Content-type:text/html\n\n"; print "hoge"; exit; [test.shtml] <html> <head></head> <body> <!--#include virtual="/cgi-bin/test.cgi"--> </body> </html> [出力] hogehoge …となってしまいます。どなたかご教示願えませんでしょうか? よろしくお願いいたします。

    • 締切済み
    • CGI
  • imgタグについて

    imgタグについて http://okwave.jp/qa/q5970749.html この件で質問させていただいてましたが、気になる事がありましたのでアドバイスください。 最初のタグーーーーーーーー img{border: 0; vertical-align:bottom;} ーーーーーーーーーーーーー <img src="/img/space.gif" width="100%" height="10px"/> IE8でimgタグのvertical-align:top;が反応して1px×1pxの透明の画像が縦に10px以上伸びてしまっていました。 ↓そこで、このように分ければいいとアドバイスいただきましたが、 .img1{border: 0;} .img2{border: 0; vertical-align:bottom;} imgタグは他のページでも使用しているため img{border: 0; vertical-align:bottom;}は変更出来ませんでした。 そこで、img2{border : 0;} とcssに書き込み <img2 src="http://www.itumonavi.jp/img/space.gif" width="100%" height="10px" /> にするとバグは解消されました。 ですが、html的に<img2~ というタグは見た事無いのですが、これは使っておいても問題ないのでしょうか? もし他に方法がございましたら教えてください。 【css】-------------------------- img { border: 0; vertical-align:top; } .img1 { border: 0; } 【html】-------------------------- <table width="635" height="31" border="0" cellspacing="0" cellpadding="0" bgcolor="#999999"> <tr> <td width="635">タイトル</td> </tr> </table> <table width="635" border="0" cellspacing="0" cellpadding="0"> <tr> <td colspan="3"><img src="/img/space.gif" width="100%" height="10px" class="img1"/><!-- スペース --></td> </tr> <tr> <td width="170" rowspan="2"><img src="img/sample.gif" width="170" height="170" alt="test" /></td> <td width="20" rowspan="2"><img src="img/space.gif" width="20" height="170" class="img1" /><!-- スペース --></td> <td width="445" style="vertical-align:text-top"><img src="img/space.gif" width="100%" height="5" class="img1" /><!-- スペース -->コピー<div class="guide-line"></div><!-- ライン --> </td> </tr> </table>

    • ベストアンサー
    • HTML
  • リファラを取得するためのCGI

    アクセスログを取るためのcgiをPerlで作っています。 例えば、 hogehoge.html というページのアクセスログを取るためにlog.cgiというスクリプトを用意します。 hogehoge.htmlからは、IMGタグを使用して、<IMG src="log.cgi">のようにcgiを呼び出しています。 log.cgiからは、ダミーのgifファイルを返します。 ここで、log.cgiでは訪問者のリファラを取得して記録するようにしていますが、この仕組みだとhogehoge.htmlがリファラとして記録されてしまいます。(hogehoge.htmlが呼び出したのだから、当然ですね) hogehoge.htmlへアクセスしたブラウザが持ってたリファラを取得するには、どのようにすればよいでしょうか? 今回はIMGタグでcgiを呼び出していますが、特に手段は選びません。 ちなみに、使用しているサーバーではSSIは使えません。

    • ベストアンサー
    • CGI
  • htmlからテキストを返すperlを実行する方法

    アクセスカウンターの数字画像を出力するperlのcgiを、<img>タグで、 <img src="./counter.cgi"> と、呼び出す方法があると思いますが、これと同じように、画像ではなくテキストを出力するperlのcgiをhtml中に呼び出して、ブラウザに表示する方法はないでしょうか? 以下のような感じかと漠然と思ったのですが、やはり上手くいくはずはありませんでした。 ■cgiプログラム(test.cgi) #!/usr/bin/perl print "Content-type: text/plain\n\n"; print "TEST TEXT"; exit 0; ■htmlファイル <html><head></head> <body> <br> <hr> <object data="./test.cgi" type="text/plain"></object> <hr> </body> </html> perlもhtmlも独学で学んだ基礎レベルだと自分で思っています。 どなたか突破口となるヒントをお願いします。

    • ベストアンサー
    • Perl
  • <img>タグの alt= の値をキャプションに

    初心者を抜け出そうとしている者です。 画像の下にキャプションを付けたいのですが、 alt= の値を利用しようと思っています。 下記のようなスクリプトで実現できる方法はあるのでしょうか? <html> <head> <script type="text/javascript"> <!--   window.onload = function() {     var list = document.getElementsByTagName('img');          for (var i=0; i < list.length; i++) {       /* ココで、それぞれの<img> の alt=の値を取り出し、         それぞれの<img>の直後に、         '<br><span> alt の値 </span>' を挿入したい        */     }   } //--> </script> </head> <body> <h1>テスト IMGタグの後に文字列出力</h1> <img src="../images/logo1.gif" alt="Logo1" /> <img src="../images/logo2.gif" alt="Logo2" /> </body> </html> ※ 上記インデントは全角スペースで書いております。 上のような方法以外でもかまいませんので、 スクリプト例を書いていただけると嬉しいです。 よろしくお願いします。

  • 画像ファイルが崩れる

    Perlで、CGIを作成しています。 GIF画像をCGI経由で表示させようと思っているのですが、なぜか、画像が崩れてしまいます。GIFだけではなく、Jpegでも同じです。しかし、HTMLファイルの <img>タグでそのまま表示させようとすると、きちんと表示します。 どのようにすれば、崩れを抑えられますか? CGIソース---------------------- #!/usr/local/bin/perl $imgsrc="number/0.gif"; print "Content-type:image/gif\n\n"; open(IMG,$imgsrc); binmode(IMG); print <IMG>; close(IMG); -----------------------------EOF HTML---------------------------- <html> <head> </head> <body> <img src="cgi/image.cgi" width="28" hegiht="31"> </body> </html> ------------------------------EOF gif画像は、 http://www.akikobrand.com/icon/img/10/6/0.gif を使わせていただきました。(個人的な使用です)

    • ベストアンサー
    • CGI
  • htmlで画像が表示されない

    CGIを勉強し始めた者です。 手始めにCGIを使わずに画像表示をさせたところ早速つまづきました。 アドバイスお願いします。 vine linux 6.3 に apache2.4をソースからインストールしました。 /usr/local/apache2/htdocs に以下の cgi-test.html を置きました。 <html> <head> <meta http-equiv="Content-Type:" content="text/html; charset=UTF-8"> <title>CGI TEST</title> </head> <body> <h3>CGI TEST</h3> <img src="../cgi-bin/a0.gif">&nbsp;<img src="./a1.gif"> </body> </html> パーミッションは 755 root root cgi-test.html /usr/local/apache2/cgi-bin のパーミッションも 755 root root です。 ここに 数字0~9のgif画像を置いています。パーミッションは 644 root root 表示されないので/usr/local/apache2/htdocsにa0.gif, a1.gif を置いてみました。 パーミッションは 同じく 644 root root です。 数字0は表示されませんが、1は表示されます。 なぜ0が表示されないのかお教えください。

    • 締切済み
    • CGI
  • HTMLからimgのsrcのみを正規表現で抽出する

    Webサイトから画像だけをダウンロードするツールをJavaの勉強がてら作成しており、HTML内に含まれた全てのimgタグのsrc部分のみを抽出したいと考えています。 現在、正規表現を使ってHTMLからimgタグのsrcを抽出し、srcの一覧を取得するようなメソッドを作成していますが、私の実力が及ばないばかりに上手く出来ずに困っております。 以下のようなHTMLが有った場合の例を挙げます。 <html> <body> <img src="hoge.jpeg"> <img src="./hoge.jpeg"> <img src="./fuga/hoge.jpeg"> <img src="../fuga/hoge.jpeg"> <img src="http://fuga/hoge.jpeg"> </body> </html> 上記のHTMLがString型に格納されてますので、 作成した抽出用メソッドの引数に渡すと以下のようなString[]型の文字列を返す想定をしています。 [0]=hoge.jpeg [1]=./hoge.jpeg [2]=./fuga/hoge.jpeg [3]=../fuga/hoge.jpeg [4]=http://fuga/hoge.jpeg しかしながら現在、以下のような結果となり、最後の1件しか取得できていない状況です。 [0]=http://fuga/hoge.jpeg 恐らく正規表現が正しくないせいだとは思いますが、どのようにすれば取得できるのか分からず困っています。 もしこの問題についての解決策をご存じの方がおりましたら、ご教示いただけましたら幸いです。 よろしくお願いします 以下、作成中のテストソースです。 //---------------------------------------------------- import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String[] args) { String testHtml = "<html><body><img src=\"hoge.jpeg\"><img src=\"./hoge.jpeg\"><img src=\"./fuga/hoge.jpeg\"><img src=\"../fuga/hoge.jpeg\"><img src=\"http://fuga/hoge.jpeg\"></body></html>"; String[] res = extractImgSrc(testHtml); // 結果表示 for (int i = 0; i < res.length; i++) { System.out.println("res[" + i + "]=" + res[i]); } } // imgタグのsrcからurlを抽出 public static String[] extractImgSrc(String html) { List<String> result = new ArrayList<String>(); Pattern p = Pattern.compile("<\\s*img.*src\\s*=\\s*([\\\"'])?([^ \\\"']*)[^>]*>"); Matcher m = p.matcher(html); while (m.find()) { result.add(m.group(2)); } return result.toArray(new String[result.size()]); } }

    • ベストアンサー
    • Java

専門家に質問してみよう