我的联系表格具有以下html和php代码。首先,当网站被实时上传时,它就可以工作了。几天后,我注意到联系表单在提交时给出了403禁止的错误。我已将文件许可权更改为755,并且工作了很短的时间,然后又回到了403禁止访问。不知道我的php或html是否有问题。请帮忙。
HTML代码:
<form action="email.php" method="post">
<div class="col-md-12">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<input type="text" class="form-control" name="first-name" placeholder="First Name">
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<input type="text" class="form-control" name="last-name" placeholder="Last Name">
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<input type="text" class="form-control" name="email" placeholder="Email">
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<input type="number" class="form-control" name="phone" placeholder="Phone">
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<textarea name="message" class="form-control" id="" cols="30" rows="7" placeholder="Message"></textarea>
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<input type="submit" value="Send Message" class="btn btn-primary">
</div>
</div>
</div>
</div>
</form>
PHP代码:
<?php
$firstname = $_POST['first-name'];
$lastname = $_POST['last-name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$message = $_POST['message'];
$formcontent="From: $firstname $lastname \n Email: $email \n Phone: $phone
\n Message: $message";
$recipient = "main@yaxcheadventuretours.com";
$subject = "Contact Form from $firstname $lastname";
$mailheader = "From: $firstname $lastname $email \r\n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
echo'
<script>
window.onload = function() {
alert("Thank You for reaching out to us!");
location.href = "contact.html";
}
</script>
';
?>
答案 0 :(得分:0)
10.4.4 403禁止
服务器理解了该请求,但拒绝执行该请求。授权将无济于事,不应重复该请求。如果请求方法不是HEAD,并且服务器希望公开为什么未满足请求,则应在实体中描述拒绝原因。如果服务器不希望将此信息提供给客户端,则可以使用状态代码404(未找到)代替。
该免责声明似乎包含多个HTML标记,并且显然它们在页面上未转义地显示。
我的疯狂猜测是,服务器上安装了一个拒绝输入的软件(可能是mod_security),因为它认为这是尝试执行XSS攻击。您可以通过暂时删除<和>符号,然后再将其粘贴到文本区域中来确认(或拒绝)该假设。
答案 1 :(得分:0)
尝试查看服务器错误日志,这将对您有帮助,您可以从那里获取详细信息
此外,您正在重定向到contact.html页面
location.href = "contact.html";
检查.htaccess是否对.html文件有任何限制
如果您没有看到此文件,则可以更改设置以查看隐藏的文件。
答案 2 :(得分:0)
我有同样的问题,我用js编码textarea值并按以下方式发送来解决:
<form onsubmit="return validateForm()" method="post"
action="...">
<textarea id="text0" name="text0"></textarea>
<input type="hidden" name="t0" id="t0"/>
<button id="form_submit_btn" type="submit">
create
</button>
</form>
对内容进行编码,不要忘了清晰的textarea值
function validateForm() {
var text0 = document.getElementById('text0');
var t0 = document.getElementById('t0');
t0.value = b64EncodeUnicode(text0.value);
$("#text0").empty();
return true;
}
function b64EncodeUnicode(str) {
return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g,
function toSolidBytes(match, p1) {
return String.fromCharCode('0x' + p1);
}));
}
最后,在php中获取数据并解码
$t0 = $_POST['t0'];
$t0 = base64_decode($t0);
您也可以阅读此答案:link
如果不起作用,请在提交文本或将其设置为错误格式之前清空您的文本