我有一些带有联系表单的简单HTML网站,可以通过PHP发送电子邮件。它们都很好,没有任何问题。我正在尝试使用相同的联系表单PHP脚本构建另一个网站。但是,当用户提交表单时,他们没有收到成功消息,而是得到了“内部服务器错误”消息。 PHP脚本是相同的(验证码除外)。 HTML是相同的(除了验证码键)和某些CSS样式。
下面是HTML:
const dotenv = require('dotenv');
/* Specify path to .env file */
dotenv.config({ path: 'src' });
下面是scripts / contact.php文件中的PHP代码:
<form action="scripts/contact.php" method="post" target="resultMsg" style="width:300px; margin:auto;">
<input class="formInput" type="text" name="name" id="name" placeholder="Name"/>
<br/><br/>
<input class="formInput" type="text" name="email" id="email" placeholder="Email"/>
<br/><br/>
<textarea class="formInput" name="message" id="message" placeholder="Message"></textarea>
<br/><br/>
<div style="margin:auto;width:fit-content">
<div class="g-recaptcha" data-sitekey="xxxxxxxxxxxxxxxx"></div>
</div>
<br/><br/>
<input class="send" type="submit" value="Send"/>
</form>
<br /><iframe name="resultMsg" id="resultMsg" scrolling="no" style="border:0; height:30px; width:100%"></iframe>
上周我对此有疑问,但是托管公司在htaccess文件中添加了<?php
if(isset($_POST['g-recaptcha-response'])){
$captcha=$_POST['g-recaptcha-response'];
}
if(!$captcha){
echo("<p style='color:white; width:100%; text-align:center;'>Error: Please check the captcha box.</p>");
exit;
}
$secretKey = "xxxxxxxxxxxxxxxxxxxxxxxx";
$ip = $_SERVER['REMOTE_ADDR'];
$url = 'https://www.google.com/recaptcha/api/siteverify?secret=' . urlencode($secretKey) . '&response=' . urlencode($captcha);
$response = file_get_contents($url);
$responseKeys = json_decode($response,true);
if($responseKeys["success"]) {
$myemail = "myemail@ymail.com";
$subject = "Contact Form Submission";
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$sendMessage = "CONTACT FORM SUBMISSION
NAME:
$name
EMAIL ADDRESS:
$email
MESSAGE:
$message";
mail($myemail, $subject, $sendMessage);
echo("<p style='color:white; width:100%; text-align:center;'>Thank you for your email!</p>");
} else {
echo("<p style='color:white; width:100%; text-align:center;'>Error: message not sent, please refresh the browser.</p>");
}
exit();
?>
并对其进行了修复。由于某种原因,他们还在网站目录的整个行中添加了额外的htaccess文件。然后,我想我可能不小心删除或更改了某些htaccess文件,但现在它不再起作用。哪个htaccess文件中需要什么才能正常工作?任何想法为什么它不再起作用了?谢谢
答案 0 :(得分:0)
事实证明,问题很简单,就像PHP脚本的文件权限不正确一样。将脚本的权限更改为644可解决此问题,而不再出现“内部服务器错误”。