3

PHP と htaccess を使用して、ホットリンカーの IP アドレスを追跡しようとしています。

.htaccess ファイル:

RewriteEngine on 
RewriteRule images/(.+)\.(jpg|gif|png) images.php 

images.php

?php 
    $ipAddress = $_SERVER['REMOTE_ADDR'];

    $statement=$db->prepare("INSERT INTO `ipaddress` (`ip` )
            VALUES (?)");
    $statement->execute(array($ipAddress));     

?>

ここで、ユーザーが www.domain.com/images/image.jpg のような画像をリクエストすると、images.php にリダイレクトされ、IP が追跡されます。ここで直面している問題は、ページ内に画像が表示されていないことです (htaccess が画像を images.php にリダイレクトする理由)。この問題を解決するにはどうすればよいですか?

この問題に関する以前の質問のリンクは次のとおりです。

私はhtaccessの専門家ではないので、もっと説明が必要です

ありがとう

4

1 に答える 1

5

IPをログに記録してから画像を提供したい場合は、次のようにすることができます。

.htaccess ファイル:

RewriteEngine on 
RewriteRule images/(.+)\.(jpg|gif|png) images.php?image=$1.$2

images.php:

<?php 
    $ipAddress = $_SERVER['REMOTE_ADDR'];

    $statement=$db->prepare("INSERT INTO `ipaddress` (`ip` )
            VALUES (?)");
    $statement->execute(array($ipAddress));

    $ext = strtolower(end(explode('.', $_GET['image'])));

    if($ext == 'gif') {
        $type = "gif";
    }
    else if($ext == 'jpg') {
        $type = "jpeg";
    }
    else if($text == 'png') {
        $type = "png";
    }
    else {
        $type = "binary";
    }

    header("Content-type: image/$type");
    readfile("images/" . $_GET['image']);

?>

.htaccessと の両方で、すべてのファイルが正しく指定されていることを確認するために、あちこちでパスを調整する必要がある場合がありますimages.php

于 2012-06-22T11:41:01.360 に答える