gpt4 book ai didi

php - 返回负值

转载 作者:行者123 更新时间:2023-12-04 16:45:41 24 4
gpt4 key购买 nike

我有这个非常简单的功能...

function send_mail($to, $from, $from_mail, $subject, $message) {

if ( empty($from) || empty($from_mail) || empty($subject) || empty($message) ) {
return -1;
}

if ( isset ($_SESSION['last_mailed']) )
{
if ( $_SESSION['last_mailed'] + 180 < time() )
return -2;
}
$_SESSION['last_mailed'] = time();

if ( !validEmail($from_mail) )
return -3;

$from = strip_mail_headers_single($from);
$from_mail = strip_mail_headers_single($from_mail);
$subject = strip_mail_headers_single($subject);
$message = strip_mail_headers_multi($message);

return mail($to, $subject, $message, "From: $from <$from_mail>\r\n");

}

if ( !empty($_POST) ) {
$result = send_mail($mail_to, $_POST['from'], $_POST['from_mail'], $_POST['subject'], $_POST['message']);

if ( $result == -1 )
{
echo "<p>You need to complete all the fields.</p>";
}
elseif ( $result == -2 )
{
echo "<p>You can only send one mail every three minutes.</p>";
}
elseif ( $result == -3 )
{
echo "<p>Please enter a valid email address.</p>";
}
else
{
echo "<p>Mail sent successfully!</p>";
}
}

我得到了一些奇怪的结果。 mail() 函数返回,结果设置为 1,邮件被发送。但是,由于某种原因,“if ( $result == -1 )” 的计算结果为 true,并打印出相应的错误消息。为什么是这样?有什么想法吗?

最佳答案

这是因为您要返回 mail() 的结果,如果成功,则为 true,而 PHP 会发生这种非常愚蠢的事情,其中true 的语义是它与每个 bool 真表达式相同(在弱 == 比较中),包括 -1

建议:

return mail($to, $subject, $message, "From: $from <$from_mail>\r\n") ? 1 : 0;

并添加对 0 情况的处理,指示 mail() 失败。

使用 === 而不是 == 进行比较也可以。

关于php - 返回负值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1212660/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com