2012-02-19 117 views
0
我使用在我的网站验证码

(它包含在404.php):自定义404不能正常工作

<?php 
if (isset($_POST["op"]) && ($_POST["op"]=="send")) { 

/******** START OF CONFIG SECTION *******/ 
    $sendto = "[email protected]"; 
    $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> 

我重定向所有的404错误在我的htaccess的文件像这样:

ErrorDocument 404 /404.php 

如果我去ahornblume.ch/404.php一切正常,我可以使用的表格发送EMAIL。 LS。 但是,如果我去ahornblume.ch/something联系表格不起作用。

回答

2

您的表单没有指定的操作,因此它将提交到用于显示表单的URL。

ahornblume.ch/404.php的情况下,它将提交到404.php,它将工作。

ahornblume.ch/something的情况下,它将导致404错误,只显示404.php页面,但表单文章将被丢弃。

要解决,你在使用JavaScript/AJAX/jQuery的的表单提交绝对路径/404.php

+0

听起来不错,但如果我在表单中添加动作,它仍然不起作用...不知道为什么 – Lorof 2012-02-19 01:57:27

+0

@Lorenz在您添加动作后,您的网站似乎可以正常工作? – 2012-02-19 02:20:13

+0

我正在编辑包含(“文件”),它使用404.php文件的缓存版本......在我注意到所有东西都工作之后)。谢谢! – Lorof 2012-02-19 02:20:55

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用于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就可以。

+0

别人说这是因为我缺少一个动作属性。您能否请回顾上面的代码并告诉我要改变什么? – Lorof 2012-02-19 02:04:38

0

指定一个动作?如果您发送了这样的帖子请求,请检查.js文件中的链接或您拥有代码的任何位置,并为帖子请求使用绝对路径。

+0

这是所有的PHP。我包含了上面的代码。 – Lorof 2012-02-19 02:03:38

相关问题