LoginSignup
0
1

More than 1 year has passed since last update.

PHPとMySQLでIPアドレスごとのスクリプト実行回数を記録する

Posted at

突然Webページのアクセスが増えた!!!
よく分からないリクエストが多発している!!!!!
もしかしてbotでは????????
怖い!!!!助けて!!!!!!!!!!!

そんな時は訪問者のIPアドレスを取得して、スクリプト実行ごとに実行回数を記録すればよい。
特定のアドレスから異様な数のアクセスがあれば、そのアドレスはbotやスクリプトを使っているかもしれない。

saveIP.php
    $host = "hostname";
    $db = "dbname";
    $username = "username";
    $pass = "password";

    $dbh = new PDO("mysql:host=$host; dbname=$db; charset=utf8", $username, $pass);

    $ip = ip2long($_SERVER["REMOTE_ADDR"]);//IPアドレスを取得して数値に変換

    $sql = "INSERT INTO table (ip, num) VALUES ($ip, 0) ON DUPLICATE KEY UPDATE SET num = num+1 WHERE ip=$ip";//IPアドレスがDBになければ挿入、既存ならnumを1増やす
    $req = $dbh->query($sql);

DBにtableというテーブルがあり、ip(ユニーク)numというカラムがあるという前提である。

一定時間ごとに一定以上のアクセスがあれば、リクエストされた内容を拒否すればよい。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1