表单操作属性无法正常工作

时间:2015-12-06 20:02:30

标签: php html

我为表单编写了一个简单的php脚本,对其进行了测试,并按预期工作。但是当我实际将脚本添加到我正在处理的原始项目中时,它突然停止工作了?我确信它与php脚本无关,因为它在测试时工作正常;基本上我在想的是我可能写的action属性错了?我很确定这是一个菜鸟的错误。最终,我真的是新手。

问候。

HTML code:

<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 = 'domain@mail.com';
    $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.phpaction="contact.php"无效。

3 个答案:

答案 0 :(得分:0)

我没有看到任何提交。 或者是由JavaScript处理的?

另外,表单action =是一个html文件,如果你想让php在那里工作,你需要一个.php文件。

在您显示的名为&#34;发送&#34;的html中没有发布任何内容。 (if(isset($ _ POST [&#39; send&#39;])))

答案 1 :(得分:0)

有两件事使这不起作用。

  1. &#34;提交&#34;按钮(或任何其他按钮)不在表单标签内。如果您为表单指定了ID并将表单外的输入分配给该表单,那么可以在外面。
  2. 实际上并没有提交按钮。你有一个常规按钮。它应该是type="submit",而不是type="button"(和重置按钮type="reset")。
  3. 在HTML5中,您可以为表单分配输入,甚至可以在实际的表单标记之外。您可以通过为表单分配ID(在此示例中为&#34; myform&#34;),然后在输入中指定form - 属性,就像这样做。

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

    另外,正如另一个答案已经指出的那样,你的行动目标是.html文件,在正常配置下,它不会解析PHP,而是将其显示为文本。

答案 2 :(得分: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'中的Switch总是返回默认值,所以在使用其中一个过滤器按钮提交'listContacts'后,我看到了'listServices.php'形式。

这个漏洞的原因是:第一次调用'listContacts.php'已被命令执行:

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

所以'action'已经设置为'listContacts' 从formcall中删除'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'>

这是一个小小的谜题,花了我几个小时,我希望通过张贴这个来帮助别人节省时间。