Php 从回调返回值
注册新用户后,我收到一个Php 从回调返回值,php,callback,Php,Callback,注册新用户后,我收到一个选择器和令牌,用于帐户验证。 我想知道是否发送了确认邮件,但从回调返回值时遇到问题。以下是我所拥有的: try { $callback = function ($selector, $token) { $msg = "some message"; if(mail($_POST['email'],"Please verify your account",$msg)) {
选择器
和令牌
,用于帐户验证。
我想知道是否发送了确认邮件,但从回调返回值时遇到问题。以下是我所拥有的:
try {
$callback = function ($selector, $token) {
$msg = "some message";
if(mail($_POST['email'],"Please verify your account",$msg))
{
return "success";
}
else
{
return "mail_not_sent";
}
};
$auth->registerWithUniqueUsername($_POST['email'], $_POST['password'], $_POST['username'], $callback);
$output['result']=$callback; //this is the array where I want to store the result in ("success" of "mail_not_sent").
}
catch ($e) {
}
,所以如果我必须这样做,我会这样做:
$callback_result = '';
$callback = function ($selector, $token) use (&$callback_result) {
/* Other code here */
$callback_result = 'whatever';
/* Other code here */
};
$auth->registerWithUniqueUsername(/* Other args here */, $callback);
$output['result'] = $callback_result;
这有点奇怪,但:
try {
$mailFlag = null;
$callback = function ($selector, $token) use (&$mailFlag) {
$msg = "some message";
if(mail($_POST['email'],"Please verify your account",$msg))
{
$mailFlag = "success";
}
else
{
$mailFlag = "mail_not_sent";
}
};
$auth->registerWithUniqueUsername($_POST['email'], $_POST['password'], $_POST['username'], $callback);
$output['result'] = $mailFlag; //this is the array where I want to store the result in ("success" of "mail_not_sent").
}
catch ($e) {
}
这些回调有什么用?这似乎是一种愚蠢的做事方式。你有什么建议吗?我基本上想知道什么时候出了问题。因此,或者邮件被发送,用户获得注册(=成功),或者这两件事中的一件失败。为什么不从
$auth->registerWithUniqueUsername
返回一个真/假值(或结果字符串)?在php中,回调可能会变得相当糟糕。@NikolaIsola:那不起作用。。。它会抛出一系列错误,比如选择器和令牌未设置。这非常有效,谢谢!有点离题,但仍然是:现在,当然有可能出现无法发送电子邮件的情况,但注册成功了。有没有办法使电子邮件的发送和注册都能成功,如果没有,这两个都不能成功?我猜不会,但值得一试。从您正在使用的项目的源代码(delight im/auth
)来看,它不关心回调返回什么,所以我不确定您将如何执行。如果回调指示电子邮件未成功,您是否可以立即“注销”用户?