- 関連ページ
-
- ページ案内
-
ハイパーリンクをフォームで実現するスクリプト。
- 平成16年 1月24日 開設
- 平成16年 3月20日 修正
本スクリプトについて。
ハイパーリンクに依るメニューをフォームで実現するCGIに使えるスクリプトです。
サイト内部のリソースのみを対象としておりますが、改造すれば外部サイトへのリンクにも使えます。
- 一応PC専用としておりますが、改造すれば携帯電話向けにも使えるでしょう。但し、しらぎくモバイルコンヴァータとの互換性はありません。
- 当スクリプトの改造・再配布は自由とします。制作者は当スクリプトに対する著作権を主張しません。
- スクリプトの改造・ご利用は自己責任でお願いします。改造の有無を問わず、当スクリプトの運用の結果に関して制作者は一切関知致しません。
原理。
- 標準入力から送られてきたサブディレクトリ名とファイル名を、予め設定してあるベースURLに繋げてURLを作ります。
-
そのURLをHTTP応答ヘッダのLocationフィールドに入れてリダイレクトします。
- 但し、ネットスケープ 4.x以前ではこの方法だとリダイレクトされたページが文字化けを来たすので、<meta>要素によるリダイレクトページを出力します。
- 加えて、ネットスケープ 4.x以前でのみ出力されるリダイレクトページでは、JAVAスクリプトの
location.replace()
メソッドを用いて、表示URLを切替えております。これにより、JAVAスクリプトを受容れる環境であれば、リダイレクトページが経歴から消えるため、他のブラウザ同様、ブラウザの[戻る]ボタンで元のページに戻れるようになります。
使い方。
スクリプトの設置。
- 当該スクリプトを取得します。
- 続いて、一行目のパスをサーヴァに合わせて修正します。
-
その後の「$url='http:// ... /';
」に、利用するサイトの最上位ディレクトリのURLを記述します。
- 必ず「
http://
」で始めて「/
」で終わるようにして下さい。
- このURLより上位のディレクトリへはアクセスできませんので注意して下さい。
- サーヴァで指定された適切なディレクトリ内の適切なファイル名にしてアスキィモード(テキストモード)で設置します。
- パーミッションは「700」推奨。動かない場合に限り「701」「705」「711」「715」「751」「755」の順で試して下さい。
- スクリプトは一応シフトJISで書いていますが、注釈以外には日本語文字は入っていませんので、日本語文字部分を削除すれば、文字コードを意識する必要はありません。
ウェブでの準備。
- ウェブでは
<form action="
設置CGIのURL" method="post">
要素でフォームを作ります。
- 予め指定したディレクトリ基準のサブディレクトリを、
<input type="hidden" name="d">
要素のvalue属性値とします。
- メニューは<select name="a">要素の内容とします。
-
選択肢となる<option>要素にはvalue属性で移動先のファイル名を与えます。
-
各選択肢が示すURLは
- 予めスクリプトに設定したURL
/
<input type="hidden" name="d">要素で与えたサブディレクトリ/
選択肢のvalue属性値で示したファイル名
となります。
- 各選択肢のディレクトリ位置が異なる場合は、
<input type="hidden" name="d">
は最上位のサブディレクトリを指定して、各選択肢で「サブディレクトリ名/
…/
ファイル名」となるようにします。
- 拡張子は「.html」か「.htm」とします。「.html」か「.htm」で終わっていない場合はURLの末尾に「.html」が勝手に附与されます。
- 安全の為、「../」を使うことはできないようにしました。これらが入った場合、全て無視されます。
利用例。
XHTMLでの記述例です。
<form action="
設置CGIのURL" method="post">
<div>
<input type="hidden" name="d" value="
サブディレクトリ" />
<select name="a">
<option value="index.html">トップページ</option>
…
</select>
</div>
</form>