“提交”按钮返回到索引页,而不是发送数据


Submit button returns to index page instead of sending data

这是网站的链接-http://zigzagadvertising.com.ph/aleemguiapal/page/2/

我在wordpress中的表格有问题。每当我点击提交按钮时,它就会返回索引页面,而不是将数据发送到电子邮件地址

这是我放在Header.PHP顶部的PHP代码。这段代码放在标签之前

<?php 
$error=false;
$sent=false;
if(isset($_POST['submit'])) {
if(empty($_POST['firstname']) || empty($_POST['email']) || empty($_POST['message'])) {
$error = true;
} else {
 $to = "clestcruz@gmail.com";
 $name = trim($_POST['firstname']);
 $email = trim($_POST['email']);
 $comments = trim($_POST['message']);
 $subject = "Contact Form";
 $messages = "Name: $firstname 'r'n Email: $email 'r'n Comments: $message";
 $headers = "From:" . $name;
 $mailsent = mail($to, $subject, $messages, $headers);
 if($mailsent){
     $sent= true;
}
}
}
?>

这是我的自定义页面(联系页面)

<!--CONTACT-->
<div  class="container">
<div  class="eleven columns contact">
     <div id="contact-container" class="eleven columns alpha omega contact">
         <h2>contact us</h2>
         <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras non lacus vel nulla molestie cursus quis a urna. Donec sodales venenatis consequat. Sed tristique elit nec diam rhoncus adipiscing</p>
     </div>
     <div id="note-container" class="eleven columns alpha omega note">
         <p>All fields marked with an asterisk(<span class="asterisk">*</span>) are required</p>
     </div>
     <div class="contactform">
     <form id="register-form" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">

     <?php if($error == true) { ?>
     <p class="error"> There are some misisng fields.</p>
     <?php } if($sent == true) { ?>
     <p class="sent">Thank you for sending your message</p><?php } ?>

         <div class="four columns alpha contact-form">
         <label>prefix</label>
         <input type="text"  />
         <label><span class="asterisk">*</span>first name</label>
         <input type="text" name="firstname"/>
         <label><span class="asterisk"></span>middle name</label>
         <input type="text" name="middlename"/>
         <label><span class="asterisk"></span>last name</label>
         <input type="text" name="lastname"/>
         <label><span class="asterisk">*</span>email address</label>
         <input type="text" name="email"/>
        </div>
        <div class="four columns contact-form">
         <label>phone</label>
         <input type="text" />
         <label>street</label>
         <input type="text" />
         <label><span class="asterisk"></span>zip</label>
         <input type="text" name="zip" />
         <label><span class="asterisk"></span>city</label>
         <input type="text" name="city" />

        </div>
        <div class="clearfix"></div>
        <div class="eleven columns contact-form alpha omega">
        <label><span class="asterisk"></span>subject</label>
        <input type="text" name="subject"/>
        <label><span class="asterisk">*</span>message</label>
        <textarea name="message"></textarea>

        <input class="contact-button" type="submit" name="submit" value="submit" />
        <input class="contact-button" type="reset" value="reset" />
        </div>
     </form>
     </div>
<div class="four columns">
</div>
</div>

 <?php get_sidebar(); ?>
</div>   

<?php get_footer(); ?>

</body>
</html>

我试着制作了一个联系人页面,并将其上传到一个免费的托管网站,它似乎运行正常。我甚至得到了表格中的数据或值。不确定我的表格不能正常工作的原因是否是因为wordpress本身。

如果您只想将表单提交到当前页面,则将方法设置为空字符串:

<form action="" method="POST">

就我个人而言,我会将header.php中的逻辑分离为一个单独的文件,以便进行更干净的代码组织。在单独的文件中,您可以使用

header('location: http://whatever.com/contact');

以在处理完表单数据后重定向。

$_SERVER['HP_SELF']是指当前执行的脚本的文件名。在这种情况下,当前执行的脚本是您的自定义页面(联系人页面)。如果这与您提到的header.php不是同一个文件,那么表单不会提交到您想要的位置。

如果您希望在表单目标处提交数据,我建议您将header.php明确指定为表单目标,然后在表单成功提交后重定向到您想要的位置。