ユーザーのIPをログに記録する評価スクリプトがあるので、ユーザーはファイルを2回以上評価できません。ただし、ファイルを評価してテストするたびに、$ ipはip2long()関数で変更されます。どうしたの?これが私のコードです:
<?php
require('connect.php');
$sheetID = $_GET["id"];
$rating = $_GET["rating"];
$ip= $_SERVER['REMOTE_ADDR'];
$ip = ip2long($ip);
$checkIPQuery = mysql_query("SELECT * FROM ratings WHERE sheetID = '$sheetID' and INET_NTOA(ip) = '$ip'");
$doesIPExist = mysql_num_rows($checkIPQuery);
if ($doesIPExist == 0) {
mysql_query("INSERT INTO ratings (sheetID, rating, ip) VALUES ($sheetID, $rating, $ip)");
echo " $ip
<script>setTimeout(function(){location.href = '../sheets.php?id=$sheetID'},1);</script>";
}
else
echo 'You have already rated this image!';
?>
次に、ユーザーがスクリプトを評価したかどうかを確認します。
$id = $_GET['id'];
$ip=$_SERVER['REMOTE_ADDR'];
$ip = ip2long($ip);
$checkIPQuery = mysql_query("SELECT * FROM ratings WHERE sheetID = '$id' and INET_NTOA(ip) = '$ip'");
$doesIPExist = mysql_num_rows($checkIPQuery);
これが私がしたことです:
- $ ipがvarchar(15)に入らない場合に、フィールドを未割り当てのINTに変更しました
- ipフィールドをINTに変更したため、ip2long()関数を追加しました
- 次に、IP2long()INTを読み取るためにINET_NTOA(ip)を追加しました
どんな助けでもいただければ幸いです。ありがとう!
編集:たとえば、$ ipを3に設定すると、これらのスクリプトは正常に機能します。