dポイントプレゼントキャンペーン実施中!

外部のhtmlページに以下のコードを貼り付け、リファラーとアクセスページを取得しようと思っているのですが、うまくいきません。

▼ htmlページに貼り付けたコード(外部サーバ)
<script type="text/javascript" src="http://example.com/script.php"></script>

▼ script.php の 中身(自サーバ)
$access_url= 'http://' . $_SERVER[HTTP_HOST] . $_SERVER[REQUEST_URI];
$referer_url = $_SERVER["HTTP_REFERER"];


[現在の状態]
$access_url の中身 = http://自サーバのドメイン/script.php
$referer_url の中身 = http://コードを貼り付けたページ


色々と試行錯誤してこの形になったのですが、完全に行き詰ってしまいました。
方向性だけでも良いので、どなたかご教授いただけませんでしょうか。

よろしくお願いいたしますm( _ _ )m

A 回答 (2件)

ん~結局何がしたいのか分からなくなってきました・・・。



>リファラーとアクセスページを取得しようと思っている

これは、HTMLにアクセスしてきた人(クライアント)のリファラを取得したいということでしょうか?
それならJavaScriptを使うのが一番楽です。
http://f32.aaa.livedoor.jp/~azusa/?t=js&p=docume …

アクセスページというのは、「現在のページのアドレス」のことでしょうか?
それならJavaScriptではwindow.locationで取得できます。
http://www.tohoho-web.com/js/location.htm

>[現在の状態]
>$access_url の中身 = http://自サーバのドメイン/script.php
>$referer_url の中身 = http://コードを貼り付けたページ

こうなるのは、自サーバーのPHPへのアクセスは外部サーバーのHTMLからのアクセスだからです。
もしクライアントのリファラなどを知りたいのであれば、実際にクライアントからの接続がある外部サーバー上で取得しなければなりません。

どうしても自サーバーでPHPで処理したい場合は、JavaScriptで得た上記の情報をGETやPOSTで通知することになるのですが、JavaScriptだけではクロスドメインなアクセスはできないので、結局外部サーバー側でPHPやCGIなどを利用して中継してやる必要があります。なので、外部サーバーがPHPもCGIも使えない、といった場合は無理かと思います。

><script type="text/javascript" src="http://example.com/script.php"></script>
>は、フリーの解析ツールなんかが使ってるのを見て、コードがスマートでいいなぁと思ったので、チョイスしました。

これは、外部サーバーのPHPを実行して得た出力をJavaScriptとして実行する、という意味です。
#しばしばコールバックを設定してJSONPとして利用されたりします
外部サーバーのPHPファイルをHTMLに読み込んで実行するという意味ではありません。


なんだかまとまらなくなってしまいましたがご了承ください…。
    • good
    • 0
この回答へのお礼

返信ありがとうございます!

おっしゃる通り、HTMLにアクセスしてきた人(クライアント)のリファラと、現在のページのアドレスを取得しようとしています。

>もしクライアントのリファラなどを知りたいのであれば、実際にクライアントからの接続がある外部サーバー上で取得しなければなりません。

PHPの場合はそのようになるんですね!
PHPとJavaScriptのリファラ取得方法の違いを理解していませんでした。。。


>#しばしばコールバックを設定してJSONPとして利用されたりします
これはよく意味が理解できなかったです。まだまだ勉強不足ですね(;^_^A




そして、
おかげさまで、以下のような手順を踏んで無事解決することができました。

script.phpの呼び出し → JavaScriptでリファラとアクセスページを取得 → 非同期GET通信でPHPにデータを渡す


丁寧なご説明、ほんとにありがとうございましたm( __ __ )m

お礼日時:2011/01/18 21:47

><script type="text/javascript" src="

http://example.com/script.php"></script>

これは外部JavaScriptを実行するための表記法ですのでPHPスクリプトファイルを指定するのは間違っています。
#場合によってはありえますが、少なくとも今回のケースでは間違っています

なので、PHPを実行したいのであればHTMLファイル内で
<?php /* この間にPHPの処理を書く */ ?>
ようにしましょう。

とはいえ、やはり基礎から勉強するのが早道かと思いますが。
http://www.google.co.jp/search?hl=ja&safe=off&cl …

ちなみにリファラに関してはJavaScriptでも取得できます。
    • good
    • 0
この回答へのお礼

申し訳ございません。
質問に前提条件を書いてなかったですね(汗)

外部のhtmlページは、そのサーバ設定を変更することができず、
<?php /* この間にPHPの処理を書く */ ?>
を使いたくても使えない状態なんです。

<script type="text/javascript" src="http://example.com/script.php"></script>
は、フリーの解析ツールなんかが使ってるのを見て、コードがスマートでいいなぁと思ったので、チョイスしました。

このコードでなくてもいいのですが、最終的な渡し先がPHPのシステムなんで、できればPHPの変数に格納したいのですが、良い方法はありませんでしょうか?

お礼日時:2011/01/16 19:15

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