صفحه اصلیدرباره ماخدماتفن آوري هانمونه كارهامشتریانمقالاتتماس با ما
 
 
گروه نرم افزاري وبيليكس > مقالات > تعيين اعتبار فرم قبل از ارسال
تعيين اعتبار فرم قبل از ارسال
جاوا اسكريپت

امروزه صفحات حاوي فرم را در بسياري از سايت ها (حداقل براي ارسال پست الكترونيك براي مديريت سايت) مي توان مشاهده نمود. بسياري از اين فرمها داراي قوانيني در ارتباط با اطلاعات ورودي مي باشند (براي مثال لزوم وارد كردن بعضي از اطلاعات و يا اطمينان از صحيح بودن فرمت پست الكترونيكي و ...). براي تعيين اعتبار اطلاعات وارد شده دو راه حل كلي وجود دارد.
١) استفاده از زبانهاي Server Side مانند PHP يا ASP
٢) استفاده از زبانهاي Client Side مانند JavaScript

تفاوت اصلي در اين دو حالت در زمان تعيين اعتبار فرم مي باشد به اين معنا كه در صورت استفاده از زبانهاي Server Side ابتدا فرم به صفحه مقصد (كه در action مشخص شده است) ارسال خواهد شد و بعد از آن اعتبار اطلاعات وارد شده مورد بررسي قرار مي گيرد. اما در صورتي كه براي اين كار از زبانهاي Client Side استفاده شود، تعيين اعتبار قبل از ارسال اطلاعات و بر روي كامپيوتر شخص بازديد كننده (Client) انجام خواهد شد و در صورت درستي اطلاعات فرم به صفحه مقصد ارسال خواهد شد. بديهي است كه تعيين اعتبار بر روي كامپيوتر Client (و با استفاده از زبانهاي Client Side) از بسياري از جهات (بخصوص: صرفه جويي در وقت) بسيار بهتر از استفاده از زبانهاي Client Side مي باشد. البته به اين نكته نيز بايد توجه داشت كه انجام اين عمل با استفاده از زبانهاي Client Side همواره ميسر نيست براي مثال در صورتي كه در سيستم ثبت نام كاربران بخواهيم از وجود و يا عدم وجود نام كاربري (Username) انتخاب شده توسط شخصي (در هنگان ثبت نام) اطلاع حاصل كنيم، مجبور خواهيم بود تا با استفاده از زبانهاي Server Side و اتصال به بانك اطلاعاتي مربوط به كاربران اين كار را انجام دهيم. اما در همين حالت نيز بعضي از موارد در تعيين اعتبار فرم را مي توان با استفاده از زبانهاي Client Side انجام داد. (براي مثال، وارد شدن نام كاربري و كلمه عبور)

در اين مقاله مي خواهيم به نحوه انجام اين كار از طريق زبانهاي Client Side بپردازيم. قبل از توضيح در ارتباط با چگونگي انجام اين كار به مثال زير توجه نماييد.
در اين مثال فرض بر آن است كه كلمه عبور و تاييد آن از كاربر توسط يك فرم گرفته مي شود، فرض مي كنيم كه براي تعيين اعتبار اطلاعات وارد شده (كلمه عبور و تاييد آن حتما بايد وارد شوند و مقدار آنها بايد با هم برابر باشد) از يك زبان Client Side مانند JavaScript استفاده مي شود.

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>
<title>Checking form with JavaScript </title>
<script language="javascript" type="text/javascript">
function CheckForm(formID){
//Checking for password value
if (formID.password.value == "") {
alert("please enter password");
formID.password.focus();
return false;
}

//Checking for confirm value
if (formID.confirm.value == "") {
alert("please enter password confirm");
formID.confirm.focus();
return false;
}


//Checking for password and confirm (must be equal)
if(formID.password.value != formID.confirm.value) {
alert("password & confrim did not match");
formID.password.focus();
return false;
}

return true
}
</script>
<style type="text/css">
<!--
body, table, form, input { font-family: verdana, arial; font-size: 12px; }
-->
</style>
</head>

<body>
<center>
<form method="post" action="destination.php" onsubmit="return CheckForm(this)">
<table border="0" cellpadding="2" cellspacing="0" width="300px">
<tr><td align="right" width="20%">Password: </td><td align="left" width="80%"><input type="password" name="password"></td></tr>
<tr><td align="right" width="20%">Confirm: </td><td align="left" width="80%"><input type="password" name="confirm"></td></tr>
<tr><td align="center" colspan="2"><input type="submit" value="SUBMIT"></td></tr>
</table>
</form>
</center>
</body>

</html>



با كمي دقت در اين مثال مي توان متوجه اصول انجام اين كار در صفحه فوق شد. يك تابع (با نام CheckForm در اين مثال) وجود دارد كه ورودي آن يك Form Object مي باشد و خروجي آن نيز به صورت true (اطلاعات وارد شده معتبر است) يا false مي باشد. اين تابع در event ثبت فرم (onsubmit) با مقدار ورودي this (اشاره به فرمي كه تابع را فراخواني ميكند) فراخواني شده و مقدار بازگشتي آن به فرم ارجائ داده مي شود. در صورتي كه اين مقدار بازگشتي true باشد، ارسال فرم به صفحه مقصد (در اين مثال: destination.php) ادامه پيدا مي كند و در غير اين صورت عمل ارسال انجام نمي شود.

بنابر اين به طور كلي مي توان نكات مهمي كه در تعيين اعتبار فرم تاثير دارند را به صورت زير بيان نمود:
۱) عمل تاييد بوسيله يك تابع با مقدار ورودي فرم مورد نظر و مقدار خروجي true يا false انجام مي گيرد. (در مثال فوق، بخش اول تابع وارد شدن مقداري براي كلمه عبور را بررسي ميكند. در بخش دوم همين عمل در ارتباط با تاييد كلمه عبور انجام مي گيرد و در بخش نهايي برابر بودن مقادير وارد شده مورد بررسي قرار مي گيرد.)
۲) مقدار بازگشتي تابع اصلي (با استفاده از return) به فرم ارجاع مي شود. در غير اين صورت (عدم استفاده از retuen) عمل ارسال فرم به صفحه مقصد در هر حالتي انجام مي گيرد.
۳) تمامي اجزائ دورن فرم در تابع اصلي با فرمت {نام جزئ}.{نام فرم(ورودي تابع)} قابل دسترسي مي باشند. (به عبارت formID.password.value در تابع مثال قبل توجه نماييد.)

 



 
 
© 2012 - WEBILIX websolutions