Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.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 没有收到错误_Php_Pdo - Fatal编程技术网

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;