Topページを通らないと他のページに行けないようにするには?

[上に] [前に] [次に]
とん 2000/03/21(火) 14:11:43
パスワードなどのアクセス制限をかける必要はないのですが、
必ずTopページをたどって他のページに行って欲しい場合に使えるCGIを探しています。
(BookMarkしても、直接そのページには行けない)
その際、できれば訪問者にCGIのあるURLを知られないというCGIが希望です。
以前、荒らしにあったときにそういうCGIを見つけたのですが、
ちょっと時間が経ってしまっている間に見当たらなくなってしまいました。
それは、操作はそのCGIの設定とBBSやChatのcgiのあるディレクトリをRenameするだけという
程度のとてもシンプルなものでした。
同じ物でなくてもかまわないです。
同様の機能を持ったCGIをご存知の方がいらしたら教えてください。
↓に同様のものが有ったのですが、CGIの内容はさっぱり??
でした。
設置するだけで同様の事ができるものないでしょうか?

にゃあ 2000/03/22(水) 05:57:31
JSでよければ…

TOPページには
<Script SRC="checkin.js"></Script>
を、

直接来られたくないページには
<Script SRC="check.js"></Script>
を貼ってください。
(もしかすると、language="JavaScript"って書くべきかな?)
check.js の /* TOPページ */ と書いた部分のURLを変更してください。

当然、JSを使用しない設定にしていれば無意味です(^^;
---------------- check.html --------------------
<HTML>
<HEAD><TITLE>チェック</TITLE></HEAD>
<Script SRC="check.js"></Script>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000ee" VLINK="#000099" ALINK="#FF0000">
</BODY>
</HTML>
---------------- check.js --------------------
check = getCookie("COME");
if (check != "YES") {
document.location="top.html"; /* TOPページ */
} else {
clearCookie("COME");
}

function getCookie(key, tmp1, tmp2, xx1, xx2, xx3) {
    tmp1 = " " + document.cookie + ";";
    xx1 = xx2 = 0;
    len = tmp1.length;
    while (xx1 < len) {
xx2 = tmp1.indexOf(";", xx1);
tmp2 = tmp1.substring(xx1 + 1, xx2);
xx3 = tmp2.indexOf("=");
if (tmp2.substring(0, xx3) == key) {
    return(unescape(tmp2.substring(xx3 + 1, xx2 - xx1 - 1)));
}
xx1 = xx2 + 1;
    }
    return("");
}
function clearCookie(key) {
    document.cookie = key + "=" + "xx; expires=1-Jan-1997 00:00:00;";
}
---------------- top.html --------------------
<HTML><HEAD></HEAD></HEAD>
<BODY>
<Script Language="JavaScript" SRC="checkin.js"></Script>
<A Href="check.html">チェック</A>
---------------- checkin.js --------------------
setCookie("COME", "YES");

function setCookie(key, val, tmp) {
    tmp = key + "=" + escape(val) + "; ";
    // tmp += "path=" + location.pathname + "; ";
    tmp += "expires=Fri, 31-Dec-2030 23:59:59; ";
    document.cookie = tmp;
}

とん 2000/03/22(水) 09:27:57
これはCGIに使えますか?
無知ですみませんm(__)m
>にゃあさん

通りすがり 2000/03/22(水) 16:30:03
無知を免罪符にするな。
だから荒らしとか喰らうんだよ

とん 2000/03/22(水) 17:03:58
ここは恐いHPですね。
入門とあったので、寄ってみたのですが、
場違いだったようです。すみませんでした。
にゃあさん、ご迷惑をおかけしていたらすみませんでした。

通りすがり 2000/03/22(水) 19:03:47
つうか、CGIスクリプトで <head> 〜 </head> をprintしてるとこに
<Script SRC="check.js"></Script>
って書くだけやろ?
check.jsはにゃあ氏のやつをそのままファイルにするだけやし。

loo 2000/03/22(水) 21:06:22
お題に関係なくて恐縮ですが。
通りすがりサン、あなたは色々と知識があるから
CGIスクリプト、JavaScriptの外部ファイルまで
分かるわけで、それをヒトが当然知っているものとして
対応するのは間違いだと思います。
知らない、分からないからラウンジで質問をされる
のですから、ヒトの知識不足が気に入らなくても
質問者を責めてはいけないでしょう?

にゃあ 2000/03/23(木) 07:11:33
ここはやっぱり、入門です〜

<詳しい説明>
JSとはJavaScriptで、HTMLに埋めこむプログラムです。
このプログラムでは、クッキー(ブラウザの記憶できる部分)を
利用して

・Aというページにきたら、「COME」というクッキーに「YES」を書きこむ。
・Bというページにきたら、「COME」というクッキーに何が書いてあるかを見る。「YES」でないのなら、Aというページへ移動する。「YES」が書いてあれば、「COME」というクッキーから「YES」を消す。

という動作をしています。

使用方法は、
---------------- check.js --------------------


という部分を、check.jsというファイル名で保存してください。
checkin.jsという部分もcheckin.jsというファイル名で保存してください。

CGIでも使えます、が問題があります。
一度ページに行くと必ず元のTOPに戻る必要があります。
-----------------------------------------------------
 通りすがりさんの意見も厳しいですが、looさんの発言
も怖い者があります。暑い論争(フレイム)になりかねない
ので、なるべく雰囲気のいい発言を心がけましょう(まる)

とん 2000/03/24(金) 11:38:48
色々お騒がせしてすみません。
そしてご丁寧な解説有り難うございます。
HTMLに関してはできました。有り難うございました。
それで、CGIに関してなのですが、
直接来られたくないCGIページには
<Script SRC="check.js"></Script>
とそのままHTMLと同様に記述してもだめですよね?多分…
どの変に、どう記述すれば良いでしょうか?
それとも、このままで良いのですか?
CGIはPerlで記述されているようです。

cobalt 2000/03/25(土) 02:02:48
>直接来られたくないCGIページには
><Script SRC="check.js"></Script>
>とそのままHTMLと同様に記述してもだめですよね?多分…
>どの変に、どう記述すれば良いでしょうか?
perlでしたら、どこかに
print "<HEAD>\n";
と言うような行があると思いますので、その次の行に
print '<Script SRC="check.js"></Script>\n';
と入れればいいと思いますが。

ここで、「と言うような」としたのは、printの後ろに来る"と"に挟まれた文字が
作り手によって微妙に変わるためです。
とりあえず、printという文字の後ろに<HEAD>と書いてある行を探して下さい。

とん 2000/03/27(月) 09:20:34
cobalt さん、ご丁寧に有り難うございます。
さっそく探して、チャレンジしてみます。

とん 2000/03/29(水) 09:15:42
お世話になっております。
CGIに組み込めるようになったのですが、
TOPページからも入れなくなってしまいます。
何がいけないのでしょう?

フシギダネ 2000/03/29(水) 09:42:38
Cookieでもいいですが、
cgiで環境変数、HTTP_REFERERを使って

if( ENV{'HTTP_REFERER'} ne トップページのURL ) {
  print "Location: トップページのURL\n\n";
  exit;
}
                     ・
                     ・
                     ・
         通常の処理

とすればいいのでは?

にゃあ 2000/03/30(木) 05:53:14
トップページというかリンクが貼ってあるページに
<Script SRC="checkin.js"></Script>
はあるでしょうか?なければ追加してください。

といいつつ、フシギダネさんの方をお勧めします。
たしか、IE3だとリファーの動作が変なんですよね?
というわけでクッキーで遠慮してました(^^;

荒らしがIE3で来ない事を前提に、フシギダネさんの方法を
採り入れる方が実用的かもしれないです(汗)
まあ、荒らしやってるひとも皆さんWin98かWin98SE
じゃないのかな、ということですが………
(最悪、IE3では入室できなくしてしまうとか)

わからずや 2000/03/30(木) 17:56:24
HPを作ってみようかなと思ってる旅人です。
上記の意見なのですが、
クッキー使用する場合、相手がクッキー書き換えたら
行けちゃいますよね?
それと、フシギダネさんの場合だと、REFERERは送信ない場合もありますよね?よくわからないんですけど・・・?間違ってます?

にゃあ 2000/03/30(木) 23:41:38
はい、解答です。

クッキーを書き換えたら行けます、がわざわざページに行く前に
クッキーを手で書きこむくらいならそのままページに移動して
一度クッキーを書いた方が楽なのでは?

にゃあ 2000/03/31(金) 00:31:49
そういえば、過去ログ表示しないと(笑)
にたような事になってます。

../200003/00030128.htm

わからずや 2000/03/31(金) 11:33:29
はい。申し訳ありませんでした。
過去ログみずに書きこみました。
似たような事になってました。(苦
わからずやの方がレベル低いけど。(死
勉強勉強〜。

[上に] [前に] [次に]