携帯サイトを作成しているのですが、
リンクのファイル名を変数にいれ次のページに渡すにはどうすればよいでしょうか?
リンクA(a.html) リンクB(b.html) リンクC(c.html)
↓$h = a 変数にaを入れます。
次のページ(http://~~~~~/$h.html)
次のページを1つ作るだけで、その前のリンクを表示させたいんです。
説明がへたですいません。
よろしくお願いします。
No.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前ですが、数年の独学でここまで来ました。勉強してください。私にできたのですからね。
こんなに説明してくださってありがとうございます。
感謝感謝です!!
なんとかできるようになりました!
もっとCGIを勉強していろいろなことができるようになりたいです。
みなさんありがとうございました。
No.3
- 回答日時:
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'});
を記述するのは別々で作った方が良いのでしょうか?
No.2
- 回答日時:
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のページにいくつもリンクがあった場合、
どれをクリックされたか判断して、そのクリックされたリンクのファイル名を変数に入れたいのですが、どうしたらよいでしょ??
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミングの問題です。至急教えてください。 /***から***/の部分をプログラミングにしてほし 1 2022/10/13 11:48
- JavaScript スマホ上で、左右スワイプで次のページに移動させたいです 2 2022/11/11 17:04
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- PDF こんなPDF作れますか? 6 2022/05/13 11:14
- PHP PHP MySql ページング 2 2022/09/20 06:38
- HTML・CSS リンクバナーのHTMLタグ。画像を変えたり、設置位置を変えるとバナー貼付け側はどう見える? 2 2023/02/01 12:01
- Chrome(クローム) タスクバーにローカルのhtmlのリンクをchromeで留めてダブルクリックして使うことできますか? 1 2023/08/26 18:13
- SEO googleサーチコンソールで、重複URLが多数発生、その修正方法について 2 2023/06/23 16:15
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- Mac OS Macで今あるファイルの連番(ページ番号)に足し算をしてリネームしたい 1 2022/10/12 17:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ラズパイでのCGIで、pythonソー...
-
CGIの記述について教えてくださ...
-
CGIの設置が分かりません・・・
-
サーバーのエラーでおしえてく...
-
フォームを再送信しますか?
-
エクセルで集計したい。
-
CGIでテキストボックスの内容に...
-
生成AI画像について
-
3DCG
-
ホームページにメールフォーム...
-
cgi アクセス制限 エラー
-
ホームページにCGIを設置したの...
-
ホームページにCGIを設置したの...
-
ホームページの事でおしえてく...
-
さくらサーバーにcgiフォームを...
-
ホームページでCGIのフォームを...
-
一番簡単なCGI,掲示板の設置教...
-
(フリーの)ツリー掲示版CGI、...
-
ChatGPTとは?
-
perlで書いたcgiでsqliteの使い...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで集計したい。
-
フォームを再送信しますか?
-
apacheでPerl CGIが作動せず、5...
-
ホームページでCGIのフォームを...
-
生成AI画像について
-
/bin/awk '{print $5}'ってどう...
-
入力フォーム(電話番号)
-
(フリーの)ツリー掲示版CGI、...
-
古ーくからフリーのtree.cgi掲...
-
VBAで条件から範囲を指定して色...
-
ホームページにメールフォーム...
-
一番簡単なCGI,掲示板の設置教...
-
CGIって何ですか?簡潔に教えて...
-
サーバーのエラーでおしえてく...
-
サイト訪問者の情報を取得したい
-
htmlからパラメータで、cgiに渡...
-
CGIで出力するhtmlの<!DOCTYPE ...
-
cgiからsendmailを送信で文字化け
-
POSTメソッドの最大容量について
-
ホームページにCGIを設置したの...
おすすめ情報