基于嵌套if语句的PHP邮件重定向头位置

时间:2016-02-09 12:34:57

标签: php wordpress email redirect

您好我正在为客户设计一个网站。 我设计了这个表格

    <form action="inc/email.php" method="POST" onSubmit="alert('Email send successfully!');">
    <div class="col-md-6">
        <input type="text" id="contact-name" name="contact-name" value="" placeholder="Your name" required/>
        <input type="email" id="contact-email" name="contact-email" value="" placeholder="Your email" required/>
        <input type="number" id="contact-phone" name="contact-phone" value="" placeholder="Your phone" required/>
    </div>
    <div class="col-md-6">
        <select name="cars">
            <option value="volvo">Volvo</option>
            <option value="saab">Saab</option>
            <option value="audi">Audi</option>
        </select>
    </div>
    <div class="col-md-12">
        <input type="submit" value="Send message"/></td>
    </div>
</form>

它有3种选择可供选择第一辆沃尔沃,第二辆萨博和第三辆奥迪 现在我想根据用户选择将表单提交重定向到不同的网站
例如facebook.com如果用户选择沃尔沃,Twiiter.com如果他选择萨博。

我为同样的设计了以下PHP代码

<?php
/*Getting submitted values from html form*/

$name = $_POST['contact-name'];
$email = $_POST['contact-email'];
$phone = $_POST['contact-phone'];
$cars= $_POST['cars'];
/* Generating Output HTML */

$output = '<html><body><div>';
$output .= '<h2 style="color: #49A020;">Newsletter Email</h2>';
$output .= '<p style="line-height: 28px;font-size: 16px; text-align: justify; color: #333;">Name: '.$name.'</p>';
$output .= 'Phone: <a style="line-height: 28px;font-size: 16px; text-align: justify; color: #333;" href="tel: '.$phone.'">'.$phone.'</a><br><br>';
$output .= 'Email: <a  style="line-height: 28px;font-size: 16px; text-align: justify; color: #333;" href="mailto:'.$email.'">'.$email.'</a>';
$output .= '</div><div>';

/*Signature */

$output .= '<hr style="border:1px solid #49A020;">';
$output .= '<p style="margin-top: 0px; margin-bottom: 0px;">Thanks & Regards,</p>';
$output .= '<p style="margin-top: 0px; margin-bottom: 0px;">South Post Fitness,</p>';
$output .= 'Phone: <a href="tel:416843 5925">(416) 843 5925</a><br>';
$output .='Email: <a href="maito: info@xx.com">info@xx.com</a>';
$output .= '</div></body></html>';

 $to = 'my email address here';  /* Receivers Email*/

$headers = "From: $email \r\n"; /*Headers*/
$headers .= 'MIME-Version: 1.0' . "\n"; /*Headers*/
$headers .= 'Content-Type: text/html; charset=ISO-8859-1' . "\r\n"; /*Headers*/

$subject = 'my subject here'; /* Subject */
mail($to, $subject, $output, $headers); /*Sending Mail*/
  if(mail) {
    if($cars=="Volvo"){
          header("Location: http://facebook.com");  /*Redirect to home after sucessfull submission*/
    }
    elseif($cars=="Saab"){
      header("Location: http://twitter.com");  /*Redirect to home after sucessfull submission*/
    }
    elseif($cars=="Audi"){
        header("Location: http://pintrest.com");  /*Redirect to home after sucessfull submission*/
    }
  }
  else {
  echo 'Error sending email'; /*If failed display error message */
  }

?>

但是这段代码只会将页面重定向到第一个链接,即facebook.com,无论选择哪个选项

3 个答案:

答案 0 :(得分:4)

mail($to, $subject, $output, $headers); /*Sending Mail*/
if(mail) {

应该是

$mail = mail($to, $subject, $output, $headers); /*Sending Mail*/
if($mail) {

请注意您的条件中缺少的变量分配和缺少的$符号。

除此之外,您检查大写字符串,但实际字符串是小写字母。

if($cars=="Volvo")

不同
if($cars=="volvo")

答案 1 :(得分:2)

mail函数的返回类型为bool,因此您应该使用结果进行检查:

$result = mail($to, $subject, $output, $headers);
if($result) {
    ...
}

应避免与==进行字符串比较。使用strcmp('string1', 'string2') == 0进行相等性检查。

如果您更改代码的最后一部分以使用strcmp,则应该可以使用。

答案 2 :(得分:0)

非常简短的回答,但是你要从$ _POST [&#39;汽车&#39;]设置$ car并且你的选择是发布所有值,所以更改

 <select name="cars">

 <select name="cars[]">

通过这种方式,您将从select中获取包含其中所有值的$_POST['cars']数组。否则它将首先发布<option>

修改

正如另一个答案所说你绝对应该做$mail_success = mail(); 函数mail()返回bool。 然后你可以做if($mail_success) {}

编辑2 die;之后添加header() - 否则脚本可能会继续并导致意外行为。