Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 停止用户多次使用电子邮件验证链接。PDO准备的语句不起作用_Php_Email_Pdo_Repeat_Verification - Fatal编程技术网

Php 停止用户多次使用电子邮件验证链接。PDO准备的语句不起作用

Php 停止用户多次使用电子邮件验证链接。PDO准备的语句不起作用,php,email,pdo,repeat,verification,Php,Email,Pdo,Repeat,Verification,编辑:根据我在下面得到的第一个回复,我修改了我的代码,现在它可以工作了。。。首先检查给定的电子邮件地址以查找玩家id。然后根据玩家id检查验证状态。因此,如果他们将来更改电子邮件地址,则仍将知道是否已验证 下面是我的最终代码(我更改了一些项目的名称,因此它不是我自己代码的完全复制/粘贴) 再次感谢你的帮助 下面是我的原始问题 我试图找出一个简单的设置,阻止用户反复验证他们的电子邮件地址。当他们验证他们的电子邮件时,我会奖励他们在店内购买游戏的300个积分。很明显,我不想每次他们通过电子邮件发送验

编辑:根据我在下面得到的第一个回复,我修改了我的代码,现在它可以工作了。。。首先检查给定的电子邮件地址以查找玩家id。然后根据玩家id检查验证状态。因此,如果他们将来更改电子邮件地址,则仍将知道是否已验证

下面是我的最终代码(我更改了一些项目的名称,因此它不是我自己代码的完全复制/粘贴)

再次感谢你的帮助

下面是我的原始问题

我试图找出一个简单的设置,阻止用户反复验证他们的电子邮件地址。当他们验证他们的电子邮件时,我会奖励他们在店内购买游戏的300个积分。很明显,我不想每次他们通过电子邮件发送验证链接时都不断地抛出这些信息

因此,在运行正常的验证脚本之前,我尝试先运行一个检查

但是惊喜,惊喜:它不起作用

我试图在数据库中搜索验证字段设置为“1”的电子邮件地址,然后查看它找到此结果的次数。如果它发现它“0”次,那么验证就可以了,如果它发现它一次,那么它以前就已经被验证过了

function email_not_verified ($email) {
include ('../connect.php'); // connect to database 
//check it's not already verified
$checkEmail= $db->prepare("SELECT * FROM players WHERE sent_verification=?, email=?");
$checkEmail->execute(array('1', $email));   

$check2 = $checkEmail->rowCount();

if ($check2 = 1){
return TRUE;
}
else{
    return FALSE;
}

}
我一直在用

 file_put_contents('results.txt',$check2); 
查看代码的结果,无论其显示的是真是假。但是结果返回为“0”,尽管我可以从数据库中看到它应该是“1”

我不确定是否有一个更简单的方法来实现这一点,我一直试图让我的头周围绑定值,但它还没有陷入。。。我会继续尝试

感谢您的帮助、指导,指出显而易见的。。。我觉得我的剧本走错了路,但我想不出还有什么别的办法

干杯


Jon

如果您的
陈述有误,您的
。您使用的是赋值运算符,而不是比较运算符。但这并不重要,因为行计数并不总是可靠的,这可能就是实际问题所在。您需要做的是获取第一行,然后查看是否返回一行

但是,您可能不希望将其附加到电子邮件验证。当用户更改他们的电子邮件地址时,您将希望验证该新地址,并且您可能不希望每次都给他们300个信用。否则,有人可以通过编程一次又一次地更改他们的电子邮件地址,从而为自己创造大量的信用


我会把300张免费信用卡作为优惠券或其他东西分开,每个账户只能使用一次。在电子邮件验证中,如果该优惠券尚未用于该帐户,请使用该优惠券并在您的数据库中进行标记。只需为新账户、奖金、积分或其他内容添加另一列即可完成此操作。

谢谢您的回复。所以,如果我使用像==或>这样的东西,我之前刚刚使用过=应该会解决这个问题。。。我将尝试使用fetch(我之前使用过它,但遇到了另一个问题,并不断调整代码,直到达到上述目标)。还有,你百分之一百一十对,我不应该对照他们的邮件查。我将修改它,以便如果根据给定的电子邮件找到persons用户ID,然后根据该用户ID检查验证状态。。。谢谢你的帮助。乔恩再次感谢你的帮助。。我已经用我的最终代码和工作代码更新了我的原始问题。
 file_put_contents('results.txt',$check2);