2015-02-24 2 views
0

В настоящее время я работаю над созданием полностью функциональной формы контакта с использованием структуры Bootstrap и PHP. Я получаю тестовые письма из формы, но она не отображает контент так, как я его понял, и у меня возникают другие проблемы.Контактная форма не возвращает правильную информацию

Во-первых, отправленное пользователем электронное письмо отображается как принимаемое с хоста моего сайта. Он также не включает имя человека, о котором я думал, что я включил в моем PHP

Screenshot of email field returned as number

Вот мой код contact.php и форма в моем файле index.html

<?php 

$to = '[email protected]'; 
$name = $_POST['name']; 
$email = $_POST['email']; 
$subject=$_POST['subject']; 
$message = $_POST['msg']; 

if ($_POST){ 
mail($to, $subject, $message); 
$confirm= "Your email was sent successfully!"; 
echo "<script type='text/javascript'>confirm('$confirm');</script>"; 
} 
else { 
    $error_msg= "All fields are required!"; 
    echo "<script type='text/javascript'>alert('$error_msg');</script>"; 
} 
?> 

index.html

<form class="form-horizontal" role="form" action="contact.php" method="post"> 
       <div class="modal-header"> 
        <h2>Contact</h2> 
       </div> 

       <div class="modal-body"> 
       <!--name--> 
        <div class="form-group"> 
         <label for="name" class="col-sm-2 control-label">Name</label> 
         <div class="col-sm-10"> 
         <input type="text" class="form-control" name="name" id="name" placeholder="First and Last Name"> 
         </div> 
        </div> 
       <!--email--> 
        <div class="form-group"> 
         <label for="email" class="col-sm-2 control-label">Email</label> 
         <div class="col-sm-10"> 
         <input type="email" class="form-control" name="email" id="email" placeholder="[email protected]"> 
         </div> 
        </div> 
       <!--subject--> 
       <div class="form-group"> 
         <label for="subject" class="col-sm-2 control-label">Subject</label> 
         <div class="col-sm-10"> 
         <input type="text" class="form-control" name="subject" id="subject" placeholder="Enter subject here..."> 
         </div> 
        </div> 
       <!--message--> 
        <div class="form-group"> 
         <label for="msg" class="col-sm-2 control-label">Message</label> 
         <div class="col-sm-10"> 
         <textarea class="form-control" rows="4" name="msg" id="msg" placeholder="Enter message here..."></textarea> 
         </div> 
        </div> 

       </div> 

       <div class="modal-footer"> 
        <a class="btn btn-default" data-dismiss="modal">Close</a> 
        <button type="submit" class="btn btn-primary">Send</button> 
       </div> 
      </form> 

Другая непреднамеренная проблема в том, что как только страница была отправлена, пустая страница (contact.php) загружаются. Я подумал, глядя на мой код, вместо этого появляется всплывающее окно javascript или подтверждение. Я новичок в этом, извиняюсь, если это глупые вопросы.

Благодаря -К

+3

Простой ответ: используйте правильные заголовки и действительный адрес 'From:'. Прочтите руководство http://php.net/manual/en/function.mail.php –

+0

Вы ничего не делаете с именем или адресом электронной почты в contact.php. Что касается javascript, который не работает, скорее всего, вы не создаете правильный HTML-документ, и поэтому он не будет работать. Сделайте источник просмотра и посмотрите, как выглядит HTML при отправке. – Halfstop

+1

И просто принимая то, что пользователь вводит в форму и использует ее, не проверяя, что она созрела для проблем безопасности. – Halfstop

ответ

1

Прежде, вы не из определенных в вашем заголовке. Вам нужен

$headers = "From: [email protected]_domain.com\r\n"; 
mail($to,$subject,$message,$headers); 

Вы также можете изменить заголовок для отправки HTML сообщения, которое желательно в большинстве случаев в дополнении к установке от и куб.сма: копирки или ОЦК: слепая копия адреса электронной почты.

// Always set content-type when sending HTML email 
$headers = "MIME-Version: 1.0" . "\r\n"; 
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n"; 

// More headers 
$headers .= 'From: <[email protected]>' . "\r\n"; 
$headers .= 'Cc: [email protected]' . "\r\n"; 

Получить этот код в вашей инструкции if. Я также заметил, у вас есть

else { 
    $error_msg= "All fields are required!"; 

Даже если есть только одно поле передается как $ _POST метод, оператор еще не проверка, если все поля были переданы. Вы должны разорвать этот вниз или проверить поля индивидуально или сделать это с проверкой поля JavaScript на стороне клиента.

Что такое функция подтверждения javascript? можете ли вы опубликовать его здесь? если вы ищете только предупреждение, вы можете прямо вставить функцию оповещения между тегами скрипта.

+0

Спасибо, поэтому я передал бы $ name <$email> в переменную заголовков? '$ from =" От: $ name <$email> \ r \ nВернуться пути: $ email "; $ subject = "Сообщение отправлено с использованием вашей контактной формы"; mail ("[email protected]", $ subject, $ message, $ from); ' http://www.w3schools.com/jsref/met_win_confirm.asp – kho429

+0

да вы бы. вы должны сделать это так: $ name. ' <'.$email.'> '; вы показываете последний аргумент в заголовке почтовой функции $, так как вы можете добавить другие вещи, такие как html-адрес электронной почты или когда вы решите добавить cc: или bcc: в заголовок $, а не просто определить из: имя и адрес электронной почты – unixmiah

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