0

訪問者のIPをファイルに記録したいと思います。その後、2 回目のアクセスを試みた後、その人に 10 日以内にその Web サイトにアクセスしてほしくありません。彼が再び訪れたら、私は禁止メッセージを出してほしい. 私はmysqlデータベースでこれを行うことができますが、ファイル処理を通じて行いたいです。緊急です

4

2 に答える 2

0

次のコード スニペットが役立つと思います。

define('IP_FILE', 'ip.php');//where to save IP data
define('LIMIT_SECONDS', 10*24*3600); // 10 days
//loading IP data
function loadIPFile() {
    if (file_exists(IP_FILE)) {
       require_once IP_FILE;
       if (isset($ipArray) and is_array($ipArray)) {
            return $ipArray;
        }
    }
    return array();
}

//saving IP data
function saveIPFile($ipArray) {
    $fp = fopen(IP_FILE, 'wb');
    fwrite($fp, '<?php'.PHP_EOL);
    fwrite($fp, '$ipArray = '.var_export($ipArray, true).';'.PHP_EOL);
    fwrite($fp, '?>');
    fclose($fp);
}

$ipArray = loadIPFile();//load info into array
$ip = $_SERVER['REMOTE_ADDR'];//visitor ip
//if such ip already exists and 10 days are not behind us redirect visitor
if (isset($ipArray[$ip]) and time() - $ipArray[$ip] < LIMIT_SECONDS) {
   header('Location: banned_page.php');
   exit;
}
else {
    //else record new  ip or new time
    $ipArray[$ip] = $time;
}
//save IP information
saveIPFile($ipArray);
于 2012-11-17T11:29:15.977 に答える
-1

データベースでこれを行う方法を知っているのに、なぜファイルでそれを行う必要があるのでしょうか? データベースは基本的に、データへのアクセスを支援する機能を備えたファイルです。ファイルを使用してこの種のデータを直接格納することにより、MySQL ですぐに使用できる最小限のアクセス機能を書き直す必要があります。なぜ車輪を再発明するのですか?

何らかの理由で MySQL にアクセスできない場合は、おそらく SQLite http://php.net/manual/en/book.sqlite.phpを試してください。多くの SQL タイプの機能が提供されますが、 SQLサーバーではなくローカルディレクトリ。

于 2012-11-17T12:43:12.913 に答える