プロが教える店舗&オフィスのセキュリティ対策術

環境
 サーバLinux、Apache2.0.52、PHP4.3.9
 携帯用Webを作成し、携帯電話からアクセスしてきた時のリンク元をgetenv("http_referer")を使用し情報を取得したいのですが取得できない状態です。尚、PCの場合は取得可能です。

log.html(対象画面)
<body>
このページへのアクセスが記録
<img border="0" src="http://****/log.php" width="1" height="1">
</body>

log.php(記録)
<?php
require "config.php";

$conn = mysql_connect($sv, $user, $pass) or die("接続エラー");
mysql_select_db($dbname) or die("接続エラー");

// 値をセット
$log_date = date("Y-m-d");
$log_time = date("H:i:s");
$log_ip = getenv("remote_addr");
$log_url = getenv("http_referer");

// データの追加
$sql = "INSERT INTO log ("
. " log_date, "
. " log_time, "
. " log_ip, "
. " log_url "
. ") values ("
. "'" . $log_date . "',"
. "'" . $log_time . "',"
. "'" . $log_ip . "',"
. "'" . $log_url . "'"
. ")";
mysql_query($sql, $conn);

?>

どうかご指導のほど宜しくお願いします。

A 回答 (4件)

セキュリティ上、REFFERERは渡さないのが一般的なようです。


携帯端末のほとんどはセッションやクッキーを使えないので、URLに識別情報を埋め込む場合があるからです。
http://mydomain.com/?gq2oitha2ohjfg0aqjgq230tsfa
のような。。。

REFFERERを渡すのはむしろバグとして捉えられているくらいです。


参考URL:http://k-tai.impress.co.jp/cda/article/news_topp …

この回答への補足

追加的質問になってしまいますが、

携帯サイトの各画面のアクセスログは、どの様に取得すればよいのでしょうか?
ご指導いただければありがたいのですが・・・

また、参考サイト・参考に出来る本など教えていただけないでしょうか?

補足日時:2006/07/05 17:02
    • good
    • 0
この回答へのお礼

REFFERERを渡す事がバグとして捉えられているとは、全く知識がありませんでした。
参考になりました。

お礼日時:2006/07/05 16:54

> 携帯サイトの各画面のアクセスログは、どの様に取得すればよいのでしょうか?



どこまでログをとる必要があるか、という事になるかもしれませんが。

携帯の場合は、REMOTE_ADDRで取得出来るIPはアクセスごとに変わるので、ほとんど無意味です。
同じ人からのアクセスなのか、他人からのアクセスなのか、はなかなか難しいです。
携帯電話には識別情報というものがありますが、これはユーザに送信するかどうかの決定権があります。と言ってもau等はデフォルトで送信になっているので、ほとんどの人は毎回送信していますけどね。
識別情報の取得に関しては下記URLを参考にしてみて下さい。
Cookieも使えません。(auには疑似Cookieみたいなものはあります)さて、どうしたものでしょうか。

セッションを使う(URLにID埋め込み型)、というのが一番現実的かもしれません。

参考URL:http://upup.blog3.fc2.com/blog-entry-165.html
    • good
    • 0

こんにちは(^-^



携帯電話の殆どがREFERERを返さない仕様になっていますよ(^-^
    • good
    • 0
この回答へのお礼

そうだったんですか。ありがとうございました。

お礼日時:2006/07/05 16:51

携帯電話で試したことがないので、出来るかわかりませんが


スーパーグローバル変数を使ってみてはどうでしょうか。

$log_url = $_SERVER['HTTP_REFERER'];

PHP: 定義済の変数 - Manual
http://jp2.php.net/manual/ja/reserved.variables. …


# 「携帯電話のWebブラウザではRefererを送信していない」という可能性も考慮した方がよいかもしれません。
    • good
    • 0
この回答へのお礼

連日外出が続き、確認が遅れ申し訳ありませんでした。

スーパーグローバル変数を使ってみましたが、残念ながら同じ結果でした。

お礼日時:2006/07/05 16:50

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