2008年06月09日

PHP:登録フォーム等での入力チェック

ユーザ登録フォーム等の入力チェックについてですが、たまにJavascriptだけのチェックしか実装していないサイトをみかけます。

Javascriptを切って何も入力せずに登録ボタンを押したらそのまま登録前の確認ページへ進んでしまったりするんです。

これはいくらなんでもまずいだろうと(笑)

JavascriptがOnになっている人は画面遷移する前にJavascriptで止めるべきでしょうし、Offの人はサーバサイドでチェックをかけて止め、JavascriptをOnにしてもらうよう促すなどの配慮が必要だと思います。

で、今回はユーザ登録などの送信フォームでよく使うPHPでのチェック方法を紹介します。

以下の3つになります。

・メールアドレスチェック
・入力禁止文字チェック
・半角英数チェック


チェックの種類の中でもかなりよく使うチェックだと思います。





【メールアドレスチェック】


ネットの文献には色んなメルアドチェックがありますが、どうもいまいちスルーしてしまったりするものが多いです。

色々使ってきましたが今は以下のものを使っています。
なかなか調子がいいです。



// 正しい書式のメールアドレスの場合は、1 を返します
function valid_mail($email)
{
$rs = ereg("^[0-9,a-z,A-Z,_,\.,-]+@[0-9,A-Z,a-z][0-9,a-z,A-Z,_,\.,-]+\.(af|al|dz|as|ad|ao|ai|aq|ag|ar|am|aw|ac|au|at|az|bh|bd|bb|by|bj|bm|bt|bo|ba|bw|br|io|bn|bg|bf|bi|kh|cm|ca|cv|cf|td|gg|je|cl|cn|cx|cc|co|km|cg|cd|ck|cr|ci|hr|cu|cy|cz|dk|dj|dm|do|tp|ec|eg|sv|gq|er|ee|et|fk|fo|fj|fi|fr|gf|pf|tf|fx|ga|gm|ge|de|gh|gi|gd|gp|gu|gt|gn|gw|gy|ht|hm|hn|hk|hu|is|in|id|ir|iq|ie|im|il|it|jm|jo|kz|ke|ki|kp|kr|kw|kg|la|lv|lb|ls|lr|ly|li|lt|lu|mo|mk|mg|mw|my|mv|ml|mt|mh|mq|mr|mu|yt|mx|fm|md|mc|mn|ms|ma|mz|mm|na|nr|np|nl|an|nc|nz|ni|ne|ng|nu|nf|mp|no|om|pk|pw|pa|pg|py|pe|ph|pn|pl|pt|pr|qa|re|ro|ru|rw|kn|lc|vc|ws|sm|st|sa|sn|sc|sl|sg|sk|si|sb|so|za|gs|es|lk|sh|pm|sd|sr|sj|sz|se|ch|sy|tw|tj|tz|th|bs|ky|tg|tk|to|tt|tn|tr|tm|tc|tv|ug|ua|ae|uk|us|um|uy|uz|vu|va|ve|vn|vg|vi|wf|eh|ye|yu|zm|zw|com|net|org|gov|edu|int|mil|biz|info|name|pro|jp)$",$email);
return $rs;
}




【入力禁止文字チェック】

テキストボックスやテキストエリア等で入力されるとあまり好ましくない記号について警告を出します。

画面出力時のhtmlspecialcharsやDB登録時のaddslashes等を適切に行えばそれほど怖くはないのですが、万が一に備えて、本来入力されるはずのない記号等を最初から禁止してしまう時に使います。

例として「< > & " '」を禁止する場合です。
禁止文字があればfalse、なければtrueが返ります。



//禁止文字「< > & " '」
function NGCharCheck($str)
{
//スペースは対象外
if (!strlen($str))
{
return true;
}

if(ereg("[<>\"\'&]", $str))
{
return false;
}
else
{
return true;
}
}




【半角英数チェック】

電話番号やパスワードなどに使えます。
半角ならtrue、全角ならfalseが返ります。



function hanCheck($str)
{
//magic_quotes_gpcがONの時は、エスケープを解除する
if (get_magic_quotes_gpc())
{
$str = stripslashes($str);
}

if (strlen($str) == mb_strlen($str))
{
return true;
}
else
{
return false;
}
}




今回は代表的なチェックを紹介しました。

PHPのチェックだけでもOKですが、せっかくJavascriptがONになっている人にわざわざ画面遷移させるのはレスポンスの面でストレスを与えてしまうので、Javascriptでのチェックも入れてあげたほうが親切です。

何かしら参考になりましたらクリックをよろしくお願いします
にほんブログ村 IT技術ブログへ   人気ブログランキング    
タグ:PHP
posted by トモヒロ | Comment(7) | TrackBack(0) | PHP
この記事へのコメント
メールチェックは勉強になりました!
自分の関数は、長ったらしくチェックし
てました・・・。@が一つでみたいな^^
あと、ソースが見やすく色分けされてま
すが、どんな方法を使ってるんでしょうか?
Javascriptは、window.openぐらいしか分からないので今度勉強してみます。
状況にもよりますが、半角全角はあらかじめ変換してあげてチェックしたりもしています。

Posted by 焼酎Rock at 2008年06月10日
>> 焼酎Rockさん

メールチェックはいろんなやり方がありますもんね。


ソースの色分けはgoogle-code-prettifyというものを使っています。
↓こちらの記事で書いています。
http://webtech.seesaa.net/article/95303789.html

WordPressやMovable Typeを使われているのであれば、もっとよさそうなCodePressというのが使えるかもしれないです。
↓こちらの記事で書いています。
http://webtech.seesaa.net/article/95285823.html
Posted by トモヒロ at 2008年06月10日
ありがとうございます^^
今度使って見ます!

Posted by 焼酎Rock at 2008年06月11日
アンケートに答えてくれて、ありがとうございました☆

うわぁ〜〜専門的なブログですねww

ゆう♂も勉強しないとな♪

では、応援『ポチ』っと☆〜〜
Posted by ゆう♂ at 2008年06月16日
>> ゆう♂さん

自称
「コメントしにくいブログ(http://webtech.seesaa.net/article/99389282.html)」
にコメントありがとうございますw

また笑わせてもらいに行きますね^^



Posted by トモヒロ at 2008年06月16日
先日はサイトに来ていただき、コメントをありがとうございました。本日見させていただいてレベルの高い内容で非常に参考になります。今後ともよろしくお願いします。ありがとうございました。
Posted by metaboy at 2008年07月18日
>> metaboyさん

訪問&コメントありがとうございます。
こちらこそこれからもよろしくお願いします m(_ _)m
Posted by トモヒロ at 2008年07月18日
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。