2016-02-09 4 views
3

Здравствуйте, я создаю веб-сайт для клиента. Я разработал эту форму,PHP адрес перенаправления заголовка почты на основе вложенного оператора if

<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 варианта, чтобы выбрать из 1-ой, 2-ой Volvo Saab и 3 Audi
Теперь я хочу, чтобы перенаправить представление формы на основе выбора пользователя на различных сайтах
например facebook.com, если пользователь выбирает Volvo, Twiiter.com, если он выбирает Saab.

Я разработал следующий 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: [email protected]">[email protected]</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 независимо от того, какой вариант выбран

ответ

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") 
+0

Да, это решить эту проблему, я звала фактическое значение, как «Вольво» и «Сааб», но не HTML значение = «SAAB» Я заменил код $ cars2 = $ автомобили; а затем if ($ cars2 == "volvo") с небольшим «v» и теперь он работает, я не заменил ни одного другого кода. –

0

Очень короткий ответ, но вы настраиваете $ автомобили из $ _POST [ 'автомобили'] и ваш выбор вывешивает все значения, поэтому изменить

<select name="cars"> 

в

<select name="cars[]"> 

Таким образом вы получите массив $_POST['cars'] со всеми значениями в нем из вашего выбора. Иначе это будет просто разместить первый <option>

РЕДАКТИРОВАНИЕ

В другой ответ сказал, что вы определенно должны сделать $mail_success = mail(); в качестве функции почты() возвращает логическое значение. Тогда вы можете сделать if($mail_success) {}

EDIT 2 Добавить die; после header() - еще сценарий может продолжиться и привести слишком неожиданное поведение.

2

Функция почты имеет тип возвращаемого значения BOOL, поэтому вы должны использовать результат для вашей проверки:

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

Сравнение строк с == следует избегать. Для проверки равенства используйте strcmp('string1', 'string2') == 0.

Если вы изменили последнюю часть своего кода на использование strcmp, он должен работать.

Смежные вопросы