我为表单编写了一个简单的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">×</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.php
,action="contact.php"
无效。
答案 0 :(得分:0)
我没有看到任何提交。 或者是由JavaScript处理的?
另外,表单action =是一个html文件,如果你想让php在那里工作,你需要一个.php文件。
在您显示的名为&#34;发送&#34;的html中没有发布任何内容。 (if(isset($ _ POST [&#39; send&#39;])))
答案 1 :(得分:0)
有两件事使这不起作用。
type="submit"
,而不是type="button"
(和重置按钮type="reset"
)。在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'>
这是一个小小的谜题,花了我几个小时,我希望通过张贴这个来帮助别人节省时间。