1

PHP は初めてですが、新たな進歩を遂げています。ユーザーが送信した後に電子メールを送信する連絡フォームがあります。今、私はこのフォームをより良くしたいと考えています。悪い文字や電子メールを破壊する可能性のあるものを取り除くことです。メールは私が読むので、技術的にはすべてのスパムを閲覧できますが、そうしたくありません。文書化の目的で、クリーンな電子メールが届くことを望みます。

$_POST 配列を使用しています。お問い合わせフォームの HTML は次のとおりです。

<form class="form" method="post" action="contact.php">

<p class="name">
  <input type="text" name="name" id="name" />
  <label for="name">Name</label>
</p>

<p class="email">
  <input type="text" name="email" id="email" />
  <label for="email">E-mail</label>
</p>

<p class="web">
  <input type="text" name="web" id="web" />
  <label for="web">Website</label>
</p>

<p class="telephone">
  <input type="text" name="telephone" id="telephone" />
  <label for="telephone">Telephone</label>
</p>

<p class="question">Preferred Contact Method</p>
  <p id="preferred_question">
    <input type="radio" name="contact_option" class="telephone_opt" value="Telephone" />
    <label for="telephone_opt">Telephone</label><br />

    <input type="radio" name="contact_option" class="email_opt" value="Email" />
    <label for="email_opt">Email</label></p>

<p class="question">Describe what you need..</p>
  <p class="text">
    <textarea name="text"></textarea>
</p>

<p class="submit">
  <input type="submit" value="Send" />
</p>

</form>

ここに私のcontact.php(フォームアクションファイル)があります

<?php
$msg = "Name: " . $_POST['name'] . "<br />";
$msg .= "Email: " . $_POST['email'] . "<br />";
$msg .= "Website: " . $_POST['web'] . "<br />";
$msg .= "Telephone: " . $_POST['telephone'] . "<br />";
$msg .= "Preferred Contact Method: " . $_POST['contact_option'] . "<br />";
$msg .= "Customer Needs: " . $_POST['text'];

$recipient = "support@mysite.com";
$subject = "Contact Has Been Made..";
$mailheaders = "MIME-Version: 1.0" . "\r\n";
$mailheaders .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";
$mailheaders .= "From: <support@mysite.com>" . "\r\n";

mail($recipient, $subject, $msg, $mailheaders);
echo "Thank You!";
?>
4

6 に答える 6

0

確かに、この簡単な小さなチュートリアルをチェックしてください。

http://www.stemkoski.com/php-remove-non-ascii-characters-from-a-string/

これを変更して、必要な文字を置き換えます。正直なところ、私の能力の限り、これはあなたが求めていると思うことに答えます. しかし、そうでない場合は、Google 検索を行ってください。この質問は非常に基本的なものです。

フィールドの検証が必要な場合 (具体的にフォーマットされたデータのみを受け入れるようにするため)、それをすばやく検索するだけで、優れたリソースが見つかります。まさに必要なものかもしれないチュートリアル全体を次に示します

これらの2つのソリューションは、おそらくカバーされています:)

于 2013-10-03T19:23:28.677 に答える
0

すべての値のブランケット フィルターに加えて、入力の検証を探しているようです。これは、電子メール検証の関数です。これは正規表現を使用します。すべての要件に対応するコードを書くつもりはありませんが、これを使用して開始できます。

function  checkEmail($email) {
    if (!preg_match('/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/' , $email)) {
        return false;
    }
    return true;
}
于 2013-10-03T19:29:28.920 に答える
0

皆様のお話をたくさん取り入れて、皆様の回答をまとめてみました。

これが私が行ったものです:

<?php
// Sanitize the data so its nice and clean..
function sanitize($data) {
$data = strip_tags(trim($data));
$search = array('/[^A-Za-z0-9\. -\!\?\(\)\<\>\@]/');
$data = preg_replace($search, '', $data);
return $data;
}

$msg = "Name: " . sanitize($_POST['name']) . "<br />";
$msg .= "Email: " . sanitize($_POST['email']) . "<br />";
$msg .= "Website: " . sanitize($_POST['web']) . "<br />";
$msg .= "Telephone: " . sanitize($_POST['telephone']) . "<br />";
$msg .= "Preferred Contact Method: " . sanitize($_POST['contact_option']) . "<br />";
$msg .= "Customer Needs: " . sanitize($_POST['text']);

$recipient = "support@mywebsite.com";
$subject = "Contact Has Been Made..";
$mailheaders = "MIME-Version: 1.0" . "\r\n";
$mailheaders .= "Content-type:text/html;charset=UTF-8" . "\r\n";
$mailheaders .= "From: <support@mywebsite.com>" . "\r\n";

// Mail the message..
mail($recipient, $subject, $msg, $mailheaders);
echo "Thank you for your email!<br/><br/>";
?>
于 2013-10-05T00:30:35.057 に答える