我正在使用Mysql_num_rows来获取数据(他们的电子邮件和IP),如果它已经被所述用户输入,那么它将会下降,但如果没有则会成功。
然而,如果我改变我的IP它仍然成功,当它不应该因为我仍然使用相同的电子邮件?它没有检查电子邮件和IP。提前谢谢你' - '
$query = "SELECT * FROM tbl_1 WHERE Email='$Email' AND IP='$ip'";
$Result = mysql_query($query) or die ('unable to run: ' .mysql_error());
$count = mysql_num_rows($Result);
if($count==1)
{
echo 'You have already entered this competition!';
}
else {
echo 'success';
}
答案 0 :(得分:2)
您的代码包含WHERE Email='$Email' AND IP='$ip'";
但您写的in a comment
:
“$ Email = $ _ POST ['email'];来自提交表单,IP来自代码:$ IP = $ _SERVER [”REMOTE_ADDR“];位于此脚本页面的顶部
您正在使用$IP = $_SERVER["REMOTE_ADDR"];
,您应该使用
$ip = $_SERVER["REMOTE_ADDR"];
或WHERE Email='$Email' AND IP='$IP'";
$IP
和$ip
不是一回事,他们只是“两个不同的动物” ---
变量区分大小写。
旁注:
您可以使用OR
代替AND
,如果有人尝试使用不同的电子邮件注册但使用相同的IP(反之亦然),那么他们将无法使用。
<强>脚注:强>
mysql_*
函数弃用通知:
http://www.php.net/manual/en/intro.mysql.php
从PHP 5.5.0开始,不推荐使用此扩展,不建议用于编写新代码,因为将来会删除它。相反,应使用mysqli或PDO_MySQL扩展名。在选择MySQL API时,另请参阅MySQL API Overview以获得进一步的帮助。
这些功能允许您访问MySQL数据库服务器。有关MySQL的更多信息,请访问»http://www.mysql.com/。
可以在»http://dev.mysql.com/doc/找到MySQL的文档。
答案 1 :(得分:0)
你可以尝试这样,它有点不同
$query = "SELECT COUNT(*) as count Email, IP FROM tbl_1 WHERE Email='$Email' AND IP='$ip'";
$Result = mysql_query($query);
if($Result){
$row = mysql_fetch_assoc($Result);
if((int)$row['count'] > 0)
{
echo 'You have already entered this competition!\n';
echo $row['Email'];
echo $row['IP'];
}
else {
echo 'success';
}
}else{
die ('unable to run: ' .mysql_error());
}
答案 2 :(得分:-1)
首先,您应该将mysql_fetch_assoc()用于查询
中的变量检查列名是否写得正确,你应该这样做:
$query = "SELECT * FROM tbl_1 WHERE Email='$Email' AND IP='$ip'";
$Result = mysql_query($query) or die ('unable to run: ' .mysql_error());
if(mysql_num_rows($Result))
{
echo 'You have already entered this competition!';
}
else {
echo 'success';
}
因为你可以通过这封电子邮件获得超过1条记录,而在mysql中有ip成功