【问题标题】:PHP sendmail if elseifPHP sendmail if elseif
【发布时间】:2011-11-08 03:21:53
【问题描述】:

我整天都在尝试,但无法让它发挥作用。

我有四个input type="radio" name="sector" value="value1",但无法让它工作。

function emailtotest($to) {
    if (strip_tags($_POST['sector']) == 'value1') {
        $to .= 'email1@domain.com';
    } elseif (strip_tags($_POST['sector']) == 'value2') {
        $to .= 'email2@domain.com';
    } elseif (strip_tags($_POST['sector']) == 'value3') {
        $to .= 'email3@domain.com';
    } elseif (strip_tags($_POST['sector']) == 'value4') {
        $to .= 'email4@domain.com';
    } else {
        $to .= 'email5@domain.com';
    }
    return $to;
}

我已经测试了 sendmail.php,如果我声明 $to = email@dominio.com,它可以正常工作,但无线电输入将无法正常工作。

有什么帮助吗?

表格代码:

    <form id="contactForm" action="sendmail.php" method="post">
    <p>
        <label for="nome">Nome</label><br>
        <input type="text" id="nome" name="nome" required="required" class="input_full">
    </p>
    <p>
        <label for="tel">Telefone</label><br>
        <input type="tel" id="tel" name="tel" required="required" class="input_full">
    </p>
    <p>
        <label for="email">E-mail</label><br>
        <input type="email" id="email" name="email" placeholder="nome@exemplo.com" required="required" class="input_full">
    </p>
    <p>
        <label for="radio_1">
            <input type="radio" id="radio_1" name="sector" value="value1">
            Comercial / Marketing
        </label>
        <label for="radio_2">
            <input type="radio" id="radio_2" name="sector" value="value2">
            Produto / Manutenção
        </label>
        <label for="radio_3">
            <input type="radio" id="radio_3" name="sector" value="value3">
            Financeiro
        </label>
        <label for="radio_4">
            <input type="radio" id="radio_4" name="sector" value="value4">
            Administração
        </label>
    </p>
    <p>
        <label for="mensagem">Mensagem</label><br>
        <textarea id="mensagem" name="mensagem" rows="5" placeholder="Escreva aqui sua mensagem." required="required" class="input_full"></textarea>
    </p>
    <p>
        <input type="submit" value="Enviar &rarr;">
    </p>
</form>

【问题讨论】:

  • 一个小建议 - 你应该将strip_tags($_POST['sector']) 的值保存在一个变量中。它有助于不重复自己。至于实际问题...您是否忘记了单选按钮的name 属性?您需要将它们全部设置为sector。此外,您的表单的 method 必须是 POST...
  • 你是怎么调用这个函数的?您正在附加到 $to,但我们看不到 $to 的开头。
  • 您在问题中指定标签为&lt;input type="radio" value="value1"&gt;,但您是否记得为这些输入按钮命名?所以他们应该阅读&lt;input type="radio" name="sector" value="value1"&gt;
  • 您确定要使用.=吗?
  • @MattF 输入已经具有“扇区”的名称。

标签: php email input sendmail


【解决方案1】:

嗯,HTML 部分看起来不错,但请尝试更正:

function emailtotest($to) {
if (strip_tags($_POST['sector']) == 'value1') {
    $to = 'email1@domain.com';
} elseif (strip_tags($_POST['sector']) == 'value2') {
    $to = 'email2@domain.com';
} elseif (strip_tags($_POST['sector']) == 'value3') {
    $to = 'email3@domain.com';
} elseif (strip_tags($_POST['sector']) == 'value4') {
    $to = 'email4@domain.com';
} else {
    $to = 'email5@domain.com';
}
return $to;

}

所以不是 $to .= "email..";仅使用 $to = "email";所以前面没有点=

为什么?

因为如果您使用 .= ,则意味着您向现有值添加了一个值。例如,如果 $to 已经包含这个值:email@email.com 然后你使用 $to.= "email1@email.com";然后 $to 将包含两个值,看起来像这样:email@email.comemail1@email.com 这不太好。另一个(相同的)解决方案也是这样的:

function emailtotest($to) {
if (strip_tags($_POST['sector']) == 'value1') {
return 'email1@domain.com';
} elseif (strip_tags($_POST['sector']) == 'value2') {
return 'email2@domain.com';
} elseif (strip_tags($_POST['sector']) == 'value3') {
return 'email3@domain.com';
} elseif (strip_tags($_POST['sector']) == 'value4') {
return 'email4@domain.com';
} else {
return 'email5@domain.com';
}
}

这是一回事,尽量不要在函数中使用 $_POST,即使它是全局的。从 $_POST 示例中获取值:

$which = trim(strip_tags($_POST['sector'])); //get your checkbox value

然后调用一个函数并将 $which 带入函数中:

$to_email = emailtotest($which); //call a function and take $which - value1, value2...
mail($to_email, "subject", "email txt"); //then send a mail to $to_email

function emailtotest($value){
if($value=='value1'){
return 'email1@domain.com';
}
else if ($value=='value2'){
return 'email2@domain.com'
.....
....
}

【讨论】:

  • 谢谢你!现在它可以工作了,我开始了解一些 PHP :D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 2013-01-12
  • 2015-01-28
  • 2020-02-14
  • 2010-10-12
相关资源
最近更新 更多