web-dev-qa-db-ja.com

電子メールフィールドのサニタイズと検証

電子メールフィールドを検証するためにis_email()を使うべきですか? WPで。 emailフィールドをウィジェットに入れました。私は本当にいくつかの助けに感謝します。

function update($new_instance, $old_instance) {
     $instance = $old_instance;
     $instance['email'] = is_email($new_instance['email']);

    return $instance;
     }

そして

<p>
    <label for="<?php echo  $this->get_field_id('email'); ?>">
     <?php _e('Email'); ?>  </label>
     <input class="widefat" id="<?php echo $this->get_field_id('email'); ?>" name="<?php echo $this->get_field_name('email'); ?>" type="email" value="<?php echo $email; ?> " />
    </p>
    <?php
    }

これにはis_email()の使用は正しいですか?ありがとうございました!

1
mattnewbie

ドキュメントによると、 is_email() は電子メールを検証するために使用され、電子メールが有効な場合は電子メールを返し、無効な場合はfalseを返します。だからそれを正しく使っています。

私があなたのコードで見ることができる唯一のことは、電子メールが有効でないならば、あなたはFALSEのブール値にデータを設定しているということです。

 $instance['email'] = is_email($new_instance['email']);
 //with a bad email address, this will be the same as writing
 $instance['email'] = false;

ウィジェットで何をしているかによっては、予期しない結果が生じる可能性があります。

私は代わりに次のようなことをするでしょう

$instance['email'] = ( is_email($new_instance['email']) ) ? $new_instance['email'] : '';

これは、is_email()呼び出しがfalseを返す場合に、$ instance ['email']をブール値ではなく空の文字列に設定していることを確認するためのものです。

お役に立てれば!

2
Welcher