شاید برای شما جالب باشد که در RSForm می توانیم از ارسال فیلد ایمیل تکراری جلوگیری کنیم و اجازه ندهیم یک فرم با 1 ایمیل تکراری وارد سیستم شود
برای انجام اینکار شما 2 روش می توانید این کار را انجام دهید
در روش اول کار بسیار آسان است و فقط کافی است گزینه ویرایش فیلد ایمیل را کلیک کنید و در تب اعتبارسنجی » گزینه نوع معتبر سازی را روی "فیلد منحصر به فرد" و یا گزینه ی "فیلد منحصر به فرد به ازای هر کاربر" تنظیم کنید :
از این روش می تونید برای هر فیلدی استفاده کنید چون فقط مختص به ایمیل نیست؛ فیلدهایی مثل کد ملی ، شماره تلفن همراه و ...
در این روش که باید کمی تغییرات PHP اعمال کنیم ، صرفا برای ایمیل می باشد و نمی توان برای فیلدهای دیگر هم استفاده کرد
قبل از انجام این کار شما باید آموزش قوانین اعتبار سنجی های سفارشی با PHP را مطالعه کنید و آن را کاملا مسلط شوید تا بتوانید ادامه این آموزش را کاملا درک کنید
تابع زیر را درون کلاس RSFormProCustomValidation که درون فایل customvalidation.php قرار دارد ، کپی کنید :
public static function uniqueEmail($value, $extra = null, $data = null) {
// The following will check if the current value is indeed an email
if (!self::email($value, $extra, $data)) {
return false;
}
// The following will check if the current value is unique (never submitted within that form)
return self::uniquefield($value, $extra, $data);
}
سپس درون ویرایش فیلد ایمیل » تب اعتبار سنجی » گزینه نوع معتبر سازی می تونید گزینه uniqueEmail رو انتخاب کنید تا سیستم به درستی کار کند.
نکته ای که باید بهتون بگم اینکه من در همین مطلب و در خط های بالاتر گفتم که این روش فقط برای فیلد ایمیل هست ؛ اما بهتره بدونید که تابع self::uniquefield صرفا برای ایمیل نیست و برای هر فیلد دیگری استفاده میشه ما تیکه کدی که این تابع رو برای ایمیل اختصاصی میکنه تا نشه از فیلدهای دیگه ازش استفاده کرد ، تابع self::email هست که داره ساختار ایمیل رو بررسی می کنه تا اگر ساختار استانداردی نداشت کلا اجازه ثبت فرم رو نده
دقت کنید که در اعتبار سنجی PHP باید مقدار TRUE یا FALSE برگردانده شود
TRUE به معنای اجازه برای ثبت فرم و FALSE برای عدم اجازه ثبت فرم می باشد
تیم آموزشی جومینا/