我有一个记录用户 IP 的评级脚本,因此他们不能对文件进行多次评级。但是,每次我对文件进行评分以对其进行测试时,我的 $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
- 我添加了 ip2long() 函数,因为我将 ip 字段更改为 INT
- 然后我添加了 INET_NTOA(ip) 来读取 ip2long() INT
任何帮助,将不胜感激。谢谢!
编辑:例如,如果我将 $ip 设置为 3,这些脚本可以正常工作。