我在我的网站上使用此代码(它包含在404.php中):
<?php
if (isset($_POST["op"]) && ($_POST["op"]=="send")) {
/******** START OF CONFIG SECTION *******/
$sendto = "myemail@gmail.com";
$subject = "Website Contact Enquiry";
/******** END OF CONFIG SECTION *******/
$message = $HTTP_POST_VARS['message'];
$headers = "From: $email\n";
$headers . "MIME-Version: 1.0\n"
. "Content-Transfer-Encoding: 7bit\n"
. "Content-type: text/html; charset = \"iso-8859-1\";\n\n";
$request = $_SERVER["REQUEST_URI"];
$self = $_SERVER["PHP_SELF"];
// Build the email body text
$emailcontent = "
-----------------------------------------------------------------------------
WEBSITE CONTACT ENQUIRY
-----------------------------------------------------------------------------
$request
$self
$message
";
if (!trim($message)) {
echo "<p>Please go back and type a Message</p><p><a href='javascript: history.go(-1)'>Click here to go back</a>.</p>";
}
// Sends out the email or will output the error message
elseif (mail($sendto, $subject, $emailcontent, $headers)) {
echo "<br><br><p><b>Thank You </b></p><p>We will be in touch as soon as possible.</p>";
}
}
else {
?>
这是我的表格
<form action="http://www.ahornblume.ch/404.php" method="post">
<INPUT NAME="op" TYPE="hidden" VALUE="send">
<textarea name="message" cols="25" rows="4" placeholder="Wenn Sie eine Antwort wünschen, vergessen Sie bitte ihre email Adresse nicht."></textarea><br>
<input name="submit" type="submit" value="Send Message">
</form>
我正在重定向我的htaccess文件中的所有404错误,如下所示:
ErrorDocument 404 /404.php
如果我转到ahornblume.ch/404.php
一切正常,我可以使用该表单发送电子邮件。
但是,如果我转到ahornblume.ch/something
,则联系表格不起作用。
答案 0 :(得分:2)
您的表单没有指定操作,因此它将提交到用于显示表单的网址。
如果是ahornblume.ch/404.php
,它将提交给404.php,它会起作用。
如果是ahornblume.ch/something
,则会导致404错误,只会显示404.php页面,但表单帖子将被丢弃。
要修复,请指定具有绝对路径/404.php
答案 1 :(得分:0)
如果您要包含联系表格,您可能需要先查看链接!这可能只是一个错误的链接。避免使用action =“../ php / contact_form.php”之类的东西。使用include / require / require_once,我总是选择$root = realpath($_SERVER["DOCUMENT_ROOT"]);require_once($root."/path/to/file/myfile.php");
因此,如果联系表单正在显示,但是当您单击提交时没有任何反应,原因很可能是服务器找不到“动作”php文件。您有两种选择:
1:而不是<form action="../your_file.php"
使用完整链接。 <form action="http://yoursite.com/path/to/your/file/yourfile.php"
2.始终使用root for include,require和require_once并使用其他变量,如$url=http://www.yoursite.com
,并且只要需要插入链接,请使用PHP,如下所示:<a href="<?php echo $url."/path/otherfile.php";?>">This is a link</a>
。它可能看起来很麻烦,但在某些情况下它会让你的生活变得更加轻松。切换到https或任何类型的全局修改意味着您只需要更改1个变量$ url。然后,每个链接都会自动更新。如果你知道你不需要这个,那么第1号选项就可以了。
答案 2 :(得分:0)
您是否正在使用javascript / ajax / jquery进行表单提交?如果您发送类似的发布请求,请检查.js文件中的链接或您拥有代码的位置,并使用绝对路径作为发布请求。