現在、JavascriptとPHPでWebアプリを制作しています。
データチェックに関して質問します。
サーバーとのやり取りはすべてajaxを使用しています。Formでサーバー側に
送るようなことはしていません。
データのチェックと登録処理は以下のJavascript です。
以下のコードにあるように promise.then で checkDate()とinsertData()を
連結処理しています。
データのチェックはサーバー側のPHPで行っており、インサートする直前に
行っているわけです。
サーバーとの通信はAjaxのみですので、もしブラウザでjavascriptを不可に
していたら、何も処理することができません。
WEBアプリではローカル側とサーバー側の両方でデータチェックを行うべき、
という話をよく耳にしますが、上記のやり方では一度サーバー側で行うだけ
ですが、この方法はセキュリティの観点から問題ないでしょうか。
よろしくお願い致します。
javascript
1// 「登録」ボタンクリック 2// 2つのAjaxの連結 checkData() → insertData() 3function doPersonRegist(){ 4 5 if(checkData()){ 6 7 // データチェックcheckData() の結果を変数に 8 var promise = checkData(); 9 10 // resolve()の引数で渡した値は、then()の引数で受け取れる 11 promise.then( function(result){ 12 13 // データチェックの結果が OK だったら 14 if (result == "OK"){ 15 // インサート処理 16 insertData() ; 17 18 // 重複チェックの結果が NG だったら 19 }else{ 20 // アラート表示 21 alert(result); 22 return false; 23 } 24 }); 25 }else{ 26 // チェックが通らなかったときは→終了 27 return false; 28 } 29} 30
javascript
1// データチェック 2function checkData(){ 3 var dfdDc = $.Deferred(); 4 5 6 const data = "personLastName=" + $.trim($('#personLastName').val()) 7 + "&personFirstName=" + $.trim($('#personFirstName').val()) 8 + "&personMail=" + $.trim($('#personMail').val()) 9 + "&personPassword=" + $.trim($('#personPassword').val()) 10 + "&confirmPassword=" + $.trim($('#confirmPassword').val()) 11 + "&personType=" + $('#personType').val() 12 + "&personTelNo_1=" + $.trim($('#personTelNo_1').val()) 13 + "&personTelNo_2=" + $.trim($('#personTelNo_2').val()) 14 + "&personTelNo_3=" + $.trim($('#personTelNo_3').val()) 15 + "&personZipCode_1=" + $.trim($('#personZipCode_1').val()) 16 + "&personZipCode_2=" + $.trim($('#personZipCode_2').val()) 17 + "&personAddressName=" + $.trim($('#personAddressName').val()) 18 + "&personRole=" + $.trim($('#personRole').val()) 19 + "&personSkillLevel=" + $('#personSkillLevel').val() 20 + "&personSelfIntroduction=" + $.trim($('#personSelfIntroduction').val()); 21 22 $.ajax({ 23 type: "POST", 24 url: "../code/validation/CheckPersonTemporary.php", 25 data: data, 26 dataType: 'text', 27 }) 28 // 通信成功時の処理 29 .done(function(response) { 30 31 // チェックの結果を resolve の引数で渡す 32 dfdDc .resolve(response); 33 34 // 通信失敗時の処理 35 }).fail(function() { 36 alert('データチェック検索ができませんでした。管理者にご連絡下さい。'); 37 }); 38 return dfdDc .promise(); 39} 40 41
回答3件
あなたの回答
tips
プレビュー