私はPHPプログラムをウェブサイト上のMYSQLデータベースに接続しています。 リンクをクリックしてファイルをダウンロードすると、プログラムはデータベースから整数フィールドを読み取り、それを増分してから番号を戻してダウンロード数を数えます。そのプログラムは動作します。しかし、ダウンロード数は時間の経過と共に適度に膨らんでいるようです。ウェブロボットがダウンロード数を膨らませることはできますか?
リンクをたどってファイルをダウンロードすると、ダウンロード数はWebロボットによって増分されますか?もしそうなら、ウェブロボットにウェブサイト上のダウンロードページを無視し、robots.txtファイルを使用して膨大なカウント問題を解決するように指示しますか?ここで
は、PHPのコードです:
function updateDownloadCounter($downloadPath, $tableName, $fileNameField, $downloadCountField, $idField)
{
require("v_config.php");
if(isset($_REQUEST["file_id"]) && is_numeric($_REQUEST["file_id"])) {
try
{
$sql = "SELECT * FROM " . $tableName . " WHERE file_id = " . $_REQUEST[$idField];
$connection = new PDO($dsn, $username, $password, $options);
$statement = $connection->prepare($sql);
$statement->execute();
$result = $statement->fetchAll();
if ($result && $statement->rowCount() == 1)
{
foreach ($result as $row)
{
if(is_file($_SERVER['DOCUMENT_ROOT'].$downloadPath . $row[$fileNameField]))
{
$count = $row[$downloadCountField] + 1;
$sql = "UPDATE " . $tableName . " SET " . $downloadCountField . " = " . $count . " WHERE file_id = " . $_REQUEST[$idField];
$statement = $connection->prepare($sql);
$statement->execute();
$documentLocationAndName = $downloadPath . $row[$fileNameField];
header('Location:' . $documentLocationAndName);
}
}
}
}
catch(PDOException $error)
{
echo $sql . "<br>" . $error->getMessage();
}
}
}