jQuery・Javascript jQueryを使った小技やAjax非同期通信などについて

登録フォームにアカウント重複を確認するボタンを付ける

2014年3月11日
この記事は掲載から1956日経過しています。
情報が古い可能性が有りますのでご了承下さい

会員登録などを行うときに、使いたいアカウントが使用済かどうかを事前に確認出来るボタンがある登録フォームが有りますが、アレです。

サンプル

Javascript

[js]
$(document).ready(function(){

//エンター制御はお好みで
$("#form").keypress(function(ev) {
if ((ev.which && ev.which === 13) || (ev.keyCode && ev.keyCode === 13)) {
return false;
}
});

//重複確認ボタンを押したら
//$("#button").click(function(){ //これペケ
$(document).on(‘click’,’#button’,function(e){ // クリックで実行 2014-07-24 修正

var val = $("#account").val(); //入力した値を取得

$.ajax({
type: "POST",
url: "07/07.php",
data: "account="+val,
beforeSend: function(){
$("#message").html(‘<img src="../loader.gif" />’);
},
success: function(xml){
$(xml).find("item").each(function(){
var check = $(this).find("check").text();
if( check == 1 ){
$("#message").html(‘使用済です’).css({"color":"red"});
} else {
$("#message").html(‘使用出来ます’).css({"color":"blue"});
}
});
}
});
});
});
[/js]

ボタンを押したらテキストフォームの値をPHPに渡し、既存かどうかを確認したコールバックを受け取るって感じです。

PHP

[php]
<?php
header("Content-type: application/xml");
echo ‘<?xml version="1.0" encoding="UTF-8" ?> ‘ . "\n";

//受け取った変数が使用済かどうかを確認
//実際はDBなどへ問い合わせる事が多いと思う
$account = htmlspecialchars($_POST[‘account’] , ENT_QUOTES , "UTF-8"); //特殊文字を HTML エンティティに変換する
$array = array(‘sample’,’hogehoge’);
$hit = array_search($account, $array);
if( $hit !== false ) :
$check = true; //使用済ならTRUE
endif;

echo ‘<rss>’."\n";
echo ‘ <item xml:space="preserve">’."\n";
echo ‘ <check>’.$check.'</check>’."\n";
echo ‘ </item>’."\n";
echo ‘</rss>’."\n";
[/php]

これが付いていると確かに便利ですが、簡単にチェック出来てしまうので、使用済みと出たアカウントは存在している理由で・・つまりログインアカウントがバレるって事で、これって実際どうなんだろう?といつも思います。実際は認証したあとに、誕生日認証とか秘密のキーワード認証とか噛ませるのですが、それにしてもPOSTした時にもう一度確認が必要ですし、結局同じじゃ・・と思ったり。

 
  • このエントリーをはてなブックマークに追加
  • LINEで送る

このカテゴリーのその他の記事

PAGE TOP