2014-01-31 7 views
0

Привет, я создал эту форму для отправки сообщений.
Я читал это много раз, и я не нашел ничего плохого. Любой отзыв?
Когда я нажимаю «enviar» (отправить), ничего не происходит. Я создал новое поле опции формы, относящееся к «теме» («assunto»).
ps.:plz игнорировать «[email protected]», в моих тестах я использую реальный.Форма контакта Php с подтверждением не работает

Надеюсь, вы сможете помочь!

Это код PHP, который я вставил перед тегом формы. Это код, который я видел здесь, но я изменил его, чтобы работать на моем сайте.

<?php $page = 'Contact'; 


    $to = "[email protected]"; 
    //$subject = "Company - Contato"; 

    if (isset($_POST['submit'])) { 

     // Error Checking 
     $errors = array(); 

     // Name Check 
     if (empty($_POST['name'])) { 
      $errors[] = 'Preencha corretamente o campo nome.'; 
     } 

     // Email Check 
     if (empty($_POST['email'])) { 
      $errors[] = 'Preencha corretamente o campo email.'; 
     } 

     // Assunto Check 
     if (empty($_POST['assunto'])) { 
      $errors[] = 'Preencha corretamente o campo assunto.'; 
     } 

     // Message check 
     if (empty($_POST['message'])) { 
      $errors[] = 'Preencha corretamente o campo mensagem'; 
     } 

     // If no errors - send email 
     if (empty($errors)) { 

      $name   = htmlentities($_POST['name']); 
      $email   = htmlentities($_POST['email']); 
      $assunto  = htmlentities($_POST['assunto']); 

      $subject = 'Company - Contato'; 

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

      $message = $_POST['message']; 

      $message = '<html><body>'; 
      $message .= "<br />"; 
      $message .= "<br />"; 
      $message .= '<div style="font: 14px Arial, sans-serif; color: #333;">'; 
      $message .= "<b>Nome:</b> $name" . "\r\n"; 
      $message .= "<br />"; 
      $message .= "<b>Email:</b> $email" . "\r\n"; 
      $message .= "<br />"; 
      $message .= "<b>Assunto:</b> $assunto" . "\r\n"; 
      $message .= "<br />"; 
      $message .= "<b>Mensagem:</b>"; 
      $message .= "<br />"; 
      $message .= $_POST['message']; 
      $message .= "<br />"; 
      $message .= '</div>'; 
      $message .= "</body></html>"; 

      // Send Email 
      mail($to,$subject,$message,$headers); 

      // Set sent variable to allow sent message to be displayed 
      $sent = 'Sent'; 

     } 

    } 
    ?> 

    <?php if (!empty($errors)) { ?> 
     <div class="error"> 
      <ul> 
       <?php 

       foreach ($errors as $error) { 
        echo '<li>'.$error.'</li>'; 
       } 

       ?> 
      </ul> 
     </div> 
    <?php } ?> 

    <?php if(isset($sent)) { ?> 
     <div class="success"> 
      <p>Sua mensagem foi enviada com sucesso.</p> 
     </div> 
    <?php } ?> 



Ниже я вставили саму форму. Как вы можете видеть, я использовал те же «имена», но это не работает. :/

<form name="htmlformContato" class="form-horizontal" action="" accept-charset="UTF-8" method="post"> 


    <div class="col-sm-6 col-xs-12"> 

       <div class="form-group col-sm-12"> 
       <label for="inputNome" class="control-label">Nome *</label> 
       <input id="inputNome" type="text" class="form-control" name="name" value="<?php echo $_POST['name']; ?>" /> 
       </div> 

       <div class="form-group col-sm-12"> 
       <label for="inputEmail" class="control-label">Email *</label> 
       <input id="inputEmail" type="text" class="form-control" name="email" value="<?php echo $_POST['email']; ?>" /> 
       </div> 


       <div class="form-group col-sm-12"> 
       <label for="inputAssunto" class="control-label">Assunto *</label> 
       <select class="form-control" name="assunto"> 
       <option value="SelecioneAssunto">Selecione o assunto</option> 
       <option value="Duvidas">Dúvidas</option> 
       <option value="Sugestoes">Sugestões</option> 
       <option value="Reclamacoes">Reclamações</option> 
       <option value="Outro">Outro</option> 
       </select> 
       </div>         

    </div> 


    <div class="col-sm-6 col-xs-12"> 

       <div class="form-group col-sm-12"> 
       <label for="inputMensagem" class="control-label">Mensagem *</label> 
       <textarea class="form-control" rows="9" id="inputMensagem" name="message"><?php echo $_POST['message']; ?></textarea> 
       </div> 

    </div> 

    <div class="col-xs-12"> 

       <div class="form-group col-xs-12">   
       <button type="submit" class="btn btn-bodyupA">Enviar</button>   
       </div> 

    </div>   

    </form>              
+0

Это может быть глупый вопрос, но сервер, на котором вы хостинг веб-сайт имеет PHP установлен правильно? Вы проверили своего инспектора браузеров для дальнейшей диагностики с помощью вкладок сети/консоли? –

ответ

1

Не имеет значения, если вы используете input или button тех пор, пока у них есть type="submit" но вы должны установить name, так как у вас есть if (isset($_POST['whatevername'])) {

<button name="whatevername" type="submit" class="btn btn-bodyupA">Enviar</button> 

или

<input name="whatevername" type="submit" class="btn btn-bodyupA" value="Enviar"> 

Либо все будет работать нормально.

Также <button> vs. <input type="button" />. Which to use?

+0

Я думаю, что он использует кнопку, потому что у него есть CSS, который применяет правила ко всем элементам HTML кнопки типа, который, я думаю, не будет работать, если это 'input type = button'. Исправьте меня, если неправильно –

+0

@RoyalBg просто хотел уточнить, что они оба работают как ожидалось и представляют форму. – Ergec

+0

Добавление названия решило проблему! :) Все, если сейчас прекрасно. Протестировано и работает. Оба варианта работают, ввод или кнопка. Я также изменил кодировку на UTF-8, чтобы можно было использовать специальные символы. Спасибо всем! – Alexandre

4
<button type="submit" class="btn btn-bodyupA">Enviar</button> 

должно быть:

<input type="submit" value="Enviar" class="btn btn-bodyupA"> 
+0

На самом деле тег «кнопка» не является проблемой, потому что это тег начальной загрузки. Во всяком случае, я изменил его для ввода и что-то случилось. – Alexandre

+0

@Alexandre В обоих случаях ничего не произойдет из-за атрибута name. Ваш блок окружен 'if (isset ($ _ POST ['submit']))' но не поле с именем отправки присутствует –

0

добавить имя = «отправить»

<button type="submit" name="submit" class="btn btn-bodyupA">Enviar</button> 
+0

Думал, что это было очень понятно, потому что у него есть поле имени во всех его других элементах формы. – Ant

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