我创建了一个重新注册系统,用户可以从中进行自我注册以使用我的系统。
我创建了一个验证过程来避免机器人
验证过程:
我在数据库中的列上创建了“活动”名称,定义为“ 0”,所以当值设置为“ 0”时会执行什么操作,这意味着用户尚未激活他/她的帐户,因此他无法登录我的系统。如果将值设置为“ 1”,那么将激活帐户,他/她现在可以使用系统。
为了将AS DEFINED值设置为1,我创建了一个函数,通过该函数,我可以在使用随机email_code进行重新注册过程中向用户输入的电子邮件地址发送一封电子邮件。一旦他在URL中点击该代码,则AS DEFINED值将更改为1。
现在我坚持下去,错误我花了几个小时找出解决方案
错误 :
警告:mysql_result()期望参数1为资源,布尔值在第123行的C:\ xampp \ htdocs \ pratik \ minimal \ core \ functions \ users.php中给出
代码 :
function activate($email, $email_code) {
$email = mysql_real_escape_string($email);
$email_code = mysql_real_escape_string($email_code);
if(mysql_result(mysql_query("SELECT COUNT(`registration_id`) FROM `register` WHERE `email` = '$email' AND `email_code` = '$email_code' AND `active` = 0") or die(mysql_error()), 0) == 1) {
mysql_query("UPDATE `register` SET `active` = 1 WHERE `email` = '$email'");
return true;
} else {
return false;
}
}
请帮忙 !!
您直接将布尔值传递给mysql_result。
任何看起来像是<statement> or <statement>
布尔值的参数。你有
mysql_query(...) or die(...)
如果您的查询没有错误,则将返回true
。另一个原因or die()
必须消亡。
这是一个简单的例子来说明我的意思〜https ://eval.in/192040
另外,某些东西是 mysql扩展名, 某些东西是 正式弃用的 东西,有些是未 维护的东西
为了解决这个问题,我将简单地切换到mysqli或PDO并使用异常处理。要在mysqli中启用它,只需在创建连接之前运行它即可
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
然后,您可以简单地使用
$stmt = $mysqli->prepare('SELECT 1 FROM `register` WHERE `email` = ? AND `email_code` = ? AND `active` = 0');
$stmt->bind_param('ss', $email, $email_code); // no need to run these through real_escape_string
$stmt->execute();
return $stmt->fetch();
并且任何错误都将作为异常抛出(可以的话try
,catch
如果您愿意的话)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句