相互分离的调用函数工作正常,在另一个中执行其中一个函数则不然

时间:2014-12-30 09:54:27

标签: php oop email

我一直在努力使用这个电子邮件功能。所以基本上,我正在一个本地网站上为个人项目工作,我的电子邮件验证过程遇到了问题。我有框架来支持它,但不是发送电子邮件的方法;就是这就是它。

我有两个功能,'注册'和' registerEmail ',我想要一起工作。 '注册'是自我解释的;它通过注册过程处理所有内容,而' registerEmail '发送用户收到的电子邮件,以便通过提供的链接激活他们的帐户。

当我尝试在' register '中运行' registerEmail '时出现问题,它根本就没有...注册。 ' register '函数按预期工作,并将用户添加到表中,但不“发送”任何电子邮件。然而,' registerEmail '函数不是问题,因为如果我独立调用它,它的工作完全正常......我已经尝试将这两个函数组合在绝望之外(没有发送一个电子邮件),似乎我在我的智慧结束。

以下是两个提到的功能:

注册功能:

public function register($array){

            ....
            all of the password and query stuff happens here
            ....

                $stmt->bind_param('ssssssiss', $userName, $password, $salt, $email, $firstName, $lastName, $today, $activationCode, $active);

                $stmt->execute();

            }else{

                printf("Prepared statement error: %s\n", $this->connection->error);

            }

            if($stmt->affected_rows == 1){

                return 1;

            }

            $stmt->close();


            #This part is the fault that I cannot pinpoint, it doesn't actually do anything.
            $this->registerEmail($userName, $email, $firstName, $lastName, $activationCode);

        }

    }

注册电子邮件功能:

public function registerEmail($userName, $email, $firstName, $lastName, $activateCode){

    $to = $email;

    $subject = 'Confirmation from Tangleball to ' . $userName;
    $header =   'From: webmaster@example.com' . "\r\n" .
                'Reply-To: webmaster@example.com' . "\r\n" .
                'X-Mailer: PHP/' . phpversion();

    $message = '<html><head><title>Email verification</title></head><body>';
    $message .= 'Hi ' . $firstName . $lastName . '! Your account, username "' . $userName . '", at place needs to be confirmed before you can log in, just <a href="http://127.0.0.1/place/index.php?activate=' . $activateCode . '">click here</a> to activate your place account. </body></html>';

    #$message = wordwrap($message, 70, "\r\n");

    $sentmail = mail($to, $subject, $message, $header);

}

我正在使用a local mail server来“捕获”正在发送的电子邮件,因此,如果我调用我的registerEmail函数,它实际上会将电子邮件“发送”给“用户”。

我很茫然,任何人都可以在我的东西上挖洞吗?

2 个答案:

答案 0 :(得分:0)

您应该从

中删除行return 1;
if($stmt->affected_rows == 1){

     return 1;
}

它会起作用。

答案 1 :(得分:0)

我想你想做那件事(但不知道为什么):

if ($stmt->affected_rows !== 1) {
    return 1;
}

如果您想用此处理错误,请查看exceptions