2015-12-06 28 views
0

我为表单编写了一个简单的php脚本,测试了它,并按预期工作。但是当我真的将脚本添加到我正在处理的原始项目中时,它突然停止工作?我确信它与php脚本无关,因为它在我测试时正常工作;所以基本上我在想的是我可能写了action属性是错误的?我很确定这是一个菜鸟的错误。最后,我真的很新的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?空白页?什么都没发生?我觉得这个'<输入名称=“发送”>'应该与'类型=“提交”' – Berriel

+0

什么也没有发生在所有 –

+0

'<形式行动=“contact.html”方法=“邮报”'form'标签内>你是否指示Apache将'.html'文件视为PHP?如果不是,那就是你的问题。要么你做,要么将它重命名为'.php'。 –

回答

0

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

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

在您展示的名为“send”的html中没有发布任何内容。 (if(isset($ _ POST ['send'])))

+0

我这样做,它在HTML的末尾。输入按钮。 –

+0

但它的

... – Santy

0

有两件事情使这不起作用。

  1. “提交”按钮(或任何其他按钮)不在form-tags中。他们可以在外面,如果您为窗体分配一个ID并在表单外分配输入,则将该窗体分配给该窗体。
  2. 实际上并没有提交按钮。你有一个常规的按钮。它应该是type="submit",而不是type="button"(和type="reset"用于重置按钮)。

在HTML5中,您可以将输入分配给表单,即使在实际的表单标签之外。您可以通过为表单分配一个ID(在本例中为“myform”),然后在您的输入上指定form-attribute,如下所示。

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

还,因为其他答案已经指出,该行动的目标一个.html文件,这在一般的配置不会解析PHP,但显示为文字。

+0

'外'这是外''。将无法工作。 –

+0

@弗雷德-II-在HTML5中,你可以分配ID,以形式,具有形式之外的输入值,这正是我试图让:-) – 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'中的Switch总是返回默认值,所以我在使用其中一个过滤按钮提交'listContacts'后,看到了'listServices.php'的形式。

这样做的原因缺陷是:到“listContacts.php”第一次调用已被命令执行:

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

所以“行动”已经被设置为“listContacts” 删除'后action = ...'来自formcall,如下面的表单正在工作。

<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'> 

这是一个小的难题,我花了几个小时,我希望我可以帮助别人张贴这节省了时间。