0

我正在尝试通过自定义页面模板提交表单,但问题是它仅适用于form action="<?php the_permalink() ?>"并且我需要提交表单并将其重定向到类似这样的内容form action="<?php bloginfo('url')?>/message-sent?id=<?php the_ID() ?>"

完整代码:

<?php 
$emailError = '';
if(isset($_POST['submitted'])) {

            $email = trim($_POST['email']);



                //setup self email address
                $emailTo = $email; 


            $subject = "[reminder] Don't forget to download " . get_the_title();
            $body = "Name: $name \n\nEmail: $email \n\nComments: $comments";
            $headers = 'From: Myemail reminders <no-reply@xyz.com>' . "\r\n";
            wp_mail($emailTo, $subject, $body, $headers);
            $emailSent = true;

} ?>




<section class="box grid_9 list_posts">
<div class="inner">
                <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<div <?php post_class() ?> id="post-<?php the_ID(); ?>">
<div class="entry-content">
<div class="contact-form clearfix">
                            <?php if(isset($emailSent) && $emailSent == true) { ?>
<div class="thanks">
<?php _e('Thanks, your email was sent successfully.', 'framework') ?>
</div>
                            <?php } else { ?>
                                <?php the_content(); ?>
                                <?php if(isset($hasError) || isset($captchaError)) { ?>
<p class="error"><?php _e('Sorry, an error occured.', 'framework') ?>

                                <?php } ?>






<form action="<?php the_permalink()?>" id="contactForm" method="post">
<ul class="contactform">



<li>
                                            <input type="email" name="email" id="email" value="<?php if(isset($_POST['email']))  echo $_POST['email'];?>" class="required requiredField email" required="required" />
                                        </li>

<li class="buttons">

                                            <input type="hidden" name="submitted" id="submitted" value="true" />
                                            <input type="submit" value="Remind Me!"></input>
                                        </li>
</ul></form>






                            <?php } ?></div>
</div>
</div>
                    <?php endwhile; else: ?>
<div id="post-0" <?php post_class() ?>>
<h1 class="entry-title"><?php _e('Error 404 - Not Found', 'framework') ?></h1>

</div>
                <?php endif; ?></div>
</section>

我在日志中没有 php 错误,页面重定向成功,但没有发送电子邮件。使用 the_permalink 时,一切正常。

4

2 回答 2

0

也许你忘了把“ .php ”放在你的/message-sent?id=xxx文件末尾,即/message-sent.php?id=xxx

另一个想法:过滤用户输入总是一个好主意,因为你会收到很多垃圾邮件,放置某种验证码验证代码并清理/验证整个用户输入文本,即来自输入字段的每个文本你的形式。

对于电子邮件:

$email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL);

姓名和评论:

$name = filter_var($_POST['name'], FILTER_SANITIZE_STRING);
$comments = filter_var(strip_tags($_POST['comments']), FILTER_SANITIZE_STRING);
于 2012-09-26T07:53:22.773 回答
0

将表单数据提交到不同的脚本时,请确保(验证输入和)发送电子邮件的代码就在该文件中。

否则,您的 URL/message-sent可能会重写为完全不同的脚本,并且一旦单击提交按钮,则根本不涉及带有上述代码的脚本。

那有没有抓住你?如果我的措辞难以理解或者我的描述对你来说不是很清楚,请随意询问

于 2012-09-26T08:04:17.410 回答