ひとつのページ内でメールを送信したい
wordpressでお問い合わせフォームをプラグインなしで実装したいと思い自作しています。しかし、送信しても別のページに飛んでしまい、メールが送信されません。action属性の値を空欄にしておけば同じページに飛ぶはずなのに飛んでくれず、ちがうページに飛ぶのはなぜだかわからず、ご質問させてください。
該当のソースコード
php
1<?php 2 3/* 4Template Name: contact 5*/ 6 7if(!empty($_POST)){ 8 $pattern = "^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:.[a-zA-Z0-9-]+)*$"; 9 $confirm = array( 10 1=>'名前が入力されていません。', 11 2=>'メールアドレスが正しくありません。', 12 3=>'内容が入力されていません。', 13 4=>'文字数は70文字以内です。', 14 5=>'メッセージが送信されました。' 15 ); 16 $error = array(); 17 $name = htmlspecialchars($_POST["name"]); 18 $email = htmlspecialchars($_POST["email"]); 19 $message = htmlspecialchars($_POST["message"]); 20 21 if ($name = "") { 22 $error[1] = $confirm[1]; 23 } 24 if (preg_match($pattern, $email)) { 25 $error[2] = $confirm[2]; 26 } 27 if ($message = "") { 28 $error[3] = $confirm[3]; 29 } 30 if (mb_strlen($message) > 70){ 31 $error[4] = $confirm[4]; 32 } 33 if (count($error) === 0) { //修正箇所です。(元のコードif ($error=array()) {) 34 mail( 'ここには僕のメールアドレスを入力しています。' , $email , $message , 'From:' . $email . '名前' . $name ); 35 $ok = $confirm[5]; 36 } 37 38} 39 40?> 41 42 <form id="mailform" action="" method="post"> 43 <div> 44 <label for="name">名前<span>(必須)</span></label> 45 <input type="text" name="name" id="name" required /> 46 </div> 47 <?php if(isset($error[1])): ?> 48 <p class="error"><?php echo $error[1]; ?></p> 49 <?php endif; ?> 50 <div> 51 <label for="mail">メールアドレス<span>(必須)</span></label> 52 <input ="email" name="email" id="mail" required /> 53 </div> 54 <?php if(isset($error[2])): ?> 55 <p class="error"><?php echo $error[2]; ?></p> 56 <?php endif; ?> 57 <div> 58 <label for="message">内容(70文字以内)</label> 59 <textarea name="message" id="message" rows="12" required></textarea> 60 </div> 61 <?php if(isset($error[3])): ?> 62 <p class="error"><?php echo $error[3]; ?></p> 63 <?php endif; ?> 64 <?php if(isset($error[4])): ?> 65 <p class="error"><?php echo $error[4]; ?></p> 66 <?php endif; ?> 67 <p class="contact-submit"> 68 <input type="submit" value="送信 »" id="submit"> 69 <input id="referrer" type="hidden" name="referrer" /> 70 </p> 71 <?php if(isset($ok)): ?> 72 <p class="ok">メッセージが送信されました。</p> 73 <?php endif; ?> 74 </form>
試したこと
acton属性の値を表示しているページのリンクにしましたが、同じ結果でした。
コードエディターはatomでxamppのローカル環境で開発しています。
回答4件
あなたの回答
tips
プレビュー