プロが教える店舗&オフィスのセキュリティ対策術

携帯サイトを作成しているのですが、
リンクのファイル名を変数にいれ次のページに渡すにはどうすればよいでしょうか?

リンクA(a.html) リンクB(b.html) リンクC(c.html)
↓$h = a 変数にaを入れます。
次のページ(http://~~~~~/$h.html)

次のページを1つ作るだけで、その前のリンクを表示させたいんです。

説明がへたですいません。


よろしくお願いします。

A 回答 (4件)

どのように作ろうと自分がしやすいように。


私は同じような記述を繰り返すのは嫌いなのでひとつのファイルで行います。あくまでヒントですが。
/cgi-binに[HTML]というファイルを起きます。これは拡張子はないですがCGIです。
/cgi-bin/HTML/index.html
をクライアントから要求されると、サーバーは、そのようなファイルはないので、index.htmlを切り捨てて環境変数{PATH_INFO}に格納し、/cgi-bin/HTMLというファイルを探します。それがファイルであり、かつ実行可能なら、HTMLというCGIを実行します。この時点で/index.htmlが環境変数にあります。
 CGIプログラムの中で、環境変数{PATH_INFO}からindex.htmlを取り出してきて、HTMLファイルを作成します。ソースは、CGI末尾の__END__以降に書いておいても良い(<DATA>)し、別のファイルでも良い。
 クライアントがその出力されたHTML内のリンク使ってサーバーに要求する、たとえば、/cgi-bin/HTML/content/page1.html?a;123を要求された場合も同様に、環境変数{PATH_INFO}には、/content/page1.htmlが、環境変数{'QUERY_STRING'})にはa;123が入っているわけですからねCGIはこれらの情報を元に新たにHTMLを作成します。
 これを応用すると、HTML/index.htmlでフレームセットを書き出して、フレームはHTML/content1.html~content10.html,/HTML/menue.htmlで書き出すとか、CSSというCGIを呼び出すと、リンク元のHTMLのソース内の<head>要素内のスタイルシート記述を参照してCSS/default.cssを書き出したりと様々に利用できます。もちろんサイト全体をたった一つのCGIで作成することも可能です。というか、今の大企業のサイトは基本的にこの方法が多いでしょう。ASP( http://e-words.jp/w/ASP-2.html )のひとつの手法です。

 とても高度な内容ですみません。CGIを使うと何でもできるのです。極端な話、メールに貼り付けてある/hoge/images/123456789/test.jpgというファイルを見ているつもりが、それはhogeというCGIの出力したファイルで、そのCGIは特定の相手--あなた--のアドレスを捕捉できるのです。だからメールの画像がリモートの場合は表示させてはならないのです。
 私は60前ですが、数年の独学でここまで来ました。勉強してください。私にできたのですからね。
    • good
    • 0
この回答へのお礼

こんなに説明してくださってありがとうございます。
感謝感謝です!!

なんとかできるようになりました!
もっとCGIを勉強していろいろなことができるようになりたいです。


みなさんありがとうございました。

お礼日時:2008/10/06 20:08

QUERY_STRINGの場合は、通常のFORMデータと同じように解析するのですが、フォームデータではないので、変数名=値という形で渡す必要はありません。


 適当なファイル名に使わない区切り記号、たとえば;で区切ればよいです。
<a href="./b.html?125;a">とかでよい。(125は125.htmlを示すとか。)
 そうすると
@Q_DATA = split(/;/,$ENV{'QUERY_STRING'});
 で、順番に配列(@Q_DATA)に入りますからね。

この回答への補足

回答ありがとうございます。

そのリンクのページと、
@Q_DATA = split(/;/,$ENV{'QUERY_STRING'});
を記述するのは別々で作った方が良いのでしょうか?

補足日時:2008/10/06 18:00
    • good
    • 0

form以外で変数を渡すには


PATH_INFO か QUERY_STRING で渡します。
次のページを要求されるとサーバーは、環境変数(PATH_INFO/QUERY_STRING)に渡します。
 a.htmlに記述するbページへのリンクにおいて、bページが元来たページを知りたい場合、通常は環境変数HTTP REFERERを参照しますが、HTTP REFERERを提出してくれないブラウザもあります。
 そこで、a.htmlないのリンクに手を加えるとこの情報(HTTP REFERER)を渡すことができます。
具体的にはa.htmlのリンクを
<a href="./b.html/a">bページへ</a> ・・・PATH_INFO
<a href="./b.html?a">bページへ</a> ・・・QUERY_STRING
として、bページを表示するプログラムで処理します。
 サーバーは、/***/***/b.html/a というファイルを探し、それがないと、/aを切り捨てて、b.htmlを探します。(これはファイルが見つかるまで続く)このとき/aは環境変数PATH_INFOに入ります。
 QUERY_STRINGは通常のCGIと同じ
★この方法は、b.htmlなどがCGIの必要があります。.htaccessで:.htmlはCGIだと指定して、HTMLはCGIが作成します。UNIXの場合拡張子はあってないようなもの、任意に指定できますからね。
★同様な方法で、b.htmlに、リンク元によってまったく別の内容を表示させることもできます。

この回答への補足

ご回答ありがとうございます。

QUERY_STRINGを使いたいと思います!!!
もうひとつ質問させてください><

a.htmlのページにいくつもリンクがあった場合、
どれをクリックされたか判断して、そのクリックされたリンクのファイル名を変数に入れたいのですが、どうしたらよいでしょ??

補足日時:2008/10/06 01:57
    • good
    • 0

# 拡張子がhtmlなのが気になるけど



URLの後ろについてくる?hoge=hugaみたいなパラメータで渡せばいいのではないでしょうか。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
参考にさせていただきます^^

お礼日時:2008/10/06 02:02

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