私は送信フォームを作成しています。送信をクリックすると、入力を含むメールが管理者に送信されます。電子メール機能はすでに動作していますが、入力フィールドが空であるかどうかを確認する検証が欠けています。私は、入力タグにという属性を追加しました。属性を追加しようとしました。 localhostでは動作しますが、何らかの理由でサーバ上で動作しません。また、フォームを提出したことを知らせるメッセージをポップアップする必要があります。私はここでonclick関数を使用しました。私はそれが動作するかどうかを明確にすることはできません。なぜなら、送信が成功し、空のフィールドがないときにだけメッセージをポップアップする必要があるからです。メールフォームは成功メッセージを送信し、入力が空かどうかを確認します。
ここに私が使用したコードがあります。接続はすでに確立されています。
<!---Mail Starts-->
<?php
if (isset($_POST['submit'])) {
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
$headers .= 'From: Client<' . $_POST['mail'] . '>' . "\r\n";
$headers .= 'Reply-To: ' . $_POST['mail'] . "\r\n";
$headers .= 'X-Mailer: PHP/' . phpversion() . "\r\n";
$to = '[email protected]';
$subject = "Send Us A Smile - ".$_POST['name'];
$message = "
<html>
<body>
<div style='font-family:arial;width:100%;padding:5px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;'>
<div style='margin:0 auto;max-width:500px;padding:5px;text-align:center;background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#741C57), to(#360d29));background: -moz-linear-gradient(90deg, #360d29, #741C57);color:#fff;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:15px;'>
</div>
<div style='text-align:center;padding:5px;color:#666;background-color:rgba(255,255,240,1);max-width:460px;margin:0 auto; border:2px solid #000;border-radius:0 0 5px 5px;'>
<h2 style='font-weight:200;line-height:.3em;'>
Send Us A Smile <br>
</h2>
<p style='text-align:left;'>
Name : " . $_POST['name'] . "<br>
Email : " . $_POST['mail'] . "<br>
Subject : " . $_POST['subject'] . "<br>
Message : " . $_POST['message'] . "
</p>
</div>
</div>
</body>
</html>
";
mail($to,$subject,$message,$headers);
}
?>
<!---Mail Ends-->
<div class="full" id="contactForm">
<div>
<form name ="contact" action="" method="POST">
<input type="hidden" name="recipient" value="[email protected]">
<input type="hidden" name="subject" value="Webmail">
<div class="eight-eight">
<label class="two-eight" for="name">Name</label>
<input class="six-eight" type="text" name="name" placeholder="Your name" required oninvalid="this.setCustomValidity('Please enter your Name here')" oninput="setCustomValidity('')"/>
</div>
<div class="eight-eight">
<label class="two-eight" for="name">Subject</label>
<select id="subject" name="subject">
<option value="">Choose a service..</option>
<option value="">Option 1..</option>
<option value="">Option 2..</option>
<option value="others">Others</option>
</select>
</div>
<div class="eight-eight">
<label class="two-eight" for="name">Message</label>
<textarea class="six-eight" placeholder="Your message" name="message" required oninvalid="this.setCustomValidity('May we know what your message is?')" oninput="setCustomValidity('')"/></textarea>
</div>
<div class="eight-eight">
<label class="two-eight" for="name">Email</label>
<input class="six-eight" type="mail" name="mail" placeholder="Your email address" required oninvalid="this.setCustomValidity('Please enter your Email Address here')" oninput="setCustomValidity('')"/>
</div>
<input type="submit" name = "submit" value="Send" onclick="hgsubmit()">
<input type="hidden" name="redirect" value="http://www.email.com">
</form>
</div>
</div>
別の方法がありますか?
確かにこれを行う方法はありますが、あなたのコーディングにはいくつかのコーディングが必要になります。検証のために、クライアント側の検証を暗黙的に信頼することはできません。値が送信されたかどうかを確認するサーバー側のコードを含めることができます。たとえば、 'isset($ _ POST ['submit'])'をチェックして、フォームが投稿されたかどうかを確認します。同様のチェックを実行して、特定のデータ要素がフォームに投稿されているかどうかを確認したり、投稿された文字列の長さを確認したりできます。ロジックを作成してチェックを行い、メッセージを送信するかどうかを指定します。 – David