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

別の考え:大量のスパムを受信し、ある種のCAPTCHA検証コードを配置し、ユーザー入力テキスト全体、つまり入力フィールドからのすべてのテキストをサニタイズ/検証するため、ユーザー入力をフィルタリングすることは常に良い考えです。あなたのフォームの。

メールの場合:

$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 に答える