2012-03-16 17 views
-1

PHPを使用してformのHTML形式で送信できる電子メールアドレスの拡張子を制限するにはどうすればよいですか?たとえば、すべてのユーザーが@gmail.com電子メールアドレスを入力するようにしたいとします。 HTMLテキストフォームで送信された電子メールの拡張子を制限する


編集:投稿されたメールアドレスの最後の10文字(正しいメールアドレスの拡張子が含まれている場合は @gmail.com)を返すために ifステートメントと substr()ステートメントを使用してみました。ただし、これはおそらく最も効率的で安全な方法ではありません。誰もがこのタスクを解決するための他の、より安全なアプローチを知っていますか?

例:

if(isset($_POST['submit'])) { 
    $email = trim(strtolower($_POST['email'])); 

    if(substr($email, -10) != '@gmail.com') { 
     //show error message here 
    } else { 
     //continue script 
    } 
+4

あなたが何をしようとしなかった -

/*Say the user entered [email protected]*/ $website = explode("@", $_POST['email']); /*$website is now => array(0 => "email_add", 1 => "gmail.com")*/ $website = end($website); // Grab the last element of the array if($website != "gmail.com") {// Show some error here} /*SUBSTITUTE METHOD: A Shorter method that elias suggested in a comment below*/ if (!stristr($_POST['email'],'@gmail.com')) {// Show some error here} 

PS:このようなものでなければなりません? – Cfreak

答えて

2

彼らはあなたが@gmailする文字列の最後を制限するために正規表現を差し込むことができる「パターン」属性を受け入れるよう5つの要素は、あなたがこれをやらせるべきで新しいHTML。 com。 javacsript/jqueryで同じことを行い、送信時にスクリプトに対してフォームを検証することができます。 \ @ gmail.com $はそれを行うべきです。

1

いいえ、whiterainbowはいいですが、簡単にバイパスすることができますクライアント側の検証、良いです。あなたはそれを行うだけでなく、フォーム検証PHPスクリプトでそれをチェックする必要があります。配列の最後の要素を取得し、爆発する短い方法があり、私の頭のカントーそれを覚えてカント... Googleのそれ

+1

は動作しません: '$ website [count [$ website]];'に構文エラーがあります。 '$ website [count($ website)]'でなければなりません。countは2を返します。 '$ website [count($ website)-1]'または '$ website [1] '。 "$ website = end($ website);または' array_pop($ website) 'です。もっと簡単な解決策は 'if(stristr($ _ POST ['email']、 '@ gmail.com'))' –

+0

です。ありがとうございました。エライアスは答えを編集するつもりです。 –

関連する問題