0

我的网站是一个带有导航的寻呼机,它链接到同一文档中页面的不同部分。所以我的联系方式是 stie.com/#contact 而不是 site.com/contact.html

我使用链接到 mail.php 的 post 方法以 html 编码我的联系表格。点击提交按钮后,我被重定向到 site.com/mail.php,其中显示“您的消息已成功发送”。由于我没有contact.html文件可以转换为contact.php并将php代码放在我希望显示成功消息的位置,因此如何获取它以使其显示在联系表单的顶部?

<div class="row">
<div class="12u">
<form method="post" action="mail.php">
<div>
<div class="row half">
<div class="6u">
<input type="text" name="name" id="name" placeholder="Name" />
</div>
<div class="6u">
<input type="email" name="email" id="email" placeholder="Email" />
</div>
</div>
<div class="row half">
<div class="12u">
<input type="text" name="subject" id="subject" placeholder="Subject" />
</div>
</div>
<div class="row half">
<div class="12u">
<textarea name="message" id="message" placeholder="Message"></textarea>
</div>
</div>
<div class="row">
<div class="12u">
<a href="#" class="button form-button-submit">Send Message</a>
<a href="#" class="button button-alt form-button-reset">Clear Form</a>
</div>
</div>
</div>
</form>
</div>

我的邮件.php

<?php

//GET INFO FROM CONTACT FORM
$name = $_POST['name'];
$email = $_POST['email'];
$subject = $_POST ['subject'];
$message = $_POST['message'];
$from .= $_POST ['email'];
$to = 'email@site.com';

// compose headers
$headers = "From: $email\r\n";
$headers .= "Reply-To: $email\r\n";

//POST SUBMIT
if ($_POST['sumbit']);
    if ($name != '' && $subject != '' && $message !='' && $email != '') {                
            if (mail ($to, $subject, $from, $message, $headers)) { 
            echo '<p>Your message has been sent!</p>';
        } else { 
            echo '<p>Something went wrong, go back and try again!</p>'; 
        }
    } else {
        echo '<p>Please fill in all required fields!!</p>';
    }
?>
4

3 回答 3

1

您可以在 PHP 中使用 URL 参数:

<?php

$confDisplay = 'display:none;';

// if the url param exists, display confirmation
if(isset($_GET["confirm"]) && $_GET["confirm"]==true){
  $confDisplay = 'display:inline;';
}

?>

    ...
    <div style="<?php echo $confDisplay; ?>">
    Your form has been submitted!
    </div>
    ...

只需将您的表单操作 URL 设置为与?confirm=true末尾相同的页面。

于 2013-11-12T21:50:12.887 回答
1

使您的操作字段为空。Putaction=""而不是action="mail.php"Then 将您的 mail.php 内容包含在您的联系页面中。如您所知,您也必须将该页面保存为 PHP;例如,mycontactform.php。通过这种方式,您可以更好地控制“您的消息已提交”消息的内容和格式。如果您将 mail.php 分开,则无法在 mycontactform.php 中处理部门。

您正在使用的 PHP 代码的安全性和漏洞应该在您完成页面编码并测试它以您想要的格式启动并运行后解决,因为它需要对 PHP 约定和用法进行更深入的研究。来源:一套使用HTML5、CSS3和PHP的分步教程(8)

于 2014-01-22T13:42:39.553 回答
0

请注意,您的脚本mail.php容易受到标头注入攻击。您需要转义变量 $_POST['email']。您必须删除特殊字符\n\r。这可以通过使用str_replace函数轻松实现。

于 2013-11-13T00:45:17.570 回答