2015-12-06 7 views
0

Я написал простой скрипт php для формы, протестировал его и работал как ожидалось. Но когда я фактически добавил скрипт в оригинальный проект, над которым я работаю, он внезапно прекратил работать? Я уверен, что это не имеет никакого отношения к скрипту php, поскольку он работал правильно, когда я его тестировал; так что в основном я думаю о том, что я, вероятно, неправильно написал атрибут действия? Я уверен, что это ошибка новобранец. В конце концов, я действительно новичок в php.Атрибут действия формы не работает должным образом

С уважением.

HTML код:

<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel"> 
    <div class="modal-dialog" role="document"> 
     <div class="modal-content"> 
      <div class="modal-header"> 
       <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> 
       <h4 class="modal-title" id="exampleModalLabel">New message</h4> 
      </div> 

      <div class="modal-body"> 
       <form action="contact.html" method="post"> 
       <div class="form-group"> 
        <label name="email" class="control-label">Email:</label> 
        <input type="text" class="form-control" id="recipient-name"> 
       </div> 
       <div class="form-group"> 
        <label name="phone" class="control-label">Phone:</label> 
         <input type="text" class="form-control" id="recipient-mobile"> 
       </div> 
       <div class="form-group"> 
        <label name="message" class="control-label">Message:</label> 
        <textarea class="form-control img-responsive" rows="5" id="messageText"></textarea> 
       </div> 
       </form> 
      </div> 

      <div class="modal-footer"> 
       <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
       <button type="button" id="resetText" class="btn btn-default">Reset</button> 
       <input type="button" value="Send message" name="send" class="btn btn-danger colorbg"/> 
       </div> 
     </div> 
    </div> 
</div> 

PHP код:

<?php 
if(isset($_POST['send'])){ 

    $to = '[email protected]'; 
    $subject = 'Solutions'; 
    $mail = $_POST['email']; 
    $phone = $_POST['phone']; 
    $message = $_POST['message']; 
    $mailHeader = "From: $mail \r\n Phone: $phone"; 
    $formcontent="Message: $message"; 

    if (!filter_var($mail, FILTER_VALIDATE_EMAIL)) { 
     echo "<script language='javascript'> 
       alert('E-mail address is not valid'); 
       var email = document.getElementById('recipient-name'); 
       email.className += ' border-red'; 
       </script>"; 
    } else { 
     echo "<script language='javascript'> 
       var email = document.getElementById('recipient-name'); 
       email.className = ''; 
       email.className += ' form-control'; 
      </script>"; 

     if (mail($to , $subject, $formcontent, $mailHeader)) { 

     echo "<script> 
     window.setTimeout(function() { 
      window.location.href = 'test.html'; 
     }, 3000); 
     </script>"; 

     } else { 
     echo "<script language='javascript'>alert('There was an error. Please try again.')</script>"; 
     } 
    } 
} 
?> 

Пожалуйста, обратите внимание, что я загрузил проект на моем сайте для того, чтобы на самом деле проверить скрипт, так что ссылка является то, например: website.com/project/index.html. И я изменил действие на action="script/contact.php", action="./script/contact.php, action="contact.php" не работал.

+0

Что вы имеете в виду, остановившись? 404? пустая страница? Ничего не произошло? Я думаю, что это '' должно находиться внутри тега 'form' с' type = "submit" ' – Berriel

+0

Ничего не происходит вообще –

+0

'

'вы указали Apache для обработки файлов .html' как PHP? Если нет, это ваша проблема. Либо вы, либо переименуете это в '.php'. –

ответ

0

Я не вижу никаких подарков. Или это где-то работает с JavaScript?

Кроме того, форма action = является html-файлом, если вы хотите, чтобы php работал там, вам понадобится .php-файл.

В html, который вы показываете, ничего не опубликовано, так как это называется «отправить». (if (isset ($ _ POST ['send'])))

+0

Я делаю, это в конце HTML. Кнопка ввода. –

+0

, но он находится за пределами ... – Santy

0

Есть две вещи, из-за которых это не работает.

  1. Кнопка «отправить» (или любая другая кнопка в этом случае) находится не внутри форм-тегов. Они могут быть снаружи, если вы присваиваете идентификатор форме и присваиваете входные данные вне формы, к этой форме.
  2. На самом деле нет кнопки отправки. У вас есть обычная кнопка. Он должен быть type="submit", а не type="button"type="reset" для кнопок сброса).

В HTML5 вы можете назначить входные данные форме, даже вне фактических тегов формы. Вы можете это сделать, назначив идентификатор форме (в этом примере, «myform»), а затем указав на свой вход form-атрибут, например.

<form id="myform" method="get" action="something.php"> 
    <input type="text" name="name" /> 
</form> 
<input type="submit" form="myform" /> 

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

+0

'' находится вне ''. не будет работать. –

+0

@ Fred-ii- В HTML5 вы можете присваивать идентификаторы формам и вводить значения вне формы, это было именно то, что я пытался сделать :-) – Qirel

+0

Я не понимаю, почему вы предлагаете GET метод здесь 'method =" get "', поскольку OP использует массивы POST. –

0

Я нашел решение здесь для аналогичной проблемы. Надеюсь, это подходящее место для моего ответа.

Я использую кнопки A-Z для фильтрации фамилий в 'listContacts.php'. Каждая кнопка запускает отправку.Представить работал с самого начала на

var $char=''; 
var $characterfilter=function charfilter($char){; 
    $('#coll').prop('value', $char); 
    var val2=$('#coll').val(); 
    $('#listcontacts').submit(); 
}; 
$('#a').click(function(){ 
    $characterfilter('a'); 
}); 

Проблема:

<form id='listcontacts' href='' title='use the tabulator to move in the form' style='position: relative; overflow:hidden; height:25em; width:95%' method='post' accept-charset='UTF-8' action='admin.php?listContacts'> 

Выключатель-функции в 'admin.php', как показано ниже управляет действиями:

switch ($action){ 
    case 'login': 
    login(); 
    break; 
    case 'logout': 
    logout(); 
    break; 
    case 'editService': 
    editService(); 
    break; 
    case 'deleteService': 
    deleteService(); 
    break; 
    case 'listContacts': 
    listContacts(); 
    break; 
    case 'newContact': 
    newContact(); 
    break; 
    case 'editContact': 
    editContact(); 
    break; 
    case 'deleteContact': 
    deleteContact(); 
    break; 
    default: 
    listServices(); 
} 

Когда я отправил форму, переключатель в «admin.php» всегда возвращал значение по умолчанию, поэтому я увидел форму «listServices.php» вместо отправки «listContacts» с помощью одной из кнопок filterbuttons.

Причина этого недостатка был: первый вызов «listContacts.php» была выполнена командой:

<a href='admin.php?action=listContacts' >List Contacts</a> 

так «действие» уже установлено в «listContacts» После удаления ' action = ... 'из формы, как показано ниже формы.

<form id='listcontacts' href='' title='use the tabulator to move in the form' style='position: relative; overflow:hidden; height:25em; width:95%' method='post' accept-charset='UTF-8'> 

Это была небольшая загадка, занявшая у меня несколько часов, и я надеюсь, что смогу помочь другим сэкономить время, разместив это.

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