重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

CGIから移動したページでのリンク元URLの取得について

CGIのHTML表示部を
print<<End_of_Data;
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Refresh" content="5;URL=http;//example.com/index.html" />
<title>認証OK</title>
</head>
<body>会員ページに移動します</body>
</html>
End_of_Data
としています。

5秒後にリダイレクト先のexample.comに移動するようにしているのですが、
このリダイレクト先でリンク元を取得することができません。
リンク元URLを取得するにはどうしたらよろしでしょうか?

よろしくお願いします。

A 回答 (3件)

■識別用のクエリを付加する方法


あまり難しく考える必要はないですよ。index.htmlでアクセス元を調べていますよね。その時もし、
・referrerが空で
・かつ from=Success が付いていれば 「認証OK」のページから飛んできた、
と判定するわけです。
もちろんクエリは from=Success に限らず、?referrer=http://認証OKページURL でも何でもご自分で分かりやすいものでかまいません。


■専用ページに飛ばす方法
これも上と同じです。専用のindex2.htmlに来たものは、http://認証OKページURL から来たものと判定できますので 適宜処理をしてindex.htmlへ飛ばします。この時はRefreshで飛ばしても、すでに処理ずみですのでreffererが空でも構わないわけです。
適宜処理、というのはCookieを発行するなどで index.htmlでも判別できるようにする、ということです。


■ついでに
例えばこの認証OKページに <img src='http://example.com/img.php'> などとして、単なるgifやjpgではなく、別のサイトに置いたプログラムで画像を出力してやります。このときクッキーやセッションを発行すれば、example.comの方で判定でるわけです。
あるいは直接 この認証ページから
<script language="JavaScript" src="http://example.com/○○○.js"></script>
としてJavaScriptで処理してもよいでしょう。
このOKwaveさんでも様々なサイトのクッキーが発行されていますよ。一度クッキーの設定を IEなら[ダイアログを表示する]に設定するとよく分かります。


でも単純な方法が一番ですね。やっぱり。
上記の方法は回りくどくてあまり学習する価値ないかもです。
    • good
    • 0
この回答へのお礼

わかりやすいご回答本当にありがとうございます!
かなり学習になりました。
>■識別用のクエリを付加する方法
おっしゃられる通り難しく考えていました。
教えていただくまでRefererを空にするということを考えていませんでした。
しかしアドバイス通りにしましたら希望の動作をしてくれました!

>■専用ページに飛ばす方法
>この時はRefreshで飛ばしても、すでに処理ずみですのでreffererが空でも構わないわけです。
とてもわかりやすいご説明でした。
正直最初は理解に苦しみましたが、Refreshについて再度調べ、そしてクッキーについて少しでも理解を深めることでこちらもアドバイス通り上手く動作してくれました!

>■ついでに
こんな方法があるのですね。
全く知りませんでしたので、これまた勉強になりました!
こちらについては少し難しそうで学習する価値がないかもとのことですが、これを機に勉強してみようと思います。

本当にご丁寧かつ敏速にご回答いただきありがとうございました。
心よりお礼申し上げます!

お礼日時:2010/06/13 03:52

JavaScriptで飛ばす手もありますね。


ほかをいじらず済むので楽かも。

以下body内に追加。
<form action='http://example.com/' name='jump'></form>
<script language="JavaScript">
<!--
function jump(){ document.jump.submit();}
window.onload=setTimeout("jump()", 5000 );
// -->
</script>
<noscript><a href='http://example.com/'>いますぐ移動する</a></noscript>
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
完璧の一言です!!
今まで悩みに悩んでいたことが一瞬にしてできました!!!
先のご回答の方も学習のため試してみようと思います。
まずは取り急ぎお礼をさせていただきます。
本当にありがとうございました。

お礼日時:2010/06/11 17:40

Refreshで飛ばすとリファラは空になってしまうので


■識別用のクエリを付加する
http;//example.com/index.html?from=Success
■ index2.htmlなど 専用ページに飛ばして判定後index.htmlにまた飛ばす

■あるいは、認証OKページで、example.comに置いた画像を出力してやることで サードパーティのCookieやsessionを発行する手もあります。

この回答への補足

すでに解決しておりますので、お時間があればアドバイスお願い致します。
>■識別用のクエリを付加する
>http;//example.com/index.html?from=Success
識別用のクエリを付加したのですがダメでした。
そこでご質問なのですが、
■ index2.htmlなど 専用ページに飛ばして判定後index.htmlにまた飛ばす
index2.htmlからindex.htmlに飛ばす方法はどういったものがいいのでしょうか?
いまいち理解しておらず、簡単で構いませんので何か学習のヒントになるようなアドバイスを頂けましたら幸いです。

補足日時:2010/06/11 17:53
    • good
    • 0

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