Php 没有收到错误
我现在有一个会员系统,当有人注册一个帐户时,他需要通过他的电子邮件激活它。他将在收件箱中收到一个有效链接,例如:Php 没有收到错误,php,pdo,Php,Pdo,我现在有一个会员系统,当有人注册一个帐户时,他需要通过他的电子邮件激活它。他将在收件箱中收到一个有效链接,例如: activate.php?电子邮件=ipoon2@outlook.com&email_code=B5B90AE21E31229878D68160DB16BDF此链接有效,因此当我转到此链接时,他成功激活了帐户 您在?电子邮件=ipoon2@outlook.com所以当我将其更改为ipodn2@outlook.com并且电子邮件代码仍然相同,他无法激活他的帐户。他需要收到一个错误,如我
activate.php?电子邮件=ipoon2@outlook.com&email_code=B5B90AE21E31229878D68160DB16BDF此链接有效,因此当我转到此链接时,他成功激活了帐户
您在?电子邮件=
ipoon2@outlook.com所以当我将其更改为ipodn2@outlook.com并且电子邮件代码仍然相同,他无法激活他的帐户。他需要收到一个错误,如我们找不到该电子邮件
,当他更改电子邮件代码时,他将收到一个错误,如问题激活您的帐户
这就是我在更改电子邮件时遇到的问题,我没有收到任何错误。也不适用于电子邮件编码
我有一个名为activate.php
的文件,该代码包括:
<?php
} else if (isset($_GET['email'], $_GET['email_code']) === true) {
$email = urldecode(trim($_GET['email']));
$email_code = trim($_GET['email_code']);
$user = new User();
if(User::email_exists($email) === false) {
echo 'We cannot find that email'; // return error doesn't show up
} else if (User::activate($email, $email_code) === false) {
echo 'problem activate your account'; // return error doesn't show up
}
}
?>
对我来说,你的email_exists()和activate()是错误的
if ($sql_30->fetch_object() === true) {
return true;
} else if ($sql_30->fetch_object() === false) {
return false;
}
从以下的php文档:
返回一个对象,该对象的字符串属性与获取的行相对应,如果resultset中没有更多行,则返回NULL。
因此您的测试必须:
if ($sql_30->fetch_object() !== NULL) {
return true;
}
return false;
我想它应该可以解决您的问题。您可以通过查看类型来检查PDO::query
的返回。如果发生错误,查询将返回false。是否确定空结果返回的类型为false?在这种情况下,您永远不会使用if语句。@Debflav我不知道我做错了什么,`if(User::email_存在($email)===false){echo'我们找不到那封电子邮件';}`他不认识this@Benny$db->query的结果(“选择来自用户的计数(id),其中email='$email'))
将为您提供出错的线索。@Jim公共函数email_exists($email){require./config.php';$email=urldecode(trim($_GET['email']);$sql_30=$db->query(“从email='$email'的用户中选择计数(id));if($sql_30->fetch_object()){return true;}否则{return false;}
他不会返回错误,如果电子邮件错误,他不会激活需要的帐户,但只有错误不会返回。@Debflav我正在尝试的每件事都无法返回错误我已将代码上载到pastebin:我目前拥有的代码仍然无法解决我的问题,如果(User::email\u存在($email)==false){echo'我们找不到那封电子邮件';}否则如果(User::activate($email,$email\u code)==false){echo'问题激活你的帐户';}
这仍然没有显示。所以你的函数总是返回true。当提供正确的电子邮件时,$sql\u 30->num\u rows>1在你的电子邮件中存在吗?
我不知道你的问题。。。
if ($sql_30->fetch_object() !== NULL) {
return true;
}
return false;