カレッヂ |
質問者 かずま
投稿日 6/23(土) 16:59:34
参照制限(v1.00 /CGI)の利用についてですが、 私がやりたい事とは、次のことです。 例,個人のホームページで「自己紹介」のページを作るとします。 そこで、外部から私の「自己紹介」のページへ直リンクされては 嫌なので、トップページ(総合メニューのようなページ)からの アクセスのみ「自己紹介」のページへアクセスを許可する場合。 通常は、トップページからリンク(リンク許可ファイルから) して「自己紹介」のページに進んだ場合は ******************************************************* #設定した条件に合えば__END__より下をそのままHTMLとして表示する __END__ <html> <head> <title></title> <body bgcolor="#FFFFFF" text="#000000"> (中略) </body> </html> ※profile.cgiというファイル名の場合 ******************************************************* CGIで設定した(上の部分)ものを表示させる事ができますが、 これでは、「自己紹介」のページを日々更新するとなった時、 CGIファイルの場合はホームページ制作ソフトで開いて編集(HTMLファイル) する事ができません。 ですから、CGIの上記部分を以下のようにしたいと思います。 ******************************************************* #設定した条件に合えば__END__より下をそのままHTMLとして表示する __END__ <html> <head> <title></title> <body bgcolor="#FFFFFF" text="#000000"> <!--#include file="./profile.html"--> (または) <!--#include virtual="/~xxxxx/profile.html"--> </body> </html> ※profile.cgiというファイル名の場合 ******************************************************* このように、トップページから、「自己紹介」のページに アクセスした場合、上記の方法でSSIを使って、HTMLファイルを 表示させると、HTMLファイルをホームページ制作ソフトで、 日々更新ができ、わざわざCGIファイルを開いて、 こまかく更新する手間がはぶけます。 しかし、私がこのやり方で試して見ましたが、 SSIの昨日はCGIを使っているため、正常に機能しませんでした。 掲示板等のCGI-Sprictの場合は、投稿/観覧でCGI機能をつかいつつ、 投稿の際のリモートホストの表示にはSSI機能を使い、 記録します。これとおなじようなやり方で、 参照制限はCGI側で機能を働かせ、正常にアクセスされた場合は、 SSIを使い、別ファイルを表示する事はできませんでしょうか。 それと、もう一つ。 ******************************************************* #(参考)特定のページからのクリックアクセス以外はすべて拒否するには、そのページのURLを #そのまま記述します. #例:http://www.home.page/~user/where/sample.html #---------------------------------------------------------------------------------------- $ref_url = 'http://your.home.page.url/'; ******************************************************* この部分で、リンク元アドレス(許可するアドレス)についてですが、 許可するアドレスを2つにする場合はどうすればよろしいでしょうか。 ようするに、 http://your.home.page.url1/index.html http://your.home.page.url2/index.html このアドレス(2つ。ファイル名まで指定)の場合には 以下の方法でよろしいのでしようか。 $ref_url = 'http://your.home.page.url1/index.html','http://your.home.page.url2/index.html'; 面倒なことで申し訳ありませんが、 ご教授よろしくお願いします。 m(_ _)m |
回答者 呑兵衛
[削除]
投稿日 6/25(月) 22:26:07
呑兵衛といいます。 問題は制限ファイルを profile.html にしたとたん制限し難くなることです。 リンクを張られても .cgi 下に展開するからこそ制限できるのでは。 逆発想で、許可していないリンク元からの接続要求にもエラーではなく、 最初に読んでもらいたいページをアンカーで埋め込んでHTMLで表示し、 正常な接続要求には、profile.htmlをアンカーで埋め込んだHTMLを表示する。 profile.htmlの名前を更新の都度変え、cgi に埋め込んだファイル名も変更し html、cgi 共に更新する。 くらいの対応でしょうか。ssi の必要性はありません。 複数設定は × $ref_url = 'http://your.home.page.url1/index.html','http://your.home.page.url2/index.html'; ○ @ref_url = ('http://your.home.page.url1/index.html','http://your.home.page.url2/index.html'); で、その後 @ref_url の中身と $ENV{'HTTP_REFERER'} を評価するスクリプトで判断します。 更新する profile.html には 最初に読んで欲しいページへのリンクだけを残しておくと File Not Found を防げます。 要はどのファイルにリンクが張られた場合、どのように制限するかを決めることです。 |
回答者 呑兵衛
[削除]
投稿日 6/26(火) 18:58:32
呑兵衛です。 私に直メールを下さいましたが、こういった場所での質疑応答なので ここに回答させて頂きます。 >> 許可していないリンク元からの接続要求にもエラーではなく、 >> 最初に読んでもらいたいページをアンカーで埋め込んでHTMLで表示し、 sub error { 以下のHTMLに たとえば annai.html からたどって欲しいのなら <a href="../annai.html">入口</a>などと表示させます。 >> 正常な接続要求には、profile.htmlをアンカーで埋め込んだHTMLを表示する。 __END__ 以下に profile.html を <a href="../profile.html">自己紹介</a>などと表示させます。 >> profile.htmlの名前を更新の都度変え、cgi に埋め込んだファイル名も変更し >> html、cgi 共に更新する。 更新すれば、 profile.html を profile_1.html などと変更し, annnai.html でアンカー表示する <a href="./profile.html"> を profile_1.htmlに、 cgi の __END__ で示すものも上と同じように変更する。 以上ですが、 cgi に書かれるprofile を参照制限が事実上効かない .html で表示したければ profile.html の中身とファイル名を変更する profile.cgi はリンク先 .html 名を変更する annai.html もリンク先 .html名を変更する の3つの作業が、あなたの要求を満足させる最も近いものになります。 |
返信(回答)する
Web裏技 |